node.js - 如何测试需要 Facebook 身份验证的基于 express 的 API?

标签 node.js testing express passport.js supertest

我正在编写一个应用程序,它仅使用基于 Facebook 的身份验证和 PassportJS。提供的部分 API 仅在用户通过身份验证后可用。 我正在尝试找到一种方法来测试 API 的这一部分。我发现了许多使用登录名+密码测试经过身份验证的 API 的示例,但这里不是这种情况。我也找到了这个 thread但不幸的是,我不明白答案有何帮助。

你们海军有没有任何例子可以解释这是如何实现的?

假设我有一个 API:

app.get('/users/me, users.me);

并且此调用要求用户通过 Facebook 的身份验证。

我如何使用 super 测试来测试 is 并使用 FB 模拟用户身份验证?

最佳答案

您可以使用 zombie + mocha 来测试这个....Zombie 在后端(您看不到)打开一个虚拟浏览器并单击页面上的任何链接,然后通过断言使用 mocha 来测试此结果。在启动应用程序之前登录 facebook,然后使用 zombie 登录 fb 身份验证和断言新路由的链接(因为您将获得成功的重定向 url)。假设成功登录后的重定向 url 是/auth/facebook/success 和/auth/facebook 是测试登录的 url。这是可以实现它的代码

var assert = require('assert'),
    virtualBrowser = require('zombie');
describe('facebbok Login test', function () {
    describe('Checking whether login is successfull based o nthe redirection URL',         function () {
        it('Checking for the sucess URL', function (done) {
            virtualBrowser.visit('http://127.0.0.1:3000/auth/facebook', function (err, browser) {
                if (err)
                    throw err;
               console.log('Zombie visited the page,page loaded    ');
               assert.equal(browser.location.pathname, '/auth/facebook/success');

                //all your tests goes here

                /*you'll be using this 'browser object in the callback for further tests */

               done();
            });
        });
    });
});

通过针对 mocha 运行测试来运行测试(将出现在已安装模块文件夹的 node_module/mocha 中) ~/node_modules/mocha/bin/mocha ./zombie-test/test_sign_facebook.js 如果 mocha 报告超时,因为登录可能很慢,只需使用 -t 参数添加更多阈值测试时间 ~/node_modules/mocha/bin/mocha -t 12000 ./zombie-test/test_sign

关于node.js - 如何测试需要 Facebook 身份验证的基于 express 的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353243/

相关文章:

performance - JMeter 理解升级

xcode - 如何测试不在 Xcode 项目中的 Swift 脚本

node.js - 如何重新启动/更新 Node Express 虚拟主机站点

node.js - 将 Webpack 添加到现有 React 应用程序

database - waterline-model.create - primaryKey

c# - 如何为 SQL 查询编写自动化测试?

java - 为什么我的 Spring Data JPA 查询比 Node.JS + oracledb 慢 8 倍?

javascript - 从expressjs路由中排除文件夹

node.js - sails.io.js - nodejs - 足智多谋的 PubSub 没有收到模型事件

javascript - 如何使用 NodeJS 获取 "HTTP_REFERER"?