From 896e1ef4823bdb91f52a3029f09c8281d52975f9 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Thu, 16 Dec 2021 09:55:35 +1000 Subject: [PATCH] Fix linting on tests --- spec/common/services/auth.service.spec.ts | 65 ++++++++++++----------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/spec/common/services/auth.service.spec.ts b/spec/common/services/auth.service.spec.ts index eb8d981d..0c714db1 100644 --- a/spec/common/services/auth.service.spec.ts +++ b/spec/common/services/auth.service.spec.ts @@ -2,30 +2,31 @@ import { Arg, Substitute, SubstituteOf } from '@fluffy-spoon/substitute'; import { ApiService } from 'jslib-common/abstractions/api.service'; import { AppIdService } from 'jslib-common/abstractions/appId.service'; -import { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service'; import { CryptoService } from 'jslib-common/abstractions/crypto.service'; -import { EnvironmentService } from 'jslib-common/abstractions/environment.service' +import { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service'; +import { EnvironmentService } from 'jslib-common/abstractions/environment.service'; import { I18nService } from 'jslib-common/abstractions/i18n.service'; -import { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service' +import { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service'; import { LogService } from 'jslib-common/abstractions/log.service'; import { MessagingService } from 'jslib-common/abstractions/messaging.service'; import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service'; +import { StateService } from 'jslib-common/abstractions/state.service'; import { TokenService } from 'jslib-common/abstractions/token.service'; -import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service' +import { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service'; -import { AuthService, TwoFactorProviders } from 'jslib-common/services/auth.service'; +import { AuthService } from 'jslib-common/services/auth.service'; import { Utils } from 'jslib-common/misc/utils'; -import { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey'; -import { HashPurpose } from 'jslib-common/enums/hashPurpose'; -import { AuthResult } from 'jslib-common/models/domain/authResult'; -import { IdentityTokenResponse } from 'jslib-common/models/response/identityTokenResponse'; -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'; -import { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType'; +import { AuthResult } from 'jslib-common/models/domain/authResult'; import { EncString } from 'jslib-common/models/domain/encString'; +import { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey'; + +import { IdentityTokenResponse } from 'jslib-common/models/response/identityTokenResponse'; + +import { HashPurpose } from 'jslib-common/enums/hashPurpose'; +import { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType'; describe('Cipher Service', () => { let cryptoService: SubstituteOf; @@ -41,7 +42,7 @@ describe('Cipher Service', () => { let environmentService: SubstituteOf; let keyConnectorService: SubstituteOf; let stateService: SubstituteOf; - let setCryptoKeys = true; + const setCryptoKeys = true; const email = 'hello@world.com'; const masterPassword = 'password'; @@ -110,7 +111,7 @@ describe('Cipher Service', () => { // For logInHelper, i.e. always required appIdService.getAppId().resolves(deviceId); - tokenService.decodeToken(accessToken).resolves(decodedToken) + tokenService.decodeToken(accessToken).resolves(decodedToken); } function commonSuccessAssertions() { @@ -134,7 +135,7 @@ describe('Cipher Service', () => { refreshToken: refreshToken, }, }, - }) + }); stateService.received(1).setBiometricLocked(false); messagingService.received(1).send('loggedIn'); } @@ -179,7 +180,7 @@ describe('Cipher Service', () => { // Assert // Api call: - apiService.received(1).postIdentityToken(Arg.is(actual => + apiService.received(1).postIdentityToken(Arg.is(actual => actual.email === email && actual.masterPasswordHash === hashedPassword && actual.device.identifier === deviceId && @@ -270,7 +271,7 @@ describe('Cipher Service', () => { it('logIn: bails out if 2FA is required', async () => { const twoFactorProviders = new Map([ - [1, null] + [1, null], ]); logInSetup(); @@ -307,8 +308,8 @@ describe('Cipher Service', () => { actual.email === email && actual.masterPasswordHash === hashedPassword && actual.device.identifier === deviceId && - actual.provider == twoFactorProviderType && - actual.token == twoFactorToken && + actual.provider === twoFactorProviderType && + actual.token === twoFactorToken && actual.remember === twoFactorRemember && actual.captchaResponse == null)); }); @@ -326,7 +327,7 @@ describe('Cipher Service', () => { // Assert // Api call: - apiService.received(1).postIdentityToken(Arg.is(actual => + apiService.received(1).postIdentityToken(Arg.is(actual => actual.code === ssoCode && actual.codeVerifier === ssoCodeVerifier && actual.redirectUri === ssoRedirectUrl && @@ -383,12 +384,12 @@ describe('Cipher Service', () => { }); it('logInSso: new SSO user with Key Connector posts key to the server', async () => { - const encKey: [SymmetricCryptoKey, EncString] = [ - new SymmetricCryptoKey(Utils.fromB64ToArray("T/tvXd/wvROlTu69qimTod1l7bnYltYOdx1es+xiiEI=")), - new EncString("2.j/dbf/fUThfQtOPLU5rbBQ==|u82vHRHBkNY4E44hNmv0BIJQx961Tgh7RJ/p2pGytnZckFn8jwu72GG6HMNhvG4+GGwoIEd4GgP+oOFBhqIHXh5niH4wT2kuuyeA22+0VZM=|r1q0wYATeXB4ejUY6CORagAtqwUT246sY+wp46Kj6pY="), - ] - const pubKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqH10xpM+VyAfjLj1cwLm8ydOx/qZq4UcUji/lJ1+p0In1vs1BPeVa5MjaiCO8zrALfSckUfviFv74p7Eo0e4XwbJljnh5E2FdMLUL3oUjKiqCFZ9obdGzzGh7ImY1rnjAOEXjme/kbfWTeva54cv7SYBSoAK3IuNxJeQh1cICohMI/7VUCwlQgHITZ7dK0oQ/gIb/E7wX4TG5x0g6zjYjhWUjWjBaxkUodgF4d7KLd/d7OhM0EQSWA1oaR8nxEaAuAkB4AMNqQhzfZWNzdGJVYdr1j5cizVnDWPoTCk30kHc/Pffuo1hw7156XxLOiM46K/cgKEk9lHTf9s8bSouQIDAQAB"; - const privKey = new EncString("2.NGK1ka8L+XG32nDAc4u36A==|XbdTogpmevDG2s55ZpJhwVizILBq+oXwIDFmZHXjCVOO2f6Iz1WiVvPvMfp/gqOIVZN770KUYpSiWvwgbuEWr9fKbqaqPUTs188rqMs8C3JWLgRpNeWvc2VNskl+A89lkb2BCHFsOXyxK/IaK85ORpY/PXobWlA1ese7DKqv4iEMjJvMKqPi5xTxLJ1uJGEwqNwOZN021I4RQxDgByYQCmjC2iCIR6rMuSwLRR2a9jwY+CLa/XslxIFkTe8dVzO5o2KXiYwz0UoN82tYxCHz9/8EQfaFI/CPFbE/OQtjN8mfF72i0JtRuYBH9y6yfPFUzYnZpZ7dHSYnF33+pUOALHR1WgJXaHz3VSRQR1yAuoF5ZARtWHn4buw0OXM9tnqcosCQ/BlP9ExN6httJGO6kxZpsbZs+DSCOzAWWxkaVwexE1QGZ+OrbJh8d0lzzlTW5QUukQL5y5cNoaBsF+U2qdb8a16/kxvPr56T9uhUoAfdV6mWyuhc/8Rl7sSMsrVZQ/YINrmjEDtkgFrcgdSxGhTnRJ5lIFDNS5ljyotcj6J8luVvC5gV58vO+AqhN9xTP3f88+Fn0EE5edX7WDqXQdxCGYtjrbGiKuSWXBe/b8NHdYP9t/snfMlR21OAun3Rw3yS/GRvZNPozdtGVPAgMTfy62rCbED6HS1EjNRaYzoL52Ges4uZVhFYxcmFFH4Ol8k8txVYwFihmt8caJHYGmK6m2ryfOkRKaWf0map5BevJYPrmd0WHtcAGmavuPXUYUoeXq14+Fo63lkq6z+YIBLTxTQChglia8sb7qp2Kc2NCs43DDRlmVCXmesedpj5HwrrywC5mGkl9D/Awp7NKcpO3n8kIcupeiRWI6v/Y+uBBebIEpVTBJhKC2klF3azUJRSm6/5i5YRIXQJ4KkzYSQyKeQIOQzCtNwifTtk/NBuPmnXAGS8SNaUToyr1SGCDvPYHtSC91pHYQ4gYKbR5la38xndj/d1id5xmN8fZBvn2G07p0VEPPSjKnzp1vvi3dr6m65acAUoGWVZGhkyy03wrUd8Jd2KqTByeVOTZ9jDTFzXdt00nJQaCJpN5gjaNuT77ESsg+Bot9j0clXvvOQvx1lQPe4EN12TXgCoUpgkEGKqy2cf5sbc5PJm4eYFKjJ8KobCJgpLMWhfmOpK1uB02BcZ9BQJLfAqb1IsZ65w0Z5MwuDI50eUFGUHccfdrgmS/Gf/BvK4nJOQFMeaOOEGEFp2TG4DU71Ft0uVO+9l58I3rkkaedejMu+fC0tTdK8GS8Dc4ASi2wqjrOkDXBoHAU3hSfdWxEXbm3k9CrI+a8UftYqguuOxg23288YSblc8V3ca+FNhOS1VkgteE+HGVLidzGoE+7dX2xqV2piW9ihEgLR3hoZU9Rl6G37oGKtTFn0HuWoK+idJpmobfiFqqdSObzQvFUcvqV5Rxa+R90AwUv9MqCNoAlYlQg7Hn6/l4zKqEXrmQsNr7QccVDTqlbBZpnk/PmS0OJ55RJ7Ow9tRGdbb6ePfq4XjMTx0knZDBdgPYZ0n9XSShR8RrN+nLA4yNoWkOeYoVIHEauHxVh+aDMOch1EhIViz4HW/CcSSd32dE3+NSfz8Uq8v/v1Bt2dkszf90cfxqRdJGV0=|u4eqyjxRrhrQf10L+quvC6rY5gRqVtZwg6YSLWgYv9Q="); + const realEncKey: [SymmetricCryptoKey, EncString] = [ + new SymmetricCryptoKey(Utils.fromB64ToArray('T/tvXd/wvROlTu69qimTod1l7bnYltYOdx1es+xiiEI=')), + new EncString('2.j/dbf/fUThfQtOPLU5rbBQ==|u82vHRHBkNY4E44hNmv0BIJQx961Tgh7RJ/p2pGytnZckFn8jwu72GG6HMNhvG4+GGwoIEd4GgP+oOFBhqIHXh5niH4wT2kuuyeA22+0VZM=|r1q0wYATeXB4ejUY6CORagAtqwUT246sY+wp46Kj6pY='), + ]; + const pubKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqH10xpM+VyAfjLj1cwLm8ydOx/qZq4UcUji/lJ1+p0In1vs1BPeVa5MjaiCO8zrALfSckUfviFv74p7Eo0e4XwbJljnh5E2FdMLUL3oUjKiqCFZ9obdGzzGh7ImY1rnjAOEXjme/kbfWTeva54cv7SYBSoAK3IuNxJeQh1cICohMI/7VUCwlQgHITZ7dK0oQ/gIb/E7wX4TG5x0g6zjYjhWUjWjBaxkUodgF4d7KLd/d7OhM0EQSWA1oaR8nxEaAuAkB4AMNqQhzfZWNzdGJVYdr1j5cizVnDWPoTCk30kHc/Pffuo1hw7156XxLOiM46K/cgKEk9lHTf9s8bSouQIDAQAB'; + const privKey = new EncString('2.NGK1ka8L+XG32nDAc4u36A==|XbdTogpmevDG2s55ZpJhwVizILBq+oXwIDFmZHXjCVOO2f6Iz1WiVvPvMfp/gqOIVZN770KUYpSiWvwgbuEWr9fKbqaqPUTs188rqMs8C3JWLgRpNeWvc2VNskl+A89lkb2BCHFsOXyxK/IaK85ORpY/PXobWlA1ese7DKqv4iEMjJvMKqPi5xTxLJ1uJGEwqNwOZN021I4RQxDgByYQCmjC2iCIR6rMuSwLRR2a9jwY+CLa/XslxIFkTe8dVzO5o2KXiYwz0UoN82tYxCHz9/8EQfaFI/CPFbE/OQtjN8mfF72i0JtRuYBH9y6yfPFUzYnZpZ7dHSYnF33+pUOALHR1WgJXaHz3VSRQR1yAuoF5ZARtWHn4buw0OXM9tnqcosCQ/BlP9ExN6httJGO6kxZpsbZs+DSCOzAWWxkaVwexE1QGZ+OrbJh8d0lzzlTW5QUukQL5y5cNoaBsF+U2qdb8a16/kxvPr56T9uhUoAfdV6mWyuhc/8Rl7sSMsrVZQ/YINrmjEDtkgFrcgdSxGhTnRJ5lIFDNS5ljyotcj6J8luVvC5gV58vO+AqhN9xTP3f88+Fn0EE5edX7WDqXQdxCGYtjrbGiKuSWXBe/b8NHdYP9t/snfMlR21OAun3Rw3yS/GRvZNPozdtGVPAgMTfy62rCbED6HS1EjNRaYzoL52Ges4uZVhFYxcmFFH4Ol8k8txVYwFihmt8caJHYGmK6m2ryfOkRKaWf0map5BevJYPrmd0WHtcAGmavuPXUYUoeXq14+Fo63lkq6z+YIBLTxTQChglia8sb7qp2Kc2NCs43DDRlmVCXmesedpj5HwrrywC5mGkl9D/Awp7NKcpO3n8kIcupeiRWI6v/Y+uBBebIEpVTBJhKC2klF3azUJRSm6/5i5YRIXQJ4KkzYSQyKeQIOQzCtNwifTtk/NBuPmnXAGS8SNaUToyr1SGCDvPYHtSC91pHYQ4gYKbR5la38xndj/d1id5xmN8fZBvn2G07p0VEPPSjKnzp1vvi3dr6m65acAUoGWVZGhkyy03wrUd8Jd2KqTByeVOTZ9jDTFzXdt00nJQaCJpN5gjaNuT77ESsg+Bot9j0clXvvOQvx1lQPe4EN12TXgCoUpgkEGKqy2cf5sbc5PJm4eYFKjJ8KobCJgpLMWhfmOpK1uB02BcZ9BQJLfAqb1IsZ65w0Z5MwuDI50eUFGUHccfdrgmS/Gf/BvK4nJOQFMeaOOEGEFp2TG4DU71Ft0uVO+9l58I3rkkaedejMu+fC0tTdK8GS8Dc4ASi2wqjrOkDXBoHAU3hSfdWxEXbm3k9CrI+a8UftYqguuOxg23288YSblc8V3ca+FNhOS1VkgteE+HGVLidzGoE+7dX2xqV2piW9ihEgLR3hoZU9Rl6G37oGKtTFn0HuWoK+idJpmobfiFqqdSObzQvFUcvqV5Rxa+R90AwUv9MqCNoAlYlQg7Hn6/l4zKqEXrmQsNr7QccVDTqlbBZpnk/PmS0OJ55RJ7Ow9tRGdbb6ePfq4XjMTx0knZDBdgPYZ0n9XSShR8RrN+nLA4yNoWkOeYoVIHEauHxVh+aDMOch1EhIViz4HW/CcSSd32dE3+NSfz8Uq8v/v1Bt2dkszf90cfxqRdJGV0=|u4eqyjxRrhrQf10L+quvC6rY5gRqVtZwg6YSLWgYv9Q='); commonSetup(); @@ -398,7 +399,7 @@ describe('Cipher Service', () => { cryptoFunctionService.randomBytes(Arg.any()).resolves(Utils.fromB64ToArray('bNr5Ykzpv9lXJF26Cyz8iGpeGjs9si6MYkiC5iZzy4H7fWnnevSvBvLL')); cryptoService.makeKey(Arg.any(), Arg.any(), kdf, kdfIterations).resolves(preloginKey); - cryptoService.makeEncKey(preloginKey).resolves(encKey) + cryptoService.makeEncKey(preloginKey).resolves(realEncKey); cryptoService.makeKeyPair().resolves([pubKey, privKey]); apiService.postIdentityToken(Arg.any()).resolves(tokenResponse); @@ -409,10 +410,10 @@ describe('Cipher Service', () => { cryptoService.received(1).setKey(preloginKey); cryptoService.received(1).setEncKey(Arg.any()); apiService.received(1).postUserKeyToKeyConnector(keyConnectorUrl, Arg.any()); - apiService.received(1).postSetKeyConnectorKey(Arg.is(r => + apiService.received(1).postSetKeyConnectorKey(Arg.is(r => r.kdf === kdf && r.kdfIterations === kdfIterations && - r.key === encKey[1].encryptedString && + r.key === realEncKey[1].encryptedString && r.orgIdentifier === ssoOrgId && r.keys.encryptedPrivateKey === privKey.encryptedString && r.keys.publicKey === pubKey)); @@ -428,7 +429,7 @@ describe('Cipher Service', () => { const result = await authService.logInApiKey(apiClientId, apiClientSecret); - apiService.received(1).postIdentityToken(Arg.is(actual => + apiService.received(1).postIdentityToken(Arg.is(actual => actual.clientId === apiClientId && actual.clientSecret === apiClientSecret && actual.device.identifier === deviceId && @@ -457,7 +458,7 @@ describe('Cipher Service', () => { refreshToken: refreshToken, }, }, - }) + }); stateService.received(1).setBiometricLocked(false); messagingService.received(1).send('loggedIn');