【问题标题】:loopback-testing: what is the correct way to test with a user and role环回测试:使用用户和角色进行测试的正确方法是什么
【发布时间】:2015-08-31 23:07:59
【问题描述】:

我正在尝试使用环回测试编写测试。

我有点困惑,几乎没有任何文档。

我想测试一个只有具有“admin”角色的用户才具有 WRITE 权限的模型。

现在,如果我这样做:

lt.describe.whenCalledByUserWithRole(test_config.adminUserCredentials, test_config.adminRole, ....)

loopback 实际上会在登录之前使用test_config.adminUserCredentials 创建一个用户! 为什么这样做?

恕我直言,正确的行为应该是:

  • 在测试设置中创建用户
  • 在测试设置中创建角色
  • 将角色与用户关联
  • 运行测试时,仅检查用户是否对请求的操作具有权限

但是使用环回测试似乎很棘手。如果我在设置中创建用户,测试将崩溃,因为whenCalledByUserWithRole 将在此过程中尝试再次创建用户,环回将拒绝说用户已经存在。如果我不创建用户并调用whenCalledByUserWithRole,则由于某种原因(即使名称如此暗示),该用户将不会与“admin”角色相关联,并且测试失败。

我该如何正确地做到这一点?

【问题讨论】:

    标签: node.js testing loopbackjs


    【解决方案1】:

    我最终编写了一个自己的环回测试扩展:

    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();
        }); 
      }); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      相关资源
      最近更新 更多