The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/app/2fa/server/code/EmailCheck.spec.ts

70 lines
1.8 KiB

import { expect } from 'chai';
import { describe, it } from 'mocha';
import proxyquire from 'proxyquire';
import sinon from 'sinon';
const settingsMock = sinon.stub();
const { EmailCheck } = proxyquire.noCallThru().load('./EmailCheck', {
'@rocket.chat/models': {
Users: {},
},
'meteor/accounts-base': {
Accounts: {
_bcryptRounds: () => '123',
},
},
'../../../../server/lib/i18n': {
i18n: {
t: (key: string) => key,
},
},
'../../../mailer/server/api': {
send: () => undefined,
},
'../../../settings/server': {
settings: {
get: settingsMock,
},
},
});
const normalUserMock = { services: { email2fa: { enabled: true } }, emails: [{ email: 'abc@gmail.com', verified: true }] };
const normalUserWithUnverifiedEmailMock = {
services: { email2fa: { enabled: true } },
emails: [{ email: 'abc@gmail.com', verified: false }],
};
const OAuthUserMock = { services: { google: {} }, emails: [{ email: 'abc@gmail.com', verified: true }] };
describe('EmailCheck', () => {
let emailCheck: typeof EmailCheck;
beforeEach(() => {
settingsMock.reset();
emailCheck = new EmailCheck();
});
it('should return EmailCheck is enabled for a normal user', () => {
settingsMock.returns(true);
const isEmail2FAEnabled = emailCheck.isEnabled(normalUserMock);
expect(isEmail2FAEnabled).to.be.equal(true);
});
it('should return EmailCheck is not enabled for a normal user with unverified email', () => {
settingsMock.returns(true);
const isEmail2FAEnabled = emailCheck.isEnabled(normalUserWithUnverifiedEmailMock);
expect(isEmail2FAEnabled).to.be.equal(false);
});
it('should return EmailCheck is not enabled for a OAuth user with setting being false', () => {
settingsMock.returns(true);
const isEmail2FAEnabled = emailCheck.isEnabled(OAuthUserMock);
expect(isEmail2FAEnabled).to.be.equal(false);
});
});