Я запускаю какой-то тест по поддельной (facebook / google) стратегии, но проблема, с которой я сталкиваюсь, когда я запускаю эти тесты один за другим, запускается, но когда я запускаю их одновременно, они не работают после первого теста, соединениеприложение немедленно завершается сбоем.
Я пытался запустить другое описание, но ничего не изменилось. Я использую nodejs и @ passport-next / passport-mocked в качестве зависимости, чтобы помочь мне посмеяться над этими стратегиями.
import chai from 'chai';
import chaiHttp from 'chai-http';
import passport from 'passport';
import '../config/passport';
import { describe, it } from 'mocha';
import server from '../index';
chai.use(chaiHttp);
const should = chai.should();
describe.only('login through facebook', () => {
it('redirects to facebook', (done) => {
chai
.request(server)
.get('/api/v1/users/auth/facebook')
.end((_err, res) => {
res.redirects[0].should.contain('api/v1/users/auth/facebook/callback?__mock_strategy_callback=true');
done();
});
});
it('redirects to google', (done) => {
chai
.request(server)
.get('/api/v1/users/auth/google')
.end((_err, res) => {
console.log(_err);
// res.redirects[0].should.contain('api/v1/users/auth/google/callback?__mock_strategy_callback=true');
done();
});
});
});
это мой тестовый файл
import passport from 'passport';
import config from './auth';
let FacebookStrategy;
let GooglePlusStrategy;
if (process.env.NODE_ENV !== 'test') {
FacebookStrategy = require('passport-facebook');
GooglePlusStrategy = require('passport-google-oauth20');
} else {
FacebookStrategy = require('passport-mocked').Strategy;
GooglePlusStrategy = require('passport-mocked').OAuth2Strategy;
}
passport.use(new FacebookStrategy({
name: 'facebook',
clientID: '2618632188182397',
clientSecret: 'f8a48d72223691ad05ca936fa20049e9',
callbackURL: 'http://localhost:3000/api/v1/users/auth/facebook/callback',
profileFields: ['id', 'displayName', 'photos', 'email']
}, (accessToken, refreshToken, profile, done) => {
const firstName = profile._json.firstName;
const lastName = profile._json.last_name;
const email = profile.emails[0].value;
const user = { firstName, lastName, email };
// console.log(profile);
done(null, user);
}));
passport.use(new GooglePlusStrategy({
name: 'google',
clientID: config.google.clientID,
clientSecret: config.google.clientSecret,
callbackURL: 'http://localhost:3000/api/v1/users/auth/google/callback'
}, (accessToken, refreshToken, profile, cb) => {
const user = {
username: profile.displayName,
email: profile.emails[0].value,
isverified: true
};
console.log(profile);
cb(null, user);
}));
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
export default passport;
это моя конфигурация паспорта
const server = app.listen(process.env.PORT || 3000, () => {
// eslint-disable-next-line no-console
console.log(`Listening on port ${server.address().port}`);
});
это мой индекс приложения
app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email'] }));
app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), (req,res) => res.send(">>>>>>>>>>>>>>>>"));
app.get('/auth/google', passport.authenticate('google', { scope: ['email', 'profile'] }));
app.get('/auth/google/callback', passport.authenticate('google'), (req,res) => res.send(">>>>>>>>>>>>>>>>") );
это мои маршруты
Я ожидаю, что результат моего теста будет в формате json , но сейчас, когда я запускаю результат в null и я получаю ошибку
Listening on port 3000
login through facebook
✓ redirects to facebook (57ms)
{ Error: connect ECONNREFUSED 127.0.0.1:3000
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1106:14)
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3000,
response: undefined }
✓ redirects to google
ошибка, которую я получаю