node.js - 如何使用 Passport/Facebook 策略/验证 Supertest 请求?

标签 node.js express mocha.js passport.js supertest

我使用 Passport.js 进行身份验证(Facebook 策略)并使用 Mocha 和 Supertest 进行测试。我如何使用 Supertest for Facebook 策略创建 session 并发出经过身份验证的请求?

这是用户未登录时的示例测试:

  describe 'when user not logged in', ->

    describe 'POST /api/posts', ->
      it 'respond with 401', (done)->
        request(app).
          post(API.url('posts')).
          set('Accept', 'application/json').
          send(post: data).
          expect('Content-Type', /json/).
          expect(401, done)

谢谢你的建议:D

最佳答案

这里看起来几乎没有什么不同,所以我将我的答案分为两部分。

1) 您首先必须通过 Facebook 创建测试用户。您可以通过以下两种方法之一执行此操作:1) Facebook 的图形 API,或 2) 通过应用程序的角色页面。

2) 与 SuperTest 保持 session 的推荐方法是使用称为 .agent() 的 SuperAgent 方法来保持 session 。 SuperAgent 能做的任何事情,SuperTest 都能做到。看这个Github发布更多信息。

var supertest = require('supertest');
var app = require('../lib/your_app_location');

describe('when user not logged in', function() {
    describe('POST /api/posts', function() {
        var agent1 = supertest.agent(app);

        agent1
            .post(API.url('posts'))
            .set('Accept', 'application/json')
            .send(post: data)
            .(end(function(err, res) {
                should.not.exist(err);
                res.should.have.status(401);
                should.exist(res.headers['set-cookie']);
                done();
            }));
    });
});

VisionMedia Github 上还有其他一些不错的代码片段。请找到他们here .

关于node.js - 如何使用 Passport/Facebook 策略/验证 Supertest 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20640774/

相关文章:

javascript - req.params 调用之间的变化

node.js - Express.js 中的 CookieParser 和 CookieSession 中间件

node.js - 使用 Mocha 读取生态系统变量(单元测试)

node.js - nextTick vs setImmediate,直观解释

node.js - 需要帮助修复我的 nginx 服务器

javascript - Node.js 加密 PBKDF2 函数在 v8 和 v10 上返回不同的值

node.js - CompoundJS 中的一对多关系

node.js - 在 gulp 中复制文件夹及其内容

javascript - 多个文件的代码覆盖率

javascript - 带有变量的 Nodejs 类