首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展SuperTest

扩展SuperTest
EN

Stack Overflow用户
提问于 2016-11-19 02:27:19
回答 1查看 506关注 0票数 3

我喜欢使用SuperTest来处理我的身份验证系统,如下所示:

代码语言:javascript
复制
    const request = require('./valid_access_token')(require('supertest'));

    request(app)
    .get('/v1/bots')
    .valid_token()
    .expect('Content-Type', /json/)
    ...

valid_token()将插入一个有效的访问令牌

代码语言:javascript
复制
    module.exports = function (Request) {

      const Token = require('../../../app/v1/models/loader')('token');
      const UserFactory = require('../fixtures/user');

      Request.prototype.valid_token = function()
      {

        return UserFactory.createAsync('user')
        .then(function(user){
            return new Token({username: user.username}).createWeeklyAsync()
            .then(function(userToken){
                this.set("access-token",userToken[0].token);
                return this;
            })       
        })     
       }        
       return Request;
    }     

然而,当我运行它时,我得到了这个错误:

代码语言:javascript
复制
TypeError: request(...).get(...).valid_token is not a function

我尝试了各种不同的方法,都没有成功。

EN

回答 1

Stack Overflow用户

发布于 2017-12-07 03:28:26

所有的功劳都归功于https://github.com/acabreragnz

代码语言:javascript
复制
const request = require('supertest');
const Test = request.Test;

Test.prototype.authenticate = function(user) {
  const {token, xsrfToken} = user.tokens;

  return this
   .set('Authorization', `Bearer ${token}`)
   .set('X-XSRF-TOKEN', xsrfToken);
}

然后在你的测试中

代码语言:javascript
复制
return request(app)
  .post('/user/settings')
  .authenticate(user)
  .send(...)

https://github.com/visionmedia/supertest/issues/381#issuecomment-282198972

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40683781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档