Skip to content

Commit 1324d05

Browse files
committed
add unit test for unserializable object
1 parent 1fa0734 commit 1324d05

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/log-delivery.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,10 @@ export class ProviderLogHandler {
6969
// Add log level when not present
7070
if (
7171
args.length &&
72-
args[0].substring(0, logLevel.length).toUpperCase() !==
73-
logLevel
72+
(typeof args[0] !== 'string' ||
73+
args[0]
74+
.substring(0, logLevel.length)
75+
.toUpperCase() !== logLevel)
7476
) {
7577
args.unshift(logLevel);
7678
}

tests/lib/log-delivery.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,23 @@ describe('when delivering log', () => {
420420
expect(createLogStream).toHaveBeenCalledTimes(2);
421421
});
422422

423+
test('cloudwatch log with deserialize error', async () => {
424+
const mockToJson: jest.Mock = jest.fn().mockReturnValue(() => {
425+
throw new Error();
426+
});
427+
class Unserializable {
428+
message = 'msg';
429+
toJSON = mockToJson;
430+
}
431+
const unserializable = new Unserializable();
432+
providerLogHandler.logger.log(unserializable);
433+
expect(providerLogHandler['stack'].length).toBe(1);
434+
await providerLogHandler.processLogs();
435+
expect(providerLogHandler['stack'].length).toBe(0);
436+
expect(mockToJson).toHaveBeenCalledTimes(1);
437+
expect(putObject).toHaveBeenCalledTimes(0);
438+
});
439+
423440
test('s3 bucket create success', async () => {
424441
providerLogHandler['clientS3'] = new S3(AWS_CONFIG);
425442
await providerLogHandler['createBucket']();

0 commit comments

Comments
 (0)