Невозможно проверить авторизацию третьей стороной: Node/Express/Supertest/Facebook
Я пишу тесты для очень ранней стадии приложения Node/Express. Я принял решение использовать только логины FB для большинства пользователей, поэтому многие из моих контроллеров зависят от аутентифицированного состояния FB. Но мне не ясно, как это проверить или как сохранить сеанс с вошедшим в систему пользователем способом, который будет понятен паспорту, который я использую.
var expect = require("chai").expect;
var mongoose = require('mongoose');
var User = require('../models/users');
var nock = require('nock');
var parser = require('cookie-parser')
var session = require('supertest-session');
var agent = require('superagent');
var _ = require('lodash');
var app = require('../app');
var testSession = null;
var fbRedirectURL;
beforeEach(function () {
testSession = session(app);
});
it('should authorize with FB', function (done) {
testSession.get('/auth/facebook')
.expect(302)
.end(function(err, res){
fbRedirectURL=decodeURIComponent(res.headers.location);
done()
});
});
it('should get FB data', function (done) {
testSession.get(fbRedirectURL)
.expect(200)
.end(function(err,res) {
console.log()
done()
})
});
Эти тесты работают, но второй выдает ошибку: и мне не ясно, как я использую это для поддержания сеанса с помощью других тестов, или если мне нужно каким-то образом насмехаться над этим, или иначе пытаться обмануть паспорт.
Я выглядел высоко и низко и не нашел ничего, что могло бы решить проблему тестирования сторонними сервисами аутентификации, и это кажется проблематичным. Есть ли ресурсы, которые я не нашел? Даже документация к паспорту-фейсбуку, кажется, скользит по теме тестирования кода, который зависит от аутентификации FB, и предоставляет набор тестов только для своего собственного кода.
Заранее спасибо.
1 ответ
Я не смог добиться успеха, и я перешел на использование E2E-тестирования с nightwatch.js и селеном. Потребовалось около часа, чтобы понять это и получить тесты логинов FB: теперь мне просто нужно посмотреть, смогу ли я интегрировать тесты мокко с ночными часами…