@natlibfi/melinda-rest-api-commons 6.2.0-alpha.0 → 6.2.0-alpha.2
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 +165 -14
- package/dist/amqp.d.ts.map +1 -1
- package/dist/amqp.js +14 -0
- package/dist/amqp.js.map +1 -1
- package/dist/helpers/conversion.d.ts.map +1 -1
- package/dist/helpers/conversion.js.map +1 -1
- package/dist/helpers/fix-constants.d.ts.map +1 -1
- package/dist/helpers/fix-constants.js.map +1 -1
- package/dist/helpers/fix-strip-f884s.js.map +1 -1
- package/dist/mongo.d.ts +1 -0
- package/dist/mongo.d.ts.map +1 -1
- package/dist/mongo.js +25 -2
- package/dist/mongo.js.map +1 -1
- package/dist/mongoLog.d.ts +1 -0
- package/dist/mongoLog.d.ts.map +1 -1
- package/dist/mongoLog.js +12 -3
- package/dist/mongoLog.js.map +1 -1
- package/package.json +3 -1
- package/test/amqp-error-branches.test.ts +67 -9
- package/test/amqp.healthtest.ts +12 -8
- package/test/mongo-add-blob-size.test.ts +6 -0
- package/test/mongo-check-and-check-state.test.ts +6 -0
- package/test/mongo-check-and-set-import-job-state.test.ts +6 -0
- package/test/mongo-check-timeout.test.ts +6 -0
- package/test/mongo-create-bulk.test.ts +6 -0
- package/test/mongo-create-prio.test.ts +6 -0
- package/test/mongo-error-branches.test.ts +118 -18
- package/test/mongo-get-one.test.ts +6 -0
- package/test/mongo-get-stream.test.ts +6 -0
- package/test/mongo-push-ids.test.ts +6 -0
- package/test/mongo-push-messages.test.ts +6 -0
- package/test/mongo-query-by-id.test.ts +6 -0
- package/test/mongo-query.test.ts +6 -0
- package/test/mongo-read-content.test.ts +6 -0
- package/test/mongo-remove.test.ts +6 -0
- package/test/mongo-set-blob-size.test.ts +6 -0
- package/test/mongo-set-import-job-state.test.ts +6 -0
- package/test/mongo-set-operation.test.ts +6 -0
- package/test/mongo-set-operations.test.ts +6 -0
- package/test/mongo-set-state.test.ts +6 -0
- package/test/mongoLog-protect.test.ts +1 -0
- package/test/mongoLog.test.ts +6 -0
package/dist/mongoLog.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export interface MongoLogOperator {
|
|
|
43
43
|
unprotect: (correlationId: string, blobSequence?: number | string) => Promise<UpdateResult>;
|
|
44
44
|
remove: (correlationId: string, force?: boolean) => Promise<DeleteResult>;
|
|
45
45
|
removeBySequences: (correlationId: string, sequences?: (number | string)[], force?: boolean) => Promise<DeleteResult>;
|
|
46
|
+
close: () => Promise<void>;
|
|
46
47
|
}
|
|
47
48
|
export default function (MONGO_URI: string, dbName?: string, deps?: {
|
|
48
49
|
collection?: unknown;
|
package/dist/mongoLog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoLog.d.ts","sourceRoot":"","sources":["../src/mongoLog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mongoLog.d.ts","sourceRoot":"","sources":["../src/mongoLog.ts"],"names":[],"mappings":"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"}
|
package/dist/mongoLog.js
CHANGED
|
@@ -22,9 +22,11 @@ export default async function (MONGO_URI, dbName = 'rest-api', deps = {}) {
|
|
|
22
22
|
}
|
|
23
23
|
throw new ApiError(httpStatus.BAD_REQUEST, 'blobSequence must be a number or a numeric string');
|
|
24
24
|
}
|
|
25
|
+
let client;
|
|
26
|
+
let closed = false;
|
|
25
27
|
let logCollection = deps.collection;
|
|
26
28
|
if (!deps.collection) {
|
|
27
|
-
|
|
29
|
+
client = await MongoClient.connect(MONGO_URI);
|
|
28
30
|
logCollection = client.db(dbName).collection(collection);
|
|
29
31
|
}
|
|
30
32
|
return {
|
|
@@ -38,8 +40,15 @@ export default async function (MONGO_URI, dbName = 'rest-api', deps = {}) {
|
|
|
38
40
|
protect,
|
|
39
41
|
unprotect,
|
|
40
42
|
remove,
|
|
41
|
-
removeBySequences
|
|
43
|
+
removeBySequences,
|
|
44
|
+
close
|
|
42
45
|
};
|
|
46
|
+
async function close() {
|
|
47
|
+
if (closed)
|
|
48
|
+
return;
|
|
49
|
+
closed = true;
|
|
50
|
+
await client?.close();
|
|
51
|
+
}
|
|
43
52
|
function isKnownLogItemType(value) {
|
|
44
53
|
const knownLogItemTypes = Object.values(LOG_ITEM_TYPE);
|
|
45
54
|
return knownLogItemTypes.includes(value);
|
|
@@ -128,7 +137,7 @@ export default async function (MONGO_URI, dbName = 'rest-api', deps = {}) {
|
|
|
128
137
|
throw new ApiError(httpStatus.BAD_REQUEST, `Unknown logItemType: ${logItemType}`);
|
|
129
138
|
});
|
|
130
139
|
}
|
|
131
|
-
logger.debug(`commons/getExpandedListOfLogs: logItemTypes: ${JSON.stringify(wantedLogItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}
|
|
140
|
+
logger.debug(`commons/getExpandedListOfLogs: logItemTypes: ${JSON.stringify(wantedLogItemTypes)}, dateAfter: ${dateAfter}, dateBefore: ${dateBefore}, catalogers: ${JSON.stringify(catalogers)}`);
|
|
132
141
|
logger.silly(JSON.stringify(generateMatchObject({ logItemTypes: wantedLogItemTypes, catalogers, dateBefore, dateAfter })));
|
|
133
142
|
const pipeline = [
|
|
134
143
|
generateMatchObject({ logItemTypes: wantedLogItemTypes, catalogers, dateBefore, dateAfter }),
|
package/dist/mongoLog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoLog.js","sourceRoot":"","sources":["../src/mongoLog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mongoLog.js","sourceRoot":"","sources":["../src/mongoLog.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"url": "https://github.com/NatLibFi/melinda-rest-api-commons"
|
|
14
14
|
},
|
|
15
15
|
"license": "MIT",
|
|
16
|
-
"version": "6.2.0-alpha.
|
|
16
|
+
"version": "6.2.0-alpha.2",
|
|
17
17
|
"main": "./dist/index.js",
|
|
18
18
|
"type": "module",
|
|
19
19
|
"engines": {
|
|
@@ -51,6 +51,8 @@
|
|
|
51
51
|
"@natlibfi/fixugen": "^4.0.0",
|
|
52
52
|
"@natlibfi/fixura": "^5.0.0",
|
|
53
53
|
"@natlibfi/fixura-mongo": "^4.0.2",
|
|
54
|
+
"@types/debug": "^4.1.13",
|
|
55
|
+
"@types/http-status": "^0.2.30",
|
|
54
56
|
"@types/node": "^25.9.9",
|
|
55
57
|
"cross-env": "^10.1.0",
|
|
56
58
|
"eslint": "^10.12.0",
|
|
@@ -53,6 +53,7 @@ function makeChannel(overrides: Record<string, unknown> = {}) {
|
|
|
53
53
|
purgeQueue: async () => {},
|
|
54
54
|
close: async () => {},
|
|
55
55
|
sendToQueue: async () => {},
|
|
56
|
+
on: () => {},
|
|
56
57
|
...overrides
|
|
57
58
|
};
|
|
58
59
|
}
|
|
@@ -62,7 +63,7 @@ function makeChannel(overrides: Record<string, unknown> = {}) {
|
|
|
62
63
|
*/
|
|
63
64
|
async function makeOperator(channelOverrides?: Record<string, unknown>) {
|
|
64
65
|
const channel = makeChannel(channelOverrides);
|
|
65
|
-
const connection = {createChannel: async () => channel, close: async () => {}};
|
|
66
|
+
const connection = {createChannel: async () => channel, close: async () => {}, on: () => {}};
|
|
66
67
|
return createAmqp(DUMMY_URL, false, {connection, channel});
|
|
67
68
|
}
|
|
68
69
|
|
|
@@ -140,7 +141,7 @@ test('removeQueue closes the temp channel even when deleteQueue throws', async (
|
|
|
140
141
|
}
|
|
141
142
|
};
|
|
142
143
|
const amqpOperator = await createAmqp(DUMMY_URL, false, {
|
|
143
|
-
connection: {createChannel: async () => tempChannel, close: async () => {}},
|
|
144
|
+
connection: {createChannel: async () => tempChannel, close: async () => {}, on: () => {}},
|
|
144
145
|
channel: makeChannel()
|
|
145
146
|
});
|
|
146
147
|
await assert.rejects(() => amqpOperator.removeQueue(QUEUE));
|
|
@@ -157,7 +158,8 @@ test('removeQueue closes the temp channel on success too', async () => {
|
|
|
157
158
|
closedChannels.push('temp');
|
|
158
159
|
}
|
|
159
160
|
}),
|
|
160
|
-
close: async () => {}
|
|
161
|
+
close: async () => {},
|
|
162
|
+
on: () => {}
|
|
161
163
|
},
|
|
162
164
|
channel: makeChannel()
|
|
163
165
|
});
|
|
@@ -191,10 +193,11 @@ test('healthCheck loop stops after closeChannel and does not keep firing or thro
|
|
|
191
193
|
purgeQueue: async () => {},
|
|
192
194
|
close: async () => {
|
|
193
195
|
closed = true;
|
|
194
|
-
}
|
|
196
|
+
},
|
|
197
|
+
on: () => {}
|
|
195
198
|
};
|
|
196
199
|
const amqpOperator = await createAmqp(DUMMY_URL, true, {
|
|
197
|
-
connection: {createChannel: async () => channel, close: async () => {}},
|
|
200
|
+
connection: {createChannel: async () => channel, close: async () => {}, on: () => {}},
|
|
198
201
|
channel
|
|
199
202
|
});
|
|
200
203
|
// let the health check run at least once, then cancel it
|
|
@@ -466,7 +469,8 @@ test('closeConnection closes the connection and the operator resolves', async ()
|
|
|
466
469
|
createChannel: async () => channel,
|
|
467
470
|
close: async () => {
|
|
468
471
|
closed.push('connection');
|
|
469
|
-
}
|
|
472
|
+
},
|
|
473
|
+
on: () => {}
|
|
470
474
|
},
|
|
471
475
|
channel
|
|
472
476
|
});
|
|
@@ -490,7 +494,7 @@ test('healthCheck error arriving after cancel does not rethrow and stops the loo
|
|
|
490
494
|
}
|
|
491
495
|
});
|
|
492
496
|
const amqpOperator = await createAmqp(DUMMY_URL, true, {
|
|
493
|
-
connection: {createChannel: async () => channel, close: async () => {}},
|
|
497
|
+
connection: {createChannel: async () => channel, close: async () => {}, on: () => {}},
|
|
494
498
|
channel
|
|
495
499
|
});
|
|
496
500
|
// by now the loop is suspended on the pending assertQueue call;
|
|
@@ -525,12 +529,13 @@ test('healthCheck error while running rethrows into the un-awaited loop promise'
|
|
|
525
529
|
nack: () => {},
|
|
526
530
|
purgeQueue: async () => {},
|
|
527
531
|
close: async () => {},
|
|
528
|
-
sendToQueue: async () => {}
|
|
532
|
+
sendToQueue: async () => {},
|
|
533
|
+
on: () => {}
|
|
529
534
|
};
|
|
530
535
|
const captured = [];
|
|
531
536
|
process.on('unhandledRejection', (err) => captured.push(err));
|
|
532
537
|
await createAmqp('amqp://stub:5672/', true, {
|
|
533
|
-
connection: {createChannel: async () => channel, close: async () => {}},
|
|
538
|
+
connection: {createChannel: async () => channel, close: async () => {}, on: () => {}},
|
|
534
539
|
channel
|
|
535
540
|
});
|
|
536
541
|
// the first loop iteration rejects and the error escapes the un-awaited loop promise
|
|
@@ -549,3 +554,56 @@ test('healthCheck error while running rethrows into the un-awaited loop promise'
|
|
|
549
554
|
// handleAmqpErrors logs the error to stdout before the escape, so only the tail matters
|
|
550
555
|
assert.ok(stdout.endsWith('OK'), `expected child output to end with OK, got: ${stdout}`);
|
|
551
556
|
});
|
|
557
|
+
|
|
558
|
+
test('broker loss (error + close events) logs the error and close cancels the health check', async () => {
|
|
559
|
+
// Failure-path listeners on the amqplib connection/channel:
|
|
560
|
+
// - 'error' must only log: without a handler an unhandled EventEmitter
|
|
561
|
+
// 'error' would become an uncaughtException, and the error alone must
|
|
562
|
+
// NOT stop the loop (the fast-fail contract is unchanged)
|
|
563
|
+
// - 'close' must cancel the health check loop so no iterations keep
|
|
564
|
+
// running on a dead link (matters for runHealthCheck: false consumers)
|
|
565
|
+
const handlers: Record<string, ((...args: unknown[]) => void)[]> = {};
|
|
566
|
+
const makeOn = (target: string) => (event: string, handler: (...args: unknown[]) => void) => {
|
|
567
|
+
const key = `${target}:${event}`;
|
|
568
|
+
const list = handlers[key] ?? (handlers[key] = []);
|
|
569
|
+
list.push(handler);
|
|
570
|
+
return {off: () => {}};
|
|
571
|
+
};
|
|
572
|
+
let healthCheckCalls = 0;
|
|
573
|
+
const channel = makeChannel({
|
|
574
|
+
on: makeOn('channel'),
|
|
575
|
+
assertQueue: async (name: string) => {
|
|
576
|
+
if (name === 'HEALTHCHECK') {
|
|
577
|
+
healthCheckCalls += 1;
|
|
578
|
+
}
|
|
579
|
+
return {messageCount: 0};
|
|
580
|
+
}
|
|
581
|
+
});
|
|
582
|
+
await createAmqp(DUMMY_URL, true, {
|
|
583
|
+
connection: {createChannel: async () => channel, close: async () => {}, on: makeOn('connection')},
|
|
584
|
+
channel
|
|
585
|
+
});
|
|
586
|
+
// all four listeners must be attached (connection + channel, error + close)
|
|
587
|
+
assert.deepStrictEqual(Object.keys(handlers).sort(), [
|
|
588
|
+
'channel:close',
|
|
589
|
+
'channel:error',
|
|
590
|
+
'connection:close',
|
|
591
|
+
'connection:error'
|
|
592
|
+
]);
|
|
593
|
+
// let the loop run a couple of iterations, then simulate broker loss the
|
|
594
|
+
// way amqplib signals it: an 'error' event followed by 'close'
|
|
595
|
+
await new Promise((resolve) => setTimeout(resolve, 350));
|
|
596
|
+
for (const handler of handlers['channel:error'] ?? []) handler(new Error('socket lost'));
|
|
597
|
+
for (const handler of handlers['connection:error'] ?? []) handler(new Error('socket lost'));
|
|
598
|
+
// the 'error' events alone must not cancel the loop
|
|
599
|
+
const callsAfterError = healthCheckCalls;
|
|
600
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
601
|
+
assert.ok(healthCheckCalls > 0, 'health check should have run before the broker loss');
|
|
602
|
+
assert.ok(healthCheckCalls > callsAfterError, 'health check keeps running after the error events');
|
|
603
|
+
for (const handler of handlers['channel:close'] ?? []) handler();
|
|
604
|
+
for (const handler of handlers['connection:close'] ?? []) handler();
|
|
605
|
+
const callsAfterClose = healthCheckCalls;
|
|
606
|
+
// wait longer than the 200 ms loop interval - no further health checks may fire
|
|
607
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
608
|
+
assert.equal(healthCheckCalls, callsAfterClose, 'no health checks after the close events');
|
|
609
|
+
});
|
package/test/amqp.healthtest.ts
CHANGED
|
@@ -13,10 +13,17 @@ const setTimeoutPromise = promisify(setTimeout);
|
|
|
13
13
|
|
|
14
14
|
describe('HealthCheck: amqpOperator should error if channel or connection fails', () => {
|
|
15
15
|
|
|
16
|
-
it('
|
|
16
|
+
it('healthcheck loop stops silently on closeChannel without unhandled rejections', async (t) => {
|
|
17
17
|
debug(`Testing amqp against a local AMQP instance - we'll need some kind of mockup for this`);
|
|
18
18
|
const amqpUrl = 'amqp://127.0.0.1:5672/';
|
|
19
19
|
|
|
20
|
+
// pin the contract: the loop must never leak an unhandled rejection,
|
|
21
|
+
// both while running and after closeChannel cancels it
|
|
22
|
+
const unhandled: unknown[] = [];
|
|
23
|
+
const onUnhandledRejection = (error: unknown) => unhandled.push(error);
|
|
24
|
+
process.on('unhandledRejection', onUnhandledRejection);
|
|
25
|
+
t.after(() => process.off('unhandledRejection', onUnhandledRejection));
|
|
26
|
+
|
|
20
27
|
const amqpOperator = await amqpFactory(amqpUrl, true);
|
|
21
28
|
debug(`Connecting to ${amqpUrl}, with healthCheck running`);
|
|
22
29
|
await awaitTime(amqpOperator, false);
|
|
@@ -31,7 +38,7 @@ describe('HealthCheck: amqpOperator should error if channel or connection fails'
|
|
|
31
38
|
await awaitTime(amqpOperator, true);
|
|
32
39
|
// closeChannel() sets the run flag so the loop short-circuits gracefully:
|
|
33
40
|
// it must stop silently without throwing or firing further health checks
|
|
34
|
-
assert.
|
|
41
|
+
assert.deepStrictEqual(unhandled, [], 'no unhandled rejections while running or after closeChannel');
|
|
35
42
|
|
|
36
43
|
debug(`Closing connection`);
|
|
37
44
|
await amqpOperator.closeConnection();
|
|
@@ -42,13 +49,10 @@ describe('HealthCheck: amqpOperator should error if channel or connection fails'
|
|
|
42
49
|
*/
|
|
43
50
|
async function awaitTime(amqpOperator: AmqpOperator, close: boolean): Promise<void> {
|
|
44
51
|
if (close) {
|
|
45
|
-
// wrap the wait so any error thrown by the (cancelled) loop fails the test
|
|
46
52
|
await amqpOperator.closeChannel();
|
|
47
|
-
try
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
assert.fail(`healthCheck loop threw after closeChannel: ${error}`);
|
|
51
|
-
}
|
|
53
|
+
// note: promisify(setTimeout) never rejects, so a try/catch around it
|
|
54
|
+
// can never catch; the unhandledRejection assertion above is the pin
|
|
55
|
+
await setTimeoutPromise(500);
|
|
52
56
|
return;
|
|
53
57
|
}
|
|
54
58
|
|
|
@@ -8,6 +8,7 @@ import {getMongoOperator, handleError, compareToFirstDbEntry} from './testUtils.
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
let mongoFixtures: any;
|
|
11
|
+
const openedOperators: any[] = [];
|
|
11
12
|
const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo:add-blob-size:test');
|
|
12
13
|
|
|
13
14
|
generateTests({
|
|
@@ -34,6 +35,10 @@ generateTests({
|
|
|
34
35
|
},
|
|
35
36
|
after: async () => {
|
|
36
37
|
//debug(`<< After`);
|
|
38
|
+
// close the operators the tests opened (one per test) before the server
|
|
39
|
+
for (const op of openedOperators) {
|
|
40
|
+
await op.close();
|
|
41
|
+
}
|
|
37
42
|
await mongoFixtures.close();
|
|
38
43
|
}
|
|
39
44
|
}
|
|
@@ -61,6 +66,7 @@ async function callback(callbackParams: Record<string, any>) {
|
|
|
61
66
|
} = callbackParams;
|
|
62
67
|
|
|
63
68
|
const mongoOperator = await getMongoOperator(mongoFixtures);
|
|
69
|
+
openedOperators.push(mongoOperator);
|
|
64
70
|
const expectedResult = await getFixture('expectedResult.json');
|
|
65
71
|
|
|
66
72
|
await doPreFillDb(preFillDb);
|
|
@@ -8,6 +8,7 @@ import {getMongoOperator, handleError, compareToFirstDbEntry} from './testUtils.
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
let mongoFixtures: any;
|
|
11
|
+
const openedOperators: any[] = [];
|
|
11
12
|
const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo:test');
|
|
12
13
|
|
|
13
14
|
generateTests({
|
|
@@ -34,6 +35,10 @@ generateTests({
|
|
|
34
35
|
},
|
|
35
36
|
after: async () => {
|
|
36
37
|
//debug(`<< After`);
|
|
38
|
+
// close the operators the tests opened (one per test) before the server
|
|
39
|
+
for (const op of openedOperators) {
|
|
40
|
+
await op.close();
|
|
41
|
+
}
|
|
37
42
|
await mongoFixtures.close();
|
|
38
43
|
}
|
|
39
44
|
}
|
|
@@ -62,6 +67,7 @@ async function callback(callbackParams: Record<string, any>) {
|
|
|
62
67
|
} = callbackParams;
|
|
63
68
|
|
|
64
69
|
const mongoOperator = await getMongoOperator(mongoFixtures);
|
|
70
|
+
openedOperators.push(mongoOperator);
|
|
65
71
|
const expectedResult = await getFixture('expectedResult.json');
|
|
66
72
|
|
|
67
73
|
await doPreFillDb(preFillDb);
|
|
@@ -7,6 +7,7 @@ import createDebugLogger from 'debug';
|
|
|
7
7
|
import {getMongoOperator, handleError, compareToFirstDbEntry} from './testUtils.ts';
|
|
8
8
|
|
|
9
9
|
let mongoFixtures: any;
|
|
10
|
+
const openedOperators: any[] = [];
|
|
10
11
|
const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo:check-and-set-import-job-state-test');
|
|
11
12
|
|
|
12
13
|
generateTests({
|
|
@@ -33,6 +34,10 @@ generateTests({
|
|
|
33
34
|
},
|
|
34
35
|
after: async () => {
|
|
35
36
|
//debug(`<< After`);
|
|
37
|
+
// close the operators the tests opened (one per test) before the server
|
|
38
|
+
for (const op of openedOperators) {
|
|
39
|
+
await op.close();
|
|
40
|
+
}
|
|
36
41
|
await mongoFixtures.close();
|
|
37
42
|
}
|
|
38
43
|
}
|
|
@@ -61,6 +66,7 @@ async function callback(callbackParams: Record<string, any>) {
|
|
|
61
66
|
} = callbackParams;
|
|
62
67
|
|
|
63
68
|
const mongoOperator = await getMongoOperator(mongoFixtures);
|
|
69
|
+
openedOperators.push(mongoOperator);
|
|
64
70
|
const expectedResult = await getFixture('expectedResult.json');
|
|
65
71
|
|
|
66
72
|
await doPreFillDb(preFillDb);
|
|
@@ -8,6 +8,7 @@ import {getMongoOperator, handleError, compareToFirstDbEntry} from './testUtils.
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
let mongoFixtures: any;
|
|
11
|
+
const openedOperators: any[] = [];
|
|
11
12
|
const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo:check-timeout:test');
|
|
12
13
|
|
|
13
14
|
generateTests({
|
|
@@ -34,6 +35,10 @@ generateTests({
|
|
|
34
35
|
},
|
|
35
36
|
after: async () => {
|
|
36
37
|
//debug(`<< After`);
|
|
38
|
+
// close the operators the tests opened (one per test) before the server
|
|
39
|
+
for (const op of openedOperators) {
|
|
40
|
+
await op.close();
|
|
41
|
+
}
|
|
37
42
|
await mongoFixtures.close();
|
|
38
43
|
}
|
|
39
44
|
}
|
|
@@ -62,6 +67,7 @@ async function callback(callbackParams: Record<string, any>) {
|
|
|
62
67
|
} = callbackParams;
|
|
63
68
|
|
|
64
69
|
const mongoOperator = await getMongoOperator(mongoFixtures);
|
|
70
|
+
openedOperators.push(mongoOperator);
|
|
65
71
|
const expectedResult = await getFixture('expectedResult.json');
|
|
66
72
|
|
|
67
73
|
await doPreFillDb(preFillDb);
|
|
@@ -6,6 +6,7 @@ import createDebugLogger from 'debug';
|
|
|
6
6
|
import {getMongoOperator, handleError, compareToFirstDbEntry} from './testUtils.ts';
|
|
7
7
|
|
|
8
8
|
let mongoFixtures: any;
|
|
9
|
+
const openedOperators: any[] = [];
|
|
9
10
|
const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo:test:create-bulk');
|
|
10
11
|
|
|
11
12
|
generateTests({
|
|
@@ -32,6 +33,10 @@ generateTests({
|
|
|
32
33
|
},
|
|
33
34
|
after: async () => {
|
|
34
35
|
//debug(`<< After`);
|
|
36
|
+
// close the operators the tests opened (one per test) before the server
|
|
37
|
+
for (const op of openedOperators) {
|
|
38
|
+
await op.close();
|
|
39
|
+
}
|
|
35
40
|
await mongoFixtures.close();
|
|
36
41
|
}
|
|
37
42
|
}
|
|
@@ -59,6 +64,7 @@ async function callback(callbackParams: Record<string, any>) {
|
|
|
59
64
|
} = callbackParams;
|
|
60
65
|
|
|
61
66
|
const mongoOperator = await getMongoOperator(mongoFixtures);
|
|
67
|
+
openedOperators.push(mongoOperator);
|
|
62
68
|
const expectedResult = await getFixture('expectedResult.json');
|
|
63
69
|
|
|
64
70
|
await doPreFillDb(preFillDb);
|
|
@@ -7,6 +7,7 @@ import {getMongoOperator, handleError, compareToFirstDbEntry} from './testUtils.
|
|
|
7
7
|
// import {handleError, compareToFirstDbEntry, compareToDbEntry, formatQueueItem, streamToString} from './testUtils.js';
|
|
8
8
|
|
|
9
9
|
let mongoFixtures: any;
|
|
10
|
+
const openedOperators: any[] = [];
|
|
10
11
|
const debug = createDebugLogger('@natlibfi/melinda-rest-api-commons/mongo:create-prio-test');
|
|
11
12
|
|
|
12
13
|
generateTests({
|
|
@@ -33,6 +34,10 @@ generateTests({
|
|
|
33
34
|
},
|
|
34
35
|
after: async () => {
|
|
35
36
|
//debug(`<< After`);
|
|
37
|
+
// close the operators the tests opened (one per test) before the server
|
|
38
|
+
for (const op of openedOperators) {
|
|
39
|
+
await op.close();
|
|
40
|
+
}
|
|
36
41
|
await mongoFixtures.close();
|
|
37
42
|
}
|
|
38
43
|
}
|
|
@@ -58,6 +63,7 @@ async function callback(callbackParams: Record<string, any>) {
|
|
|
58
63
|
} = callbackParams;
|
|
59
64
|
|
|
60
65
|
const mongoOperator = await getMongoOperator(mongoFixtures);
|
|
66
|
+
openedOperators.push(mongoOperator);
|
|
61
67
|
const expectedResult = await getFixture('expectedResult.json');
|
|
62
68
|
|
|
63
69
|
await doPreFillDb(preFillDb);
|