UNPKG

apollo-passport-local-strategy

Version:

Local strategy using email address and hashed, bcrypted password

109 lines (82 loc) 3.17 kB
'use strict'; var _chai = require('chai'); var _chai2 = _interopRequireDefault(_chai); var _chaiAsPromised = require('chai-as-promised'); var _chaiAsPromised2 = _interopRequireDefault(_chaiAsPromised); require('regenerator-runtime/runtime'); var _verify2 = require('./verify'); var _verify3 = _interopRequireDefault(_verify2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _chai2.default.use(_chaiAsPromised2.default); var should = _chai2.default.should(); describe('apollo-passport-local - verify', function () { var context = {}; var verify = _verify3.default.bind(context); var error = new Error('test error'); var comparePasswordError = false; context.comparePassword = function (pass1, pass2, cb) { if (comparePasswordError) cb(error);else cb(null, pass1 === pass2); }; context.db = { fetchUserByEmail: function fetchUserByEmail(email) { return new Promise(function (resolve, reject) { if (email === 'error-email') return reject(error);else if (email === 'non-existing-email') return resolve(null);else if (email === 'no-password-set') return resolve({ id: 'user1 ' });else if (email === 'valid-user') resolve({ id: 'user1', services: { password: { bcrypt: 'password' } } });else throw new Error("unknown test email: " + email); }); } }; it('self-test: throws on unknown test-email', function () { context.db.fetchUserByEmail('invalid').should.reject; }); it('should catch db errors and pass to callback', function (done) { verify("error-email", "bar", function (err, user, info) { err.should.equal(error); should.equal(user, undefined); should.not.exist(info); done(); }); }); it('should fail on no matching email', function (done) { verify("non-existing-email", "test123", function (err, user, info) { should.not.exist(err); user.should.be.false; info.should.equal("Invalid email"); done(); }); }); it('should fail on no matching password', function (done) { verify("valid-user", "non-matching-password", function (err, user, info) { should.not.exist(err); user.should.be.false; info.should.equal("Invalid password"); done(); }); }); it('should fail when user has no password set', function (done) { verify("no-password-set", "password", function (err, user, info) { should.not.exist(err); user.should.be.false; info.should.equal("No password set"); done(); }); }); it('should return a matching user when correct password given', function (done) { verify("valid-user", "password", function (err, user, info) { should.not.exist(err); user.id.should.equal("user1"); should.not.exist(info); done(); }); }); it('should call cb(err) on a thrown error', function (done) { comparePasswordError = true; verify("valid-user", "test123", function (err, user) { err.should.equal(error); should.equal(user, undefined); comparePasswordError = false; // reset for next test done(); }); }); });