From 23cfd1de7f2ffbd7481c722e3732f7b3aadb1124 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Wed, 15 Dec 2021 13:15:04 +1000 Subject: [PATCH] Add test for returning early if 2FA required --- spec/common/services/auth.service.spec.ts | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/spec/common/services/auth.service.spec.ts b/spec/common/services/auth.service.spec.ts index ce25dd6e..85cc2b05 100644 --- a/spec/common/services/auth.service.spec.ts +++ b/spec/common/services/auth.service.spec.ts @@ -23,6 +23,7 @@ import { IdentityTokenResponse } from 'jslib-common/models/response/identityToke import { StateService } from 'jslib-common/abstractions/state.service'; import { AccountProfile, AccountTokens } from 'jslib-common/models/domain/account'; import { KeyConnectorUserKeyRequest } from 'jslib-common/models/request/keyConnectorUserKeyRequest'; +import { IdentityTwoFactorResponse } from 'jslib-common/models/response/identityTwoFactorResponse'; describe('Cipher Service', () => { let cryptoService: SubstituteOf; @@ -231,6 +232,7 @@ describe('Cipher Service', () => { cryptoService.didNotReceive().setEncPrivateKey(Arg.any()); }); + // TODO: this should be logInSso it('logIn: gets and sets KeyConnector key for enrolled user', async () => { logInSetup(); commonSetup(); @@ -261,6 +263,32 @@ describe('Cipher Service', () => { apiService.received(1).postAccountKeys(Arg.any()); }); + it('logIn: bails out if 2FA is required', async () => { + const twoFactorProviders = new Map([ + [1, null] + ]); + + logInSetup(); + commonSetup(); + const tokenResponse = newTokenResponse(); + (tokenResponse as any).twoFactorProviders2 = twoFactorProviders; + + tokenService.getTwoFactorToken(email).resolves(null); + apiService.postIdentityToken(Arg.any()).resolves(tokenResponse); + + const expected = new AuthResult(); + expected.twoFactor = true; + expected.twoFactorProviders = twoFactorProviders; + expected.captchaSiteKey = undefined; + + const result = await authService.logIn(email, masterPassword); + + stateService.didNotReceive().addAccount(Arg.any()); + messagingService.didNotReceive().send(Arg.any()); + + expect(result).toEqual(expected); + }); + // it('login: new SSO user with Key Connector posts key to the server', async () => { // logInSetup(); // commonSetup();