From d05648acfde34c2b29da1cd64d9f1b6234e153fd Mon Sep 17 00:00:00 2001 From: Ritesh Dsouza Date: Tue, 4 Feb 2025 14:06:30 +0000 Subject: [PATCH 1/3] got rid of encrypt/decrypt logic --- src/app/app.module.ts | 2 -- src/app/services/logger/CryptoWrapper.spec.ts | 14 -------- src/app/services/logger/cryptoWrapper.ts | 12 ------- .../services/logger/logger.service.spec.ts | 35 +++++++++---------- src/app/services/logger/logger.service.ts | 8 ++--- 5 files changed, 19 insertions(+), 52 deletions(-) delete mode 100644 src/app/services/logger/CryptoWrapper.spec.ts delete mode 100644 src/app/services/logger/cryptoWrapper.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 508887b4d2..600bf3570f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -54,7 +54,6 @@ import { AcceptTermsService } from './services/acceptTerms/acceptTerms.service'; import { CaseShareService } from './services/case/share-case.service'; import { DefaultErrorHandler } from './services/errorHandler/defaultErrorHandler'; import { JurisdictionService } from './services/jurisdiction/jurisdiction.service'; -import { CryptoWrapper } from './services/logger/cryptoWrapper'; import { LoggerService } from './services/logger/logger.service'; import { MonitoringService } from './services/logger/monitoring.service'; import { SharedModule } from './shared/shared.module'; @@ -122,7 +121,6 @@ export function launchDarklyClientIdFactory( deps: [Store, ENVIRONMENT_CONFIG], multi: true }, - CryptoWrapper, MonitoringService, LoggerService, { diff --git a/src/app/services/logger/CryptoWrapper.spec.ts b/src/app/services/logger/CryptoWrapper.spec.ts deleted file mode 100644 index 81124f879a..0000000000 --- a/src/app/services/logger/CryptoWrapper.spec.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { CryptoWrapper } from './cryptoWrapper'; - -describe('Crypto Wrapper', () => { - const cryptoWrapper = new CryptoWrapper(); - - it('should be created', () => { - expect(cryptoWrapper).toBeTruthy(); - }); - - it('should be encypt and decrypt', () => { - const encyptedObject = cryptoWrapper.encrypt('message'); - expect(cryptoWrapper.decrypt(encyptedObject)).toEqual('message'); - }); -}); diff --git a/src/app/services/logger/cryptoWrapper.ts b/src/app/services/logger/cryptoWrapper.ts deleted file mode 100644 index bdbf545167..0000000000 --- a/src/app/services/logger/cryptoWrapper.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { AES, enc, SHA256, WordArray } from 'crypto-js'; - -export class CryptoWrapper { - public encrypt(message: string, secret: string = 'secret'): WordArray { - const userIdEncrypted = AES.encrypt(message, secret, SHA256); - return userIdEncrypted; - } - - public decrypt(encrypted: WordArray, secret: string = 'secret'): string { - return AES.decrypt(encrypted, secret, SHA256).toString(enc.Utf8); - } -} diff --git a/src/app/services/logger/logger.service.spec.ts b/src/app/services/logger/logger.service.spec.ts index ded8f06613..4963e10854 100644 --- a/src/app/services/logger/logger.service.spec.ts +++ b/src/app/services/logger/logger.service.spec.ts @@ -7,7 +7,6 @@ describe('Logger service', () => { const mockedNgxLogger = jasmine.createSpyObj('mockedNgxLogger', ['trace', 'debug', 'info', 'log', 'warn', 'error', 'fatal']); const mockedSessionStorageService = jasmine.createSpyObj('mockedSessionStorageService', ['getItem']); - const mockedCryptoWrapper = jasmine.createSpyObj('mockedCryptoWrapper', ['encrypt', 'decrypt']); const mockedConsoleObject = jasmine.createSpyObj('mockedConsoleObject', ['log', 'trace', 'debug', 'info', 'warn', 'error']); const mockEnvironmentService = jasmine.createSpyObj('mockEnvironmentService', ['config$', 'getDeploymentEnv']); const mockConfig = jasmine.createSpyObj('mockConfig', ['subscribe']); @@ -15,13 +14,13 @@ describe('Logger service', () => { it('should be Truthy', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); expect(service).toBeTruthy(); }); it('should be able to call info', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.info('message'); expect(mockedMonitoringService.logEvent).toHaveBeenCalled(); expect(mockedNgxLogger.info).toHaveBeenCalled(); @@ -29,7 +28,7 @@ describe('Logger service', () => { it('should be able to call log', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.log('message'); expect(mockedMonitoringService.logEvent).toHaveBeenCalled(); expect(mockedNgxLogger.log).toHaveBeenCalled(); @@ -37,7 +36,7 @@ describe('Logger service', () => { it('should be able to call warn', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.warn('message'); expect(mockedMonitoringService.logEvent).toHaveBeenCalled(); expect(mockedNgxLogger.warn).toHaveBeenCalled(); @@ -45,7 +44,7 @@ describe('Logger service', () => { it('should be able to call error', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.error('message'); expect(mockedMonitoringService.logException).toHaveBeenCalled(); expect(mockedNgxLogger.error).toHaveBeenCalled(); @@ -53,7 +52,7 @@ describe('Logger service', () => { it('should be able to call fatal', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.fatal('message'); expect(mockedMonitoringService.logException).toHaveBeenCalled(); expect(mockedNgxLogger.fatal).toHaveBeenCalled(); @@ -61,14 +60,14 @@ describe('Logger service', () => { it('should be able to call debug', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.debug('message'); expect(mockedMonitoringService.logEvent).toHaveBeenCalled(); }); it('should be able to call trace', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.trace('message'); expect(mockedMonitoringService.logEvent).toHaveBeenCalled(); expect(mockedNgxLogger.trace).toHaveBeenCalled(); @@ -76,7 +75,7 @@ describe('Logger service', () => { it('should be able to get a message', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); // slice off the last two characters of string to ensure no accidental discrepancies const expectedMessage = `Message - message, Timestamp - ${Date.now()}`.slice(0, -2); const returnedMessage = service.getMessage('message'); @@ -84,15 +83,13 @@ describe('Logger service', () => { expect(returnedMessage.slice(0, -2)).toBe(expectedMessage); }); - it('should be able to get a message with the user email encrypted', () => { - const userInfo = { id: '1', forename: 'Test', surname: 'User', email: 'testemail', active: true, roles: ['pui-case-manager'] }; + it('should be able to get a message with the user id', () => { + const userInfo = { id: '1', forename: 'Test', surname: 'User', email: 'testemail', active: true, roles: ['pui-case-manager'], uid: '123' }; mockedSessionStorageService.getItem.and.returnValue(JSON.stringify(userInfo)); - // Return dummy encrypted email address - mockedCryptoWrapper.encrypt.and.returnValue('encrypted@example.com'); const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); // slice off the last two characters of string to ensure no accidental discrepancies - const expectedMessage = `User - encrypted@example.com, Message - message, Timestamp - ${Date.now()}`.slice(0, -2); + const expectedMessage = `User - 123, Message - message, Timestamp - ${Date.now()}`.slice(0, -2); const returnedMessage = service.getMessage('message'); expect(returnedMessage).not.toBeNull(); expect(returnedMessage.slice(0, -2)).toBe(expectedMessage); @@ -103,18 +100,18 @@ describe('Logger service', () => { mockEnvironmentService.getDeploymentEnv.and.returnValue(DeploymentEnvironmentEnum.PROD); spyOn(console, 'info'); new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); expect(console.info).toHaveBeenCalledWith('Environment is prod.'); mockEnvironmentService.getDeploymentEnv.and.returnValue(DeploymentEnvironmentEnum.AAT); new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); expect(console.info).toHaveBeenCalledWith('Environment is aat.'); }); describe('enableCookies()', () => { it('should make a call to monitoringService', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, - mockedCryptoWrapper, mockEnvironmentService); + mockEnvironmentService); service.enableCookies(); expect(mockedMonitoringService.enableCookies).toHaveBeenCalled(); }); diff --git a/src/app/services/logger/logger.service.ts b/src/app/services/logger/logger.service.ts index 9a468722a2..7950dbf6e4 100644 --- a/src/app/services/logger/logger.service.ts +++ b/src/app/services/logger/logger.service.ts @@ -3,7 +3,6 @@ import { NGXLogger } from 'ngx-logger'; import { environment as config } from '../../../environments/environment'; import { UserInfo } from '../../models/user-details.model'; import { SessionStorageService } from '../session-storage/session-storage.service'; -import { CryptoWrapper } from './cryptoWrapper'; import { MonitoringService } from './monitoring.service'; import { EnvironmentService } from '../../shared/services/environment.service'; @@ -29,7 +28,6 @@ export class LoggerService implements ILoggerService { constructor(private readonly monitoringService: MonitoringService, private readonly ngxLogger: NGXLogger, private readonly sessionStorageService: SessionStorageService, - private readonly cryptoWrapper: CryptoWrapper, private readonly environmentService: EnvironmentService) { this.COOKIE_KEYS = { TOKEN: config.cookies.token, @@ -100,9 +98,9 @@ export class LoggerService implements ILoggerService { const userInfoStr = this.sessionStorageService.getItem('userDetails'); if (userInfoStr) { const userInfo: UserInfo = JSON.parse(userInfoStr); - if (userInfo && userInfo.email) { - const userIdEncrypted = this.cryptoWrapper.encrypt(userInfo.email); - return `User - ${userIdEncrypted.toString()}, Message - ${message}, Timestamp - ${Date.now()}`; + if (userInfo?.uid) { + const userId = userInfo.uid; + return `User - ${userId.toString()}, Message - ${message}, Timestamp - ${Date.now()}`; } } return `Message - ${message}, Timestamp - ${Date.now()}`; From 3f50bf12f8405f3a7adf931232ad9c19ab74827d Mon Sep 17 00:00:00 2001 From: Ritesh Dsouza Date: Tue, 4 Feb 2025 16:24:46 +0000 Subject: [PATCH 2/3] considerring id field over uid --- src/app/services/logger/logger.service.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/app/services/logger/logger.service.ts b/src/app/services/logger/logger.service.ts index 7950dbf6e4..29b1605a0e 100644 --- a/src/app/services/logger/logger.service.ts +++ b/src/app/services/logger/logger.service.ts @@ -98,10 +98,8 @@ export class LoggerService implements ILoggerService { const userInfoStr = this.sessionStorageService.getItem('userDetails'); if (userInfoStr) { const userInfo: UserInfo = JSON.parse(userInfoStr); - if (userInfo?.uid) { - const userId = userInfo.uid; - return `User - ${userId.toString()}, Message - ${message}, Timestamp - ${Date.now()}`; - } + const userId = userInfo.id ? userInfo.id : userInfo.uid; + return `User - ${userId.toString()}, Message - ${message}, Timestamp - ${Date.now()}`; } return `Message - ${message}, Timestamp - ${Date.now()}`; } From 6f5f7e65b7584658d6e8d46af3ef0f88d735639d Mon Sep 17 00:00:00 2001 From: Ritesh Dsouza Date: Tue, 4 Feb 2025 16:26:13 +0000 Subject: [PATCH 3/3] unit test fix --- src/app/services/logger/logger.service.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/services/logger/logger.service.spec.ts b/src/app/services/logger/logger.service.spec.ts index 4963e10854..4a3c0259eb 100644 --- a/src/app/services/logger/logger.service.spec.ts +++ b/src/app/services/logger/logger.service.spec.ts @@ -89,7 +89,7 @@ describe('Logger service', () => { const service = new LoggerService(mockedMonitoringService, mockedNgxLogger, mockedSessionStorageService, mockEnvironmentService); // slice off the last two characters of string to ensure no accidental discrepancies - const expectedMessage = `User - 123, Message - message, Timestamp - ${Date.now()}`.slice(0, -2); + const expectedMessage = `User - 1, Message - message, Timestamp - ${Date.now()}`.slice(0, -2); const returnedMessage = service.getMessage('message'); expect(returnedMessage).not.toBeNull(); expect(returnedMessage.slice(0, -2)).toBe(expectedMessage);