update dependencies, fixes to support new authentication features
[websub-hub] / test / stub-db.js
1 /* eslint-disable security/detect-object-injection */
2 'use strict';
3
4 const sinon = require('sinon');
5
6 const spyFns = [
7 'context',
8 'transaction',
9 ];
10
11 const stubFns = [
12 'authenticationSuccess',
13 'authenticationGet',
14 'authenticationUpsert',
15 'authenticationUpdateCredential',
16 'authenticationUpdateOTPKey',
17 'healthCheck',
18 'initialize',
19 'subscriptionsByTopicId',
20 'subscriptionCountByTopicUrl',
21 'subscriptionDelete',
22 'subscriptionDeleteExpired',
23 'subscriptionDeliveryClaim',
24 'subscriptionDeliveryClaimById',
25 'subscriptionDeliveryComplete',
26 'subscriptionDeliveryGone',
27 'subscriptionDeliveryIncomplete',
28 'subscriptionGet',
29 'subscriptionGetById',
30 'subscriptionUpdate',
31 'subscriptionUpsert',
32 'topicDeleted',
33 'topicFetchClaim',
34 'topicFetchClaimById',
35 'topicFetchComplete',
36 'topicFetchIncomplete',
37 'topicFetchRequested',
38 'topicGetAll',
39 'topicGetById',
40 'topicGetByUrl',
41 'topicGetContentById',
42 'topicPendingDelete',
43 'topicPublishHistory',
44 'topicSet',
45 'topicSetContent',
46 'topicUpdate',
47 'verificationClaim',
48 'verificationClaimById',
49 'verificationComplete',
50 'verificationGetById',
51 'verificationIncomplete',
52 'verificationInsert',
53 'verificationRelease',
54 'verificationUpdate',
55 'verificationValidated',
56 ];
57
58 const stubDatabase = {
59 _implementation: [ ...spyFns, ...stubFns ],
60 _reset: () => {
61 spyFns.forEach((fn) => sinon.spy(stubDatabase, fn));
62 stubFns.forEach((fn) => sinon.stub(stubDatabase, fn));
63 },
64 context: async (fn) => await fn({}),
65 transaction: async (dbCtx, fn) => await fn(dbCtx),
66 };
67
68 stubFns.forEach((fn) => {
69 stubDatabase[fn] = () => {};
70 });
71
72 module.exports = stubDatabase;