【发布时间】:2015-04-17 12:24:58
【问题描述】:
在我的项目中,我正在使用 node.js 编写 e2e 测试,并且我有一个正在使用的测试火力库。所以我在测试运行中的每个描述之前在节点中创建一个令牌,然后我将它发送到前端(angular.js),然后我使用 authWithCustomToken 函数来验证这个人。
问题是由于某种原因它甚至没有调用该函数,因为我在回调中放置了一个 console.log 语句,并且每次我的代码运行它都会进入 if $location.search 条件但 console.log 没有不打印任何东西。我好像不知道是什么问题。
var Firebase = require('firebase');
var FirebaseTokenGenerator = require('firebase-token-generator');
var rootRef = new Firebase('https://xxxxx');
var data = require('./data_helper.js');
rootRef.child('users').set(data.users[0]);
var credentials = {
nonAdmin: {
uid: 'google',
email: 'xxxx'
},
admin: {
uid: 'google',
email: 'xxxxx'
}
};
var logInAndThen = function(options) {
var secret = 'sdmdfmdsjwdsjwjwwewewe';
var tokenGenerator = new FirebaseTokenGenerator(secret);
var token = tokenGenerator.createToken(credentials[options.userType || 'admin']);
browser.get('/login?token=' + token);
var alertDiv = by.className('alert');
//browser.wait(function(){});
var waitOnFirebase = browser.wait(function() {
return browser.isElementPresent(alertDiv);
});
waitOnFirebase.then(function(data) {
console.log('-------', data);
options.cb(data);
});
};
module.exports = logInAndThen;
--------- 前端角码放入应用程序中。运行---------
if($location.search().token) {
console.log(Refs.root.toString());
Refs.root.authWithCustomToken($location.search().token, function(err, authData) {
console.log(err,authData);
}, {scope: 'email'});
}
如果有人可以帮助我,我将不胜感激
【问题讨论】:
-
你到底是如何“发送到前端”的?
-
我通过将令牌作为查询参数附加到 URL 中来将令牌发送到前端,例如browser.get('/login?token=' + token);
-
那么您是否使用 angular 获取 $location 并从中提取令牌?
-
@tpie 没错。每当页面加载时,它都会检查 url 路径以查看是否有令牌查询参数。如果有,它将使用令牌来验证此人
-
您是否看到它出现在浏览器栏中?你能从这个 $location 获取到 console.log 的角度吗?
标签: angularjs node.js firebase