atsid/generator-ats-node-webapp

View on GitHub
generators/persistence-mongodb/templates/server/persistence/models/User/User.handlers/encrypt_password_on_save.spec.js

Summary

Maintainability
A
0 mins
Test Coverage
const { expect } = require('chai');
const rewire = require('rewire');
const handler = rewire('./encrypt_password_on_save');

describe('Encrypt Password On Save Handler', () => {
  it('can encrypt a password when it changes', (done) => {
    const user = {
      password: 'abc123',
      isModified: (field) => field === 'password',
    };
    const next = () => {
      expect(user.password).to.not.equal('abc123');
      done();
    };
    return handler.apply(user, [next]);
  });

  it('will invoke next() if the password did not change', (done) => {
    const user = {
      password: 'abc123',
      isModified: () => false,
    };
    const next = () => {
      expect(user.password).to.equal('abc123');
      done();
    };
    return handler.apply(user, [next]);
  });

  it('will invoke the catch handler when an error is thrown', (done) => {
    const user = {
      password: 'abc123',
      isModified: () => true,
    };
    handler.__with__({
      'passwordChecker': {
        encryptPassword: () => {
          throw new Error('Triggering a blowup');
        },
      },
    })(() => {
      const next = (err) => {
        expect(err).to.be.ok;
        done();
      };
      return handler.apply(user, [next]);
    });
  });
});