@devrev/airsync-sdk 2.0.0-beta.3 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -11
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +2 -10
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +2 -7
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.js +15 -43
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/helpers.d.ts +0 -14
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +0 -36
- package/dist/http/{axios-client-internal.d.ts → client.d.ts} +1 -1
- package/dist/http/client.d.ts.map +1 -0
- package/dist/index.d.ts +22 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -28
- package/dist/logger/logger.d.ts +14 -0
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +55 -8
- package/dist/mappers/mappers.d.ts +9 -10
- package/dist/mappers/mappers.d.ts.map +1 -1
- package/dist/mappers/{mappers.interface.d.ts → mappers.interfaces.d.ts} +5 -5
- package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
- package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +3 -3
- package/dist/mappers/mappers.js +13 -9
- package/dist/multithreading/adapters/base-adapter.d.ts +23 -8
- package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -1
- package/dist/multithreading/adapters/base-adapter.js +41 -8
- package/dist/multithreading/adapters/extraction-adapter.d.ts +8 -9
- package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -1
- package/dist/multithreading/adapters/extraction-adapter.js +24 -26
- package/dist/multithreading/adapters/loading-adapter.d.ts +7 -7
- package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -1
- package/dist/multithreading/adapters/loading-adapter.js +53 -83
- package/dist/{common/control-protocol.d.ts → multithreading/emit.d.ts} +1 -1
- package/dist/multithreading/emit.d.ts.map +1 -0
- package/dist/{common/control-protocol.js → multithreading/emit.js} +3 -3
- package/dist/multithreading/process-task.d.ts.map +1 -1
- package/dist/multithreading/process-task.js +26 -9
- package/dist/multithreading/spawn/spawn.helpers.d.ts +23 -3
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.js +152 -2
- package/dist/multithreading/spawn/spawn.js +7 -7
- package/dist/multithreading/worker.js +1 -2
- package/dist/repo/repo.js +2 -2
- package/dist/state/base-state.d.ts +5 -5
- package/dist/state/base-state.d.ts.map +1 -1
- package/dist/state/base-state.js +7 -7
- package/dist/state/extraction-state.d.ts +9 -9
- package/dist/state/extraction-state.d.ts.map +1 -1
- package/dist/state/extraction-state.js +10 -10
- package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
- package/dist/{common → state}/install-initial-domain-mapping.js +4 -4
- package/dist/state/loading-state.d.ts +7 -8
- package/dist/state/loading-state.d.ts.map +1 -1
- package/dist/state/loading-state.js +6 -7
- package/dist/state/state.d.ts +4 -0
- package/dist/state/state.d.ts.map +1 -0
- package/dist/state/state.interfaces.d.ts +28 -18
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +13 -6
- package/dist/state/state.js +11 -0
- package/dist/{common → state}/time-value-resolver.d.ts +6 -7
- package/dist/state/time-value-resolver.d.ts.map +1 -0
- package/dist/{common → state}/time-value-resolver.js +9 -8
- package/dist/{common/test-utils.d.ts → testing/mock-event.d.ts} +1 -2
- package/dist/testing/mock-event.d.ts.map +1 -0
- package/dist/{common/test-utils.js → testing/mock-event.js} +14 -3
- package/dist/{mock-server → testing}/mock-server.d.ts +5 -0
- package/dist/testing/mock-server.d.ts.map +1 -0
- package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
- package/dist/{mock-server → testing}/mock-server.js +6 -1
- package/dist/types/errors.d.ts +9 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/extraction.d.ts +70 -15
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +4 -6
- package/dist/types/loading.d.ts +1 -2
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +0 -1
- package/dist/types/workers.d.ts +66 -23
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/uploader/uploader.d.ts +5 -4
- package/dist/uploader/uploader.d.ts.map +1 -1
- package/dist/uploader/uploader.interfaces.d.ts +1 -1
- package/dist/uploader/uploader.js +10 -10
- package/package.json +3 -3
- package/dist/airsync-sdk.d.ts +0 -2059
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -540
- package/dist/common/control-protocol.d.ts.map +0 -1
- package/dist/common/errors.d.ts +0 -6
- package/dist/common/errors.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
- package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.test.js +0 -211
- package/dist/common/test-utils.d.ts.map +0 -1
- package/dist/common/time-value-resolver.d.ts.map +0 -1
- package/dist/common/time-value-resolver.test.d.ts +0 -2
- package/dist/common/time-value-resolver.test.d.ts.map +0 -1
- package/dist/common/time-value-resolver.test.js +0 -268
- package/dist/http/axios-client-internal.d.ts.map +0 -1
- package/dist/http/axios-client-internal.test.d.ts +0 -2
- package/dist/http/axios-client-internal.test.d.ts.map +0 -1
- package/dist/http/axios-client-internal.test.js +0 -175
- package/dist/http/axios-client.d.ts +0 -27
- package/dist/http/axios-client.d.ts.map +0 -1
- package/dist/http/axios-client.js +0 -60
- package/dist/http/constants.d.ts +0 -4
- package/dist/http/constants.d.ts.map +0 -1
- package/dist/http/constants.js +0 -6
- package/dist/http/index.d.ts +0 -2
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js +0 -17
- package/dist/logger/logger.constants.d.ts +0 -6
- package/dist/logger/logger.constants.d.ts.map +0 -1
- package/dist/logger/logger.constants.js +0 -13
- package/dist/logger/logger.context.d.ts +0 -58
- package/dist/logger/logger.context.d.ts.map +0 -1
- package/dist/logger/logger.context.js +0 -86
- package/dist/logger/logger.test.d.ts +0 -2
- package/dist/logger/logger.test.d.ts.map +0 -1
- package/dist/logger/logger.test.js +0 -537
- package/dist/mappers/mappers.interface.d.ts.map +0 -1
- package/dist/mappers/mappers.test.d.ts +0 -2
- package/dist/mappers/mappers.test.d.ts.map +0 -1
- package/dist/mappers/mappers.test.js +0 -105
- package/dist/mock-server/mock-server.d.ts.map +0 -1
- package/dist/mock-server/mock-server.interfaces.d.ts.map +0 -1
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts +0 -2
- package/dist/multithreading/adapters/base-adapter.emit.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/base-adapter.emit.test.js +0 -403
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts +0 -2
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/extraction-adapter.artifacts.test.js +0 -175
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts +0 -2
- package/dist/multithreading/adapters/extraction-adapter.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/extraction-adapter.test.js +0 -789
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts +0 -2
- package/dist/multithreading/adapters/loading-adapter.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/loading-adapter.helpers.test.js +0 -514
- package/dist/multithreading/adapters/loading-adapter.test.d.ts +0 -2
- package/dist/multithreading/adapters/loading-adapter.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/loading-adapter.test.js +0 -589
- package/dist/multithreading/adapters/serialization.test.d.ts +0 -2
- package/dist/multithreading/adapters/serialization.test.d.ts.map +0 -1
- package/dist/multithreading/adapters/serialization.test.js +0 -71
- package/dist/multithreading/create-worker.test.d.ts +0 -2
- package/dist/multithreading/create-worker.test.d.ts.map +0 -1
- package/dist/multithreading/create-worker.test.js +0 -108
- package/dist/multithreading/process-task.test.d.ts +0 -2
- package/dist/multithreading/process-task.test.d.ts.map +0 -1
- package/dist/multithreading/process-task.test.js +0 -146
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
- package/dist/multithreading/spawn/spawn.test.d.ts +0 -2
- package/dist/multithreading/spawn/spawn.test.d.ts.map +0 -1
- package/dist/multithreading/spawn/spawn.test.js +0 -232
- package/dist/repo/repo.test.d.ts +0 -2
- package/dist/repo/repo.test.d.ts.map +0 -1
- package/dist/repo/repo.test.js +0 -184
- package/dist/state/state.extract-window.test.d.ts +0 -2
- package/dist/state/state.extract-window.test.d.ts.map +0 -1
- package/dist/state/state.extract-window.test.js +0 -163
- package/dist/state/state.pending-boundaries.test.d.ts +0 -2
- package/dist/state/state.pending-boundaries.test.d.ts.map +0 -1
- package/dist/state/state.pending-boundaries.test.js +0 -189
- package/dist/state/state.post-state.test.d.ts +0 -2
- package/dist/state/state.post-state.test.d.ts.map +0 -1
- package/dist/state/state.post-state.test.js +0 -78
- package/dist/state/state.test.d.ts +0 -2
- package/dist/state/state.test.d.ts.map +0 -1
- package/dist/state/state.test.js +0 -271
- package/dist/state/state.time-value-resolution.test.d.ts +0 -2
- package/dist/state/state.time-value-resolution.test.d.ts.map +0 -1
- package/dist/state/state.time-value-resolution.test.js +0 -175
- package/dist/tsdoc-metadata.json +0 -11
- package/dist/types/extraction.test.d.ts +0 -2
- package/dist/types/extraction.test.d.ts.map +0 -1
- package/dist/types/extraction.test.js +0 -96
- package/dist/types/index.d.ts +0 -10
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -21
- package/dist/uploader/uploader.helpers.test.d.ts +0 -2
- package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
- package/dist/uploader/uploader.helpers.test.js +0 -256
- package/dist/uploader/uploader.test.d.ts +0 -2
- package/dist/uploader/uploader.test.d.ts.map +0 -1
- package/dist/uploader/uploader.test.js +0 -601
- /package/dist/http/{axios-client-internal.js → client.js} +0 -0
- /package/dist/{common → state}/install-initial-domain-mapping.d.ts +0 -0
- /package/dist/{mock-server → testing}/mock-server.interfaces.d.ts +0 -0
- /package/dist/{mock-server → testing}/mock-server.interfaces.js +0 -0
- /package/dist/{common → types}/errors.js +0 -0
|
@@ -1,537 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const node_util_1 = require("node:util");
|
|
4
|
-
const constants_1 = require("../common/constants");
|
|
5
|
-
const jest_setup_1 = require("../tests/jest.setup");
|
|
6
|
-
const test_utils_1 = require("../common/test-utils");
|
|
7
|
-
const extraction_1 = require("../types/extraction");
|
|
8
|
-
const logger_1 = require("./logger");
|
|
9
|
-
const logger_constants_1 = require("./logger.constants");
|
|
10
|
-
// Mock console methods
|
|
11
|
-
const mockConsoleInfo = jest.spyOn(console, 'info').mockImplementation();
|
|
12
|
-
const mockConsoleWarn = jest.spyOn(console, 'warn').mockImplementation();
|
|
13
|
-
const mockConsoleError = jest.spyOn(console, 'error').mockImplementation();
|
|
14
|
-
// Mock worker_threads for main-thread specific behavior but keep actual Worker implementation
|
|
15
|
-
jest.mock('node:worker_threads', () => {
|
|
16
|
-
const actual = jest.requireActual('node:worker_threads');
|
|
17
|
-
return Object.assign(Object.assign({}, actual), { isMainThread: true, parentPort: null });
|
|
18
|
-
});
|
|
19
|
-
describe(logger_1.Logger.name, () => {
|
|
20
|
-
let mockEvent;
|
|
21
|
-
let mockOptions;
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
jest.clearAllMocks();
|
|
24
|
-
mockEvent = (0, test_utils_1.createMockEvent)(jest_setup_1.mockServer.baseUrl, {
|
|
25
|
-
payload: { event_type: extraction_1.EventType.StartExtractingData },
|
|
26
|
-
});
|
|
27
|
-
mockOptions = {
|
|
28
|
-
isLocalDevelopment: false,
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
afterAll(() => {
|
|
32
|
-
jest.restoreAllMocks();
|
|
33
|
-
});
|
|
34
|
-
it('should initialize with event context and SDK version in tags', () => {
|
|
35
|
-
// Arrange & Act
|
|
36
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
37
|
-
// Assert
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
-
const tags = logger.tags;
|
|
40
|
-
expect(tags).toEqual(Object.assign(Object.assign({}, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, is_sdk_log: true }));
|
|
41
|
-
});
|
|
42
|
-
it('should log string message as JSON with event context tags in production mode', () => {
|
|
43
|
-
// Arrange
|
|
44
|
-
const message = 'Worker is online. Started processing the task.';
|
|
45
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
46
|
-
// Act
|
|
47
|
-
logger.info(message);
|
|
48
|
-
// Assert
|
|
49
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, is_sdk_log: true })));
|
|
50
|
-
});
|
|
51
|
-
it('should log object message using inspect with proper formatting in production mode', () => {
|
|
52
|
-
// Arrange
|
|
53
|
-
const data = { id: 123, name: 'test' };
|
|
54
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
55
|
-
const expectedMessage = (0, node_util_1.inspect)(data, logger_constants_1.INSPECT_OPTIONS);
|
|
56
|
-
// Act
|
|
57
|
-
logger.info(data);
|
|
58
|
-
// Assert
|
|
59
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: expectedMessage }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, is_sdk_log: true })));
|
|
60
|
-
});
|
|
61
|
-
it('should join multiple arguments with space when logging in production mode', () => {
|
|
62
|
-
// Arrange
|
|
63
|
-
const text = 'Successfully fetched';
|
|
64
|
-
const data = { count: 42 };
|
|
65
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
66
|
-
const expectedDataMessage = (0, node_util_1.inspect)(data, logger_constants_1.INSPECT_OPTIONS);
|
|
67
|
-
// Act
|
|
68
|
-
logger.info(text, data);
|
|
69
|
-
// Assert
|
|
70
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: `${text} ${expectedDataMessage}` }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, is_sdk_log: true })));
|
|
71
|
-
});
|
|
72
|
-
it('should log mixed string and object arguments joined with spaces in production mode', () => {
|
|
73
|
-
// Arrange
|
|
74
|
-
const text1 = 'Processing';
|
|
75
|
-
const data = { id: 123 };
|
|
76
|
-
const text2 = 'completed';
|
|
77
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
78
|
-
const expectedDataMessage = (0, node_util_1.inspect)(data, logger_constants_1.INSPECT_OPTIONS);
|
|
79
|
-
// Act
|
|
80
|
-
logger.info(text1, data, text2);
|
|
81
|
-
// Assert
|
|
82
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(JSON.stringify(Object.assign(Object.assign({ message: `${text1} ${expectedDataMessage} ${text2}` }, mockEvent.payload.event_context), { sdk_version: constants_1.LIBRARY_VERSION, is_sdk_log: true })));
|
|
83
|
-
});
|
|
84
|
-
it('should log directly without JSON wrapping in local development mode', () => {
|
|
85
|
-
// Arrange
|
|
86
|
-
const message = 'Test message';
|
|
87
|
-
const data = { test: true };
|
|
88
|
-
mockOptions.isLocalDevelopment = true;
|
|
89
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
90
|
-
const expectedDataMessage = (0, node_util_1.inspect)(data, logger_constants_1.INSPECT_OPTIONS);
|
|
91
|
-
// Act
|
|
92
|
-
logger.info(message, data);
|
|
93
|
-
// Assert
|
|
94
|
-
expect(mockConsoleInfo).toHaveBeenCalledWith(`${message} ${expectedDataMessage}`);
|
|
95
|
-
});
|
|
96
|
-
it('should truncate long strings and show remaining character count', () => {
|
|
97
|
-
// Arrange
|
|
98
|
-
const longString = 'C'.repeat(20000);
|
|
99
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
100
|
-
const expectedTruncatedMessage = `${longString.substring(0, logger_constants_1.MAX_LOG_STRING_LENGTH)}... ${20000 - logger_constants_1.MAX_LOG_STRING_LENGTH} more characters`;
|
|
101
|
-
// Act
|
|
102
|
-
logger.info(longString);
|
|
103
|
-
// Assert
|
|
104
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
105
|
-
const logObject = JSON.parse(callArgs);
|
|
106
|
-
expect(logObject.message).toBe(expectedTruncatedMessage);
|
|
107
|
-
});
|
|
108
|
-
it('should not truncate strings shorter than maximum length', () => {
|
|
109
|
-
// Arrange
|
|
110
|
-
const shortString = 'Short message';
|
|
111
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
112
|
-
// Act
|
|
113
|
-
logger.info(shortString);
|
|
114
|
-
// Assert
|
|
115
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
116
|
-
const logObject = JSON.parse(callArgs);
|
|
117
|
-
expect(logObject.message).toBe(shortString);
|
|
118
|
-
});
|
|
119
|
-
it('[edge] should not truncate message exactly at maximum length', () => {
|
|
120
|
-
// Arrange
|
|
121
|
-
const messageAtLimit = 'A'.repeat(logger_constants_1.MAX_LOG_STRING_LENGTH);
|
|
122
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
123
|
-
// Act
|
|
124
|
-
logger.info(messageAtLimit);
|
|
125
|
-
// Assert
|
|
126
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
127
|
-
const logObject = JSON.parse(callArgs);
|
|
128
|
-
expect(logObject.message).toBe(messageAtLimit);
|
|
129
|
-
expect(logObject.message.length).toBe(logger_constants_1.MAX_LOG_STRING_LENGTH);
|
|
130
|
-
});
|
|
131
|
-
it('[edge] should truncate message one character over maximum length', () => {
|
|
132
|
-
// Arrange
|
|
133
|
-
const messageOverLimit = 'B'.repeat(logger_constants_1.MAX_LOG_STRING_LENGTH + 1);
|
|
134
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
135
|
-
const expectedMessage = `${messageOverLimit.substring(0, logger_constants_1.MAX_LOG_STRING_LENGTH)}... 1 more characters`;
|
|
136
|
-
// Act
|
|
137
|
-
logger.info(messageOverLimit);
|
|
138
|
-
// Assert
|
|
139
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
140
|
-
const logObject = JSON.parse(callArgs);
|
|
141
|
-
expect(logObject.message).toBe(expectedMessage);
|
|
142
|
-
});
|
|
143
|
-
it('[edge] should handle empty string without truncation', () => {
|
|
144
|
-
// Arrange
|
|
145
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
146
|
-
// Act
|
|
147
|
-
logger.info('');
|
|
148
|
-
// Assert
|
|
149
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
150
|
-
const logObject = JSON.parse(callArgs);
|
|
151
|
-
expect(logObject.message).toBe('');
|
|
152
|
-
});
|
|
153
|
-
it('[edge] should show correct character count for very long messages', () => {
|
|
154
|
-
// Arrange
|
|
155
|
-
const veryLongString = 'X'.repeat(50000);
|
|
156
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
157
|
-
const expectedCharactersRemaining = 50000 - logger_constants_1.MAX_LOG_STRING_LENGTH;
|
|
158
|
-
const expectedMessage = `${veryLongString.substring(0, logger_constants_1.MAX_LOG_STRING_LENGTH)}... ${expectedCharactersRemaining} more characters`;
|
|
159
|
-
// Act
|
|
160
|
-
logger.info(veryLongString);
|
|
161
|
-
// Assert
|
|
162
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
163
|
-
const logObject = JSON.parse(callArgs);
|
|
164
|
-
expect(logObject.message).toBe(expectedMessage);
|
|
165
|
-
expect(logObject.message).toContain('40000 more characters');
|
|
166
|
-
});
|
|
167
|
-
it('should stringify string arguments and join them with spaces', () => {
|
|
168
|
-
// Arrange
|
|
169
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
170
|
-
// Act
|
|
171
|
-
logger.info('Message 1', 'Message 2');
|
|
172
|
-
// Assert
|
|
173
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
174
|
-
const logObject = JSON.parse(callArgs);
|
|
175
|
-
expect(logObject.message).toBe('Message 1 Message 2');
|
|
176
|
-
});
|
|
177
|
-
it('should stringify object arguments using util.inspect', () => {
|
|
178
|
-
// Arrange
|
|
179
|
-
const data = { id: 123 };
|
|
180
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
181
|
-
const expectedMessage = (0, node_util_1.inspect)(data, logger_constants_1.INSPECT_OPTIONS);
|
|
182
|
-
// Act
|
|
183
|
-
logger.info(data);
|
|
184
|
-
// Assert
|
|
185
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
186
|
-
const logObject = JSON.parse(callArgs);
|
|
187
|
-
expect(logObject.message).toBe(expectedMessage);
|
|
188
|
-
});
|
|
189
|
-
it('should call info method for log level', () => {
|
|
190
|
-
// Arrange
|
|
191
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
192
|
-
// Act
|
|
193
|
-
logger.log('test log');
|
|
194
|
-
// Assert
|
|
195
|
-
expect(mockConsoleInfo).toHaveBeenCalledTimes(1);
|
|
196
|
-
});
|
|
197
|
-
it('should call info method for info level', () => {
|
|
198
|
-
// Arrange
|
|
199
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
200
|
-
// Act
|
|
201
|
-
logger.info('test info');
|
|
202
|
-
// Assert
|
|
203
|
-
expect(mockConsoleInfo).toHaveBeenCalledTimes(1);
|
|
204
|
-
});
|
|
205
|
-
it('should call warn method for warn level', () => {
|
|
206
|
-
// Arrange
|
|
207
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
208
|
-
// Act
|
|
209
|
-
logger.warn('test warning');
|
|
210
|
-
// Assert
|
|
211
|
-
expect(mockConsoleWarn).toHaveBeenCalledTimes(1);
|
|
212
|
-
});
|
|
213
|
-
it('should call error method for error level', () => {
|
|
214
|
-
// Arrange
|
|
215
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
216
|
-
// Act
|
|
217
|
-
logger.error('test error');
|
|
218
|
-
// Assert
|
|
219
|
-
expect(mockConsoleError).toHaveBeenCalledTimes(1);
|
|
220
|
-
});
|
|
221
|
-
it('[edge] should log empty string as valid message with tags', () => {
|
|
222
|
-
// Arrange
|
|
223
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
224
|
-
// Act
|
|
225
|
-
logger.info('');
|
|
226
|
-
// Assert
|
|
227
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
228
|
-
const logObject = JSON.parse(callArgs);
|
|
229
|
-
expect(logObject.message).toBe('');
|
|
230
|
-
expect(logObject.sdk_version).toBe(constants_1.LIBRARY_VERSION);
|
|
231
|
-
expect(logObject.is_sdk_log).toBe(true);
|
|
232
|
-
});
|
|
233
|
-
it('[edge] should handle null and undefined values in log arguments', () => {
|
|
234
|
-
// Arrange
|
|
235
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
236
|
-
// Act
|
|
237
|
-
logger.info('test', null, undefined);
|
|
238
|
-
// Assert
|
|
239
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
240
|
-
const logObject = JSON.parse(callArgs);
|
|
241
|
-
expect(logObject.message).toBe('test null undefined');
|
|
242
|
-
});
|
|
243
|
-
it('[edge] should handle deeply nested objects with inspect', () => {
|
|
244
|
-
// Arrange
|
|
245
|
-
const complexObject = {
|
|
246
|
-
level1: {
|
|
247
|
-
level2: {
|
|
248
|
-
array: [1, 2, 3],
|
|
249
|
-
string: 'nested',
|
|
250
|
-
},
|
|
251
|
-
},
|
|
252
|
-
};
|
|
253
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
254
|
-
const expectedMessage = (0, node_util_1.inspect)(complexObject, logger_constants_1.INSPECT_OPTIONS);
|
|
255
|
-
// Act
|
|
256
|
-
logger.info(complexObject);
|
|
257
|
-
// Assert
|
|
258
|
-
const callArgs = mockConsoleInfo.mock.calls[0][0];
|
|
259
|
-
const logObject = JSON.parse(callArgs);
|
|
260
|
-
expect(logObject.message).toBe(expectedMessage);
|
|
261
|
-
});
|
|
262
|
-
it('[edge] should handle circular references in objects', () => {
|
|
263
|
-
// Arrange
|
|
264
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
265
|
-
const circularObject = { name: 'test' };
|
|
266
|
-
circularObject.self = circularObject;
|
|
267
|
-
const logger = new logger_1.Logger({ event: mockEvent, options: mockOptions });
|
|
268
|
-
// Act & Assert
|
|
269
|
-
expect(() => logger.info(circularObject)).not.toThrow();
|
|
270
|
-
expect(mockConsoleInfo).toHaveBeenCalledTimes(1);
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
describe(logger_1.getPrintableState.name, () => {
|
|
274
|
-
it('should convert arrays to summary objects with type, length, and boundary items', () => {
|
|
275
|
-
// Arrange
|
|
276
|
-
const state = {
|
|
277
|
-
test_key: 'test_value',
|
|
278
|
-
big_array: Array.from({ length: 1000 }, (_, index) => index),
|
|
279
|
-
};
|
|
280
|
-
// Act
|
|
281
|
-
const printableState = (0, logger_1.getPrintableState)(state);
|
|
282
|
-
// Assert
|
|
283
|
-
expect(printableState).toEqual({
|
|
284
|
-
test_key: 'test_value',
|
|
285
|
-
big_array: {
|
|
286
|
-
type: 'array',
|
|
287
|
-
length: 1000,
|
|
288
|
-
firstItem: 0,
|
|
289
|
-
lastItem: 999,
|
|
290
|
-
},
|
|
291
|
-
});
|
|
292
|
-
});
|
|
293
|
-
it('should recursively process nested objects and arrays', () => {
|
|
294
|
-
// Arrange
|
|
295
|
-
const state = {
|
|
296
|
-
test_key: 'test_value',
|
|
297
|
-
nested_object: {
|
|
298
|
-
nested_key: 'nested_value',
|
|
299
|
-
nested_array: Array.from({ length: 1000 }, (_, index) => index),
|
|
300
|
-
},
|
|
301
|
-
};
|
|
302
|
-
// Act
|
|
303
|
-
const printableState = (0, logger_1.getPrintableState)(state);
|
|
304
|
-
// Assert
|
|
305
|
-
expect(printableState).toEqual({
|
|
306
|
-
test_key: 'test_value',
|
|
307
|
-
nested_object: {
|
|
308
|
-
nested_key: 'nested_value',
|
|
309
|
-
nested_array: {
|
|
310
|
-
type: 'array',
|
|
311
|
-
length: 1000,
|
|
312
|
-
firstItem: 0,
|
|
313
|
-
lastItem: 999,
|
|
314
|
-
},
|
|
315
|
-
},
|
|
316
|
-
});
|
|
317
|
-
});
|
|
318
|
-
it('should preserve primitive values without modification', () => {
|
|
319
|
-
// Arrange
|
|
320
|
-
const state = {
|
|
321
|
-
string_key: 'string_value',
|
|
322
|
-
number_key: 42,
|
|
323
|
-
boolean_key: true,
|
|
324
|
-
null_key: null,
|
|
325
|
-
};
|
|
326
|
-
// Act
|
|
327
|
-
const printableState = (0, logger_1.getPrintableState)(state);
|
|
328
|
-
// Assert
|
|
329
|
-
expect(printableState).toEqual(state);
|
|
330
|
-
});
|
|
331
|
-
it('[edge] should handle empty arrays with no first or last items', () => {
|
|
332
|
-
// Arrange
|
|
333
|
-
const state = {
|
|
334
|
-
empty_array: [],
|
|
335
|
-
};
|
|
336
|
-
// Act
|
|
337
|
-
const printableState = (0, logger_1.getPrintableState)(state);
|
|
338
|
-
// Assert
|
|
339
|
-
expect(printableState).toEqual({
|
|
340
|
-
empty_array: {
|
|
341
|
-
type: 'array',
|
|
342
|
-
length: 0,
|
|
343
|
-
firstItem: undefined,
|
|
344
|
-
lastItem: undefined,
|
|
345
|
-
},
|
|
346
|
-
});
|
|
347
|
-
});
|
|
348
|
-
it('[edge] should handle single-item arrays with same first and last item', () => {
|
|
349
|
-
// Arrange
|
|
350
|
-
const state = {
|
|
351
|
-
single_item_array: [42],
|
|
352
|
-
};
|
|
353
|
-
// Act
|
|
354
|
-
const printableState = (0, logger_1.getPrintableState)(state);
|
|
355
|
-
// Assert
|
|
356
|
-
expect(printableState).toEqual({
|
|
357
|
-
single_item_array: {
|
|
358
|
-
type: 'array',
|
|
359
|
-
length: 1,
|
|
360
|
-
firstItem: 42,
|
|
361
|
-
lastItem: undefined,
|
|
362
|
-
},
|
|
363
|
-
});
|
|
364
|
-
});
|
|
365
|
-
});
|
|
366
|
-
describe(logger_1.serializeError.name, () => {
|
|
367
|
-
it('should return the error message string for a standard Error', () => {
|
|
368
|
-
const error = new Error('something went wrong');
|
|
369
|
-
expect((0, logger_1.serializeError)(error)).toBe('something went wrong');
|
|
370
|
-
});
|
|
371
|
-
it('should include error name for named error types', () => {
|
|
372
|
-
const typeError = new TypeError('invalid type');
|
|
373
|
-
expect((0, logger_1.serializeError)(typeError)).toBe('TypeError: invalid type');
|
|
374
|
-
const rangeError = new RangeError('out of range');
|
|
375
|
-
expect((0, logger_1.serializeError)(rangeError)).toBe('RangeError: out of range');
|
|
376
|
-
});
|
|
377
|
-
it('should return a JSON string for an Axios error', () => {
|
|
378
|
-
const axiosError = {
|
|
379
|
-
isAxiosError: true,
|
|
380
|
-
response: {
|
|
381
|
-
status: 500,
|
|
382
|
-
statusText: 'Internal Server Error',
|
|
383
|
-
data: 'fail',
|
|
384
|
-
headers: {},
|
|
385
|
-
},
|
|
386
|
-
config: { method: 'GET', url: '/api/test', params: undefined },
|
|
387
|
-
};
|
|
388
|
-
const result = (0, logger_1.serializeError)(axiosError);
|
|
389
|
-
expect(typeof result).toBe('string');
|
|
390
|
-
const parsed = JSON.parse(result);
|
|
391
|
-
expect(parsed.isAxiosError).toBe(true);
|
|
392
|
-
expect(parsed.response.status).toBe(500);
|
|
393
|
-
});
|
|
394
|
-
it('should return a JSON string for a plain object', () => {
|
|
395
|
-
const obj = { code: 42, detail: 'bad input' };
|
|
396
|
-
const result = (0, logger_1.serializeError)(obj);
|
|
397
|
-
expect(typeof result).toBe('string');
|
|
398
|
-
expect(JSON.parse(result)).toEqual(obj);
|
|
399
|
-
});
|
|
400
|
-
it('should return a JSON string for a string value', () => {
|
|
401
|
-
expect((0, logger_1.serializeError)('raw string error')).toBe('raw string error');
|
|
402
|
-
});
|
|
403
|
-
it('[edge] should handle null without throwing', () => {
|
|
404
|
-
const result = (0, logger_1.serializeError)(null);
|
|
405
|
-
expect(typeof result).toBe('string');
|
|
406
|
-
expect(result).toBe('null');
|
|
407
|
-
});
|
|
408
|
-
it('[edge] should handle undefined without throwing', () => {
|
|
409
|
-
const result = (0, logger_1.serializeError)(undefined);
|
|
410
|
-
expect(typeof result).toBe('string');
|
|
411
|
-
});
|
|
412
|
-
it('[edge] should fall back to extracting own properties for objects that stringify to empty object', () => {
|
|
413
|
-
// Simulate an error-like object with non-enumerable properties
|
|
414
|
-
// (e.g. cross-realm Error that fails instanceof check)
|
|
415
|
-
const errorLike = Object.create(null);
|
|
416
|
-
Object.defineProperty(errorLike, 'message', {
|
|
417
|
-
value: 'cross-realm error',
|
|
418
|
-
enumerable: false,
|
|
419
|
-
});
|
|
420
|
-
const result = (0, logger_1.serializeError)(errorLike);
|
|
421
|
-
expect(typeof result).toBe('string');
|
|
422
|
-
// Should not be '{}' — that's the whole point of the fix
|
|
423
|
-
expect(result).not.toBe('{}');
|
|
424
|
-
// Should have extracted the non-enumerable 'message' property
|
|
425
|
-
expect(result).toContain('cross-realm error');
|
|
426
|
-
});
|
|
427
|
-
});
|
|
428
|
-
describe(logger_1.serializeAxiosError.name, () => {
|
|
429
|
-
it('should serialize Axios error with response data', () => {
|
|
430
|
-
// Arrange
|
|
431
|
-
const error = {
|
|
432
|
-
response: {
|
|
433
|
-
status: 500,
|
|
434
|
-
statusText: 'Internal Server Error',
|
|
435
|
-
data: 'Internal server error',
|
|
436
|
-
headers: { 'content-type': 'application/json' },
|
|
437
|
-
},
|
|
438
|
-
config: {
|
|
439
|
-
method: 'GET',
|
|
440
|
-
url: '/api/test',
|
|
441
|
-
params: { id: 123 },
|
|
442
|
-
},
|
|
443
|
-
};
|
|
444
|
-
// Act
|
|
445
|
-
const formattedError = (0, logger_1.serializeAxiosError)(error);
|
|
446
|
-
// Assert
|
|
447
|
-
expect(formattedError).toEqual({
|
|
448
|
-
config: {
|
|
449
|
-
method: 'GET',
|
|
450
|
-
params: { id: 123 },
|
|
451
|
-
url: '/api/test',
|
|
452
|
-
},
|
|
453
|
-
isAxiosError: true,
|
|
454
|
-
isCorsOrNoNetworkError: false,
|
|
455
|
-
response: {
|
|
456
|
-
data: 'Internal server error',
|
|
457
|
-
headers: { 'content-type': 'application/json' },
|
|
458
|
-
status: 500,
|
|
459
|
-
statusText: 'Internal Server Error',
|
|
460
|
-
},
|
|
461
|
-
});
|
|
462
|
-
});
|
|
463
|
-
it('should serialize Axios error without response as CORS or network error', () => {
|
|
464
|
-
// Arrange
|
|
465
|
-
const error = {
|
|
466
|
-
code: 'ERR_NETWORK',
|
|
467
|
-
message: 'Network Error',
|
|
468
|
-
config: {
|
|
469
|
-
method: 'POST',
|
|
470
|
-
url: '/api/create',
|
|
471
|
-
},
|
|
472
|
-
};
|
|
473
|
-
// Act
|
|
474
|
-
const formattedError = (0, logger_1.serializeAxiosError)(error);
|
|
475
|
-
// Assert
|
|
476
|
-
expect(formattedError).toEqual({
|
|
477
|
-
config: {
|
|
478
|
-
method: 'POST',
|
|
479
|
-
params: undefined,
|
|
480
|
-
url: '/api/create',
|
|
481
|
-
},
|
|
482
|
-
isAxiosError: true,
|
|
483
|
-
isCorsOrNoNetworkError: true,
|
|
484
|
-
code: 'ERR_NETWORK',
|
|
485
|
-
message: 'Network Error',
|
|
486
|
-
});
|
|
487
|
-
});
|
|
488
|
-
it('[edge] should handle Axios error with minimal config information', () => {
|
|
489
|
-
// Arrange
|
|
490
|
-
const error = {
|
|
491
|
-
response: {
|
|
492
|
-
status: 404,
|
|
493
|
-
data: 'Not Found',
|
|
494
|
-
},
|
|
495
|
-
config: {},
|
|
496
|
-
};
|
|
497
|
-
// Act
|
|
498
|
-
const formattedError = (0, logger_1.serializeAxiosError)(error);
|
|
499
|
-
// Assert
|
|
500
|
-
expect(formattedError).toEqual({
|
|
501
|
-
config: {
|
|
502
|
-
method: undefined,
|
|
503
|
-
params: undefined,
|
|
504
|
-
url: undefined,
|
|
505
|
-
},
|
|
506
|
-
isAxiosError: true,
|
|
507
|
-
isCorsOrNoNetworkError: false,
|
|
508
|
-
response: {
|
|
509
|
-
data: 'Not Found',
|
|
510
|
-
headers: undefined,
|
|
511
|
-
status: 404,
|
|
512
|
-
statusText: undefined,
|
|
513
|
-
},
|
|
514
|
-
});
|
|
515
|
-
});
|
|
516
|
-
it('[edge] should handle Axios error with no config', () => {
|
|
517
|
-
// Arrange
|
|
518
|
-
const error = {
|
|
519
|
-
code: 'ERR_TIMEOUT',
|
|
520
|
-
message: 'Request timeout',
|
|
521
|
-
};
|
|
522
|
-
// Act
|
|
523
|
-
const formattedError = (0, logger_1.serializeAxiosError)(error);
|
|
524
|
-
// Assert
|
|
525
|
-
expect(formattedError).toEqual({
|
|
526
|
-
config: {
|
|
527
|
-
method: undefined,
|
|
528
|
-
params: undefined,
|
|
529
|
-
url: undefined,
|
|
530
|
-
},
|
|
531
|
-
isAxiosError: true,
|
|
532
|
-
isCorsOrNoNetworkError: true,
|
|
533
|
-
code: 'ERR_TIMEOUT',
|
|
534
|
-
message: 'Request timeout',
|
|
535
|
-
});
|
|
536
|
-
});
|
|
537
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mappers.interface.d.ts","sourceRoot":"","sources":["../../src/mappers/mappers.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mappers.test.d.ts","sourceRoot":"","sources":["../../src/mappers/mappers.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const test_utils_1 = require("../common/test-utils");
|
|
4
|
-
const axios_client_internal_1 = require("../http/axios-client-internal");
|
|
5
|
-
const extraction_1 = require("../types/extraction");
|
|
6
|
-
const mappers_1 = require("./mappers");
|
|
7
|
-
const mappers_interface_1 = require("./mappers.interface");
|
|
8
|
-
// Mock the axios client
|
|
9
|
-
jest.mock('../http/axios-client-internal');
|
|
10
|
-
const mockAxiosClient = axios_client_internal_1.axiosClient;
|
|
11
|
-
describe(mappers_1.Mappers.name, () => {
|
|
12
|
-
const apiToken = 'test_service_token';
|
|
13
|
-
const syncUnit = 'test_sync_unit';
|
|
14
|
-
const targetId = 'test_target_id';
|
|
15
|
-
const externalId = 'test_external_id';
|
|
16
|
-
const id = 'test_id';
|
|
17
|
-
const externalIds = ['test_external_id'];
|
|
18
|
-
const targets = ['test_target_id'];
|
|
19
|
-
const mockEvent = (0, test_utils_1.createMockEvent)(test_utils_1.MOCK_SERVER_DEFAULT_URL, {
|
|
20
|
-
context: {
|
|
21
|
-
secrets: { service_account_token: apiToken },
|
|
22
|
-
},
|
|
23
|
-
payload: { event_type: extraction_1.EventType.StartExtractingData },
|
|
24
|
-
});
|
|
25
|
-
const mappers = new mappers_1.Mappers({ event: mockEvent });
|
|
26
|
-
beforeEach(() => {
|
|
27
|
-
jest.clearAllMocks();
|
|
28
|
-
});
|
|
29
|
-
it(`should call ${mappers.getByTargetId.name} with correct endpoint, headers and params`, async () => {
|
|
30
|
-
// Arrange
|
|
31
|
-
const params = {
|
|
32
|
-
sync_unit: syncUnit,
|
|
33
|
-
target: targetId,
|
|
34
|
-
};
|
|
35
|
-
mockAxiosClient.get.mockResolvedValue({ data: {} });
|
|
36
|
-
// Act
|
|
37
|
-
await mappers.getByTargetId(params);
|
|
38
|
-
// Assert
|
|
39
|
-
expect(mockAxiosClient.get).toHaveBeenCalledWith(`${test_utils_1.MOCK_SERVER_DEFAULT_URL}/internal/airdrop.sync-mapper-record.get-by-target`, {
|
|
40
|
-
headers: {
|
|
41
|
-
Authorization: apiToken,
|
|
42
|
-
},
|
|
43
|
-
params: { sync_unit: syncUnit, target: targetId },
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
it(`should call ${mappers.getByExternalId.name} with correct endpoint, headers and params`, async () => {
|
|
47
|
-
// Arrange
|
|
48
|
-
const params = {
|
|
49
|
-
sync_unit: syncUnit,
|
|
50
|
-
external_id: externalId,
|
|
51
|
-
target_type: mappers_interface_1.SyncMapperRecordTargetType.USER,
|
|
52
|
-
};
|
|
53
|
-
mockAxiosClient.get.mockResolvedValue({ data: {} });
|
|
54
|
-
// Act
|
|
55
|
-
await mappers.getByExternalId(params);
|
|
56
|
-
// Assert
|
|
57
|
-
expect(mockAxiosClient.get).toHaveBeenCalledWith(`${test_utils_1.MOCK_SERVER_DEFAULT_URL}/internal/airdrop.sync-mapper-record.get-by-external-id`, {
|
|
58
|
-
headers: {
|
|
59
|
-
Authorization: apiToken,
|
|
60
|
-
},
|
|
61
|
-
params: {
|
|
62
|
-
sync_unit: syncUnit,
|
|
63
|
-
external_id: externalId,
|
|
64
|
-
target_type: mappers_interface_1.SyncMapperRecordTargetType.USER,
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
it(`should call ${mappers.create.name} with correct endpoint, headers and data`, async () => {
|
|
69
|
-
// Arrange
|
|
70
|
-
const params = {
|
|
71
|
-
sync_unit: syncUnit,
|
|
72
|
-
external_ids: externalIds,
|
|
73
|
-
targets: targets,
|
|
74
|
-
status: mappers_interface_1.SyncMapperRecordStatus.OPERATIONAL,
|
|
75
|
-
};
|
|
76
|
-
mockAxiosClient.post.mockResolvedValue({ data: {} });
|
|
77
|
-
// Act
|
|
78
|
-
await mappers.create(params);
|
|
79
|
-
// Assert
|
|
80
|
-
expect(mockAxiosClient.post).toHaveBeenCalledWith(`${test_utils_1.MOCK_SERVER_DEFAULT_URL}/internal/airdrop.sync-mapper-record.create`, params, {
|
|
81
|
-
headers: {
|
|
82
|
-
Authorization: apiToken,
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
it(`should call ${mappers.update.name} with correct endpoint, headers and data`, async () => {
|
|
87
|
-
// Arrange
|
|
88
|
-
const params = {
|
|
89
|
-
id: id,
|
|
90
|
-
sync_unit: syncUnit,
|
|
91
|
-
external_ids: { add: externalIds },
|
|
92
|
-
targets: { add: targets },
|
|
93
|
-
status: mappers_interface_1.SyncMapperRecordStatus.OPERATIONAL,
|
|
94
|
-
};
|
|
95
|
-
mockAxiosClient.post.mockResolvedValue({ data: {} });
|
|
96
|
-
// Act
|
|
97
|
-
await mappers.update(params);
|
|
98
|
-
// Assert
|
|
99
|
-
expect(mockAxiosClient.post).toHaveBeenCalledWith(`${test_utils_1.MOCK_SERVER_DEFAULT_URL}/internal/airdrop.sync-mapper-record.update`, params, {
|
|
100
|
-
headers: {
|
|
101
|
-
Authorization: apiToken,
|
|
102
|
-
},
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-server.d.ts","sourceRoot":"","sources":["../../src/mock-server/mock-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,WAAW,EACX,WAAW,EAEZ,MAAM,0BAA0B,CAAC;AAuElC;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAA4B;gBAErC,IAAI,GAAE,MAAiC;IAMtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBpB,aAAa;IA+B3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,WAAW;IAInB;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAyE1C;;;OAGG;IACI,WAAW,IAAI,IAAI;IAM1B;;OAEG;IACI,cAAc,IAAI,WAAW,GAAG,SAAS;IAOhD;;OAEG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI5D;;OAEG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;CAQhE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-server.interfaces.d.ts","sourceRoot":"","sources":["../../src/mock-server/mock-server.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEvD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,yCAAyC;IACzC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC;IACnD,+BAA+B;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,2BAA2B;IAC3B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-adapter.emit.test.d.ts","sourceRoot":"","sources":["../../../src/multithreading/adapters/base-adapter.emit.test.ts"],"names":[],"mappings":""}
|