From 3b75fe6adeec45c5c34298e541aff4cfeb6d4f76 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 13 Nov 2015 17:27:13 +0100 Subject: [PATCH] add tests for emails (wip) and encryption, misc fixes --- test/api/v3/unit/libs/email.test.js | 94 ++++++++++++++++++++++++ test/api/v3/unit/libs/encryption.test.js | 15 ++++ 2 files changed, 109 insertions(+) create mode 100644 test/api/v3/unit/libs/email.test.js create mode 100644 test/api/v3/unit/libs/encryption.test.js diff --git a/test/api/v3/unit/libs/email.test.js b/test/api/v3/unit/libs/email.test.js new file mode 100644 index 0000000000..731f24e347 --- /dev/null +++ b/test/api/v3/unit/libs/email.test.js @@ -0,0 +1,94 @@ +import request from 'request'; +import { + send as sendEmail, + sendTxn as sendTxnEmail, + getUserInfo, +} from '../../../../../website/src/libs/api-v3/email'; + +function getUser () { + return { + _id: 'random _id', + auth: { + local: { + username: 'username', + email: 'email@email', + }, + facebook: { + emails: [{ + value: 'email@facebook' + }], + displayName: 'fb display name', + } + }, + profile: { + name: 'profile name', + }, + preferences: { + emailNotifications: { + unsubscribeFromAll: false + }, + }, + }; +}; + +describe('emails', () => { + + beforeEach(() => { + sandbox.stub(request, 'post'); + }); + + afterEach(() => { + sandbox.restore(); + }); + + describe('sendEmail', () => { + + }); + + describe('getUserInfo', () => { + it('returns an empty object if no field request', () => { + expect(getUserInfo({}, [])).to.be.empty; + }); + + it('returns correct user data', () => { + let user = getUser(); + let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); + + expect(data).to.have.property('name', user.profile.name); + expect(data).to.have.property('email', user.auth.local.email); + expect(data).to.have.property('_id', user._id); + expect(data).to.have.property('canSend', true); + }); + + it('returns correct user data [facebook users]', () => { + let user = getUser(); + delete user.profile['name']; + delete user.auth['local']; + + let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); + + expect(data).to.have.property('name', user.auth.facebook.displayName); + expect(data).to.have.property('email', user.auth.facebook.emails[0].value); + expect(data).to.have.property('_id', user._id); + expect(data).to.have.property('canSend', true); + }); + + it('has fallbacks for missing data', () => { + let user = getUser(); + delete user.profile['name']; + delete user.auth.local['email'] + delete user.auth['facebook']; + + let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); + + expect(data).to.have.property('name', user.auth.local.username); + expect(data).not.to.have.property('email'); + expect(data).to.have.property('_id', user._id); + expect(data).to.have.property('canSend', true); + }); + }); + + describe('sendTxnEmail', () => { + + }); +}); diff --git a/test/api/v3/unit/libs/encryption.test.js b/test/api/v3/unit/libs/encryption.test.js new file mode 100644 index 0000000000..dcab9bffd3 --- /dev/null +++ b/test/api/v3/unit/libs/encryption.test.js @@ -0,0 +1,15 @@ +import { + encrypt, + decrypt, +} from '../../../../../website/src/libs/api-v3/encryption'; + +describe('encryption', () => { + it('can encrypt and decrypt', () => { + let data = 'some secret text'; + let encrypted = encrypt(data); + let decrypted = decrypt(encrypted); + + expect(encrypted).not.to.equal(data); + expect(data).to.equal(decrypted); + }); +});