diff --git a/src/helpers/redact-strings-in-log-args.helper.test.ts b/src/helpers/redact-strings-in-log-args.helper.test.ts index 7e8386e9..bfb76ad0 100644 --- a/src/helpers/redact-strings-in-log-args.helper.test.ts +++ b/src/helpers/redact-strings-in-log-args.helper.test.ts @@ -8,12 +8,12 @@ describe('Redact errors helper', () => { describe('redactStringsInLogArgs', () => { const domain = valueGenerator.httpsUrl(); - const otherSensitivefield = valueGenerator.word(); - const message = `ConnectionError: Failed to connect to ${domain}, ${otherSensitivefield}`; + const otherSensitiveField = valueGenerator.word(); + const message = `ConnectionError: Failed to connect to ${domain}, ${otherSensitiveField}`; const redactedMessage = `ConnectionError: Failed to connect to [RedactedDomain], [Redacted]`; const redactStrings = [ { searchValue: domain, replaceValue: '[RedactedDomain]' }, - { searchValue: otherSensitivefield, replaceValue: '[Redacted]' }, + { searchValue: otherSensitiveField, replaceValue: '[Redacted]' }, ]; const args = [ { diff --git a/src/logging/console-logger-with-redact.test.ts b/src/logging/console-logger-with-redact.test.ts new file mode 100644 index 00000000..e3ff05a7 --- /dev/null +++ b/src/logging/console-logger-with-redact.test.ts @@ -0,0 +1,42 @@ +import { ConsoleLogger } from '@nestjs/common'; +import { RandomValueGenerator } from '@ukef-test/support/generator/random-value-generator'; + +import { ConsoleLoggerWithRedact } from './console-logger-with-redact'; + +const mockedSuperError = jest.spyOn(ConsoleLogger.prototype, 'error'); + +describe('ConsoleLoggerWithRedact', () => { + const valueGenerator = new RandomValueGenerator(); + const domain = valueGenerator.httpsUrl(); + const otherSensitiveField = valueGenerator.word(); + const message = `ConnectionError: Failed to connect to ${domain}, ${otherSensitiveField}`; + const redactedMessage = `ConnectionError: Failed to connect to [RedactedDomain], [Redacted]`; + const redactStrings = [ + { searchValue: domain, replaceValue: '[RedactedDomain]' }, + { searchValue: otherSensitiveField, replaceValue: '[Redacted]' }, + ]; + const logger = new ConsoleLoggerWithRedact(redactStrings); + + beforeEach(() => { + mockedSuperError.mockClear(); + }); + + it('redacts sensitive data in `message`', () => { + logger.error(message); + + expect(mockedSuperError).toHaveBeenCalledWith(redactedMessage, undefined, undefined); + }); + + it('redacts sensitive data in `message` and second parameter `stack`', () => { + logger.error(message, message); + + expect(mockedSuperError).toHaveBeenCalledWith(redactedMessage, redactedMessage, undefined); + }); + + it('redacts sensitive data in `message` and second parameter `stack`, also passes context', () => { + const context = valueGenerator.word(); + logger.error(message, message, context); + + expect(mockedSuperError).toHaveBeenCalledWith(redactedMessage, redactedMessage, context); + }); +});