测试用jwt令牌保护的路由的正确方法是什么?

问题描述

虽然以下测试通过,但我感觉自己做错了。我是否需要在每次需要测试安全路由时登录?我已经尝试在获得初始令牌后传递全局变量,但是传递变量却使我感到非常不直观。在before()调用中传递变量给我带来了与在嵌套的promise中传递/访问全局var相同的问题。

describe('Users',function(done) {
  var testToken = 'my-test-token'
  it('logs in',function(done) { // <= Pass in done callback
    var rT = 'tttttt'
    chai.request(urlroot)
      .post('/login')
      .type('form')
      .send({ email: 'test_user_1@this.com',password: '9999' })
      .end(function(err,res) {
        expect(res).to.have.status(200);
        expect(res.body.token).to.be.a('string');
        done()
      });
  });

  it('gets all users',function(done) { // <= Pass in done callback
    // console.log(urlroot + '/users');
    chai.request(urlroot)
      .post('/login')
      .type('form')
      .send({ email: 'test_user_1@this.com',res) {
        chai.request(urlapi)
          .get('/users?secret_token='+res.body.token)
          .end(function(err,res){
            console.log('data',res.body);
            // expect(res.body).to.be.json()
          })
      });
  });
});

解决方法

我要做的是使用class Base { public virtual void Method() { } } class Derived : Base { public override void Method() { } } 方法来调用我的身份验证服务,以与乘法相同的方式获取令牌,并将其存储到变量中。

类似的东西:

before()

然后,在每个要使用凭据的测试中,请使用var token = ""; before(async () => { //Get token token = "Bearer " + await getToken(); });

.set()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...