Node.js 环回测试:使用用户和角色进行测试的正确方法是什么
我正在尝试使用环回测试编写测试 我有点困惑,几乎没有任何文档 我想测试一个只有角色为“admin”的用户才具有写入权限的模型 现在,如果我这样做:Node.js 环回测试:使用用户和角色进行测试的正确方法是什么,node.js,testing,loopbackjs,Node.js,Testing,Loopbackjs,我正在尝试使用环回测试编写测试 我有点困惑,几乎没有任何文档 我想测试一个只有角色为“admin”的用户才具有写入权限的模型 现在,如果我这样做: lt.describe.whenCalledByUserWithRole(test_config.adminUserCredentials, test_config.adminRole, ....) loopback实际上会在登录之前创建一个具有test\u config.adminUserCredentials的用户! 它为什么这样做 正确的行为
lt.describe.whenCalledByUserWithRole(test_config.adminUserCredentials, test_config.adminRole, ....)
loopback
实际上会在登录之前创建一个具有test\u config.adminUserCredentials
的用户!
它为什么这样做
正确的行为,IMHO,应该是:
- 在测试设置中创建用户
- 在测试设置中创建角色
- 将角色与用户关联
- 运行测试时,仅检查用户是否拥有请求操作的权限
当CalledByUserWithRole
将在该过程中再次尝试创建该用户,而该环回将否认该用户已经存在。如果我没有创建一个用户并在CalledByUserWithRole时调用,那么由于某种原因,该用户将不会与“admin”角色关联(即使名称表明是这样),并且测试失败
如何正确执行此操作?我最终编写了自己的环回测试扩展:
var app = require('../server/server.js');
var _beforeEach = require('loopback-testing').beforeEach;
var _describe = require('loopback-testing').describe;
var helpers = exports = module.exports = {
describe: _describe,
it: _it,
beforeEach: _beforeEach
};
_beforeEach.givenExistingUserWithRole = function(credentials, role, optionalHandler) {
console.log("_beforeEach.givenExistingUserWithRole");
before(function(cb) {
var test = this;
username = credentials.username;
pwd = credentials.password;
loginCredentials = {username:username,password:pwd};
app.models.User.login(loginCredentials, function(err, token) {
if(err) {
console.log("Error logging in test user! " + err);
} else {
console.log("Test user successfully logged in.");
test.loggedInAccessToken = token;
console.log(token);
}
cb();
});
});
afterEach(function(done) {
var test = this;
console.log(this.loggedInAccessToken);
this.loggedInAccessToken.destroy(function(err) {
if(err) return done(err);
test.loggedInAccessToken = undefined;
done();
});
});
}