backend-test-tools 1.0.0

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.
Files changed (187) hide show
  1. package/.env.example +51 -0
  2. package/.mocharc.js +9 -0
  3. package/.prettierrc +7 -0
  4. package/README.md +271 -0
  5. package/babel.config.json +33 -0
  6. package/dist/factory/factory.d.ts +11 -0
  7. package/dist/factory/factory.js +39 -0
  8. package/dist/factory/factory.js.map +1 -0
  9. package/dist/factory/factory.types.d.ts +38 -0
  10. package/dist/factory/factory.types.js +2 -0
  11. package/dist/factory/factory.types.js.map +1 -0
  12. package/dist/factory/index.d.ts +2 -0
  13. package/dist/factory/index.js +28 -0
  14. package/dist/factory/index.js.map +1 -0
  15. package/dist/factory/workers/connection.d.ts +3 -0
  16. package/dist/factory/workers/connection.js +25 -0
  17. package/dist/factory/workers/connection.js.map +1 -0
  18. package/dist/factory/workers/connection.types.d.ts +28 -0
  19. package/dist/factory/workers/connection.types.js +2 -0
  20. package/dist/factory/workers/connection.types.js.map +1 -0
  21. package/dist/factory/workers/index.d.ts +6 -0
  22. package/dist/factory/workers/index.js +72 -0
  23. package/dist/factory/workers/index.js.map +1 -0
  24. package/dist/factory/workers/organization.d.ts +3 -0
  25. package/dist/factory/workers/organization.js +36 -0
  26. package/dist/factory/workers/organization.js.map +1 -0
  27. package/dist/factory/workers/organization.types.d.ts +51 -0
  28. package/dist/factory/workers/organization.types.js +2 -0
  29. package/dist/factory/workers/organization.types.js.map +1 -0
  30. package/dist/factory/workers/user.d.ts +5 -0
  31. package/dist/factory/workers/user.js +60 -0
  32. package/dist/factory/workers/user.js.map +1 -0
  33. package/dist/factory/workers/user.types.d.ts +76 -0
  34. package/dist/factory/workers/user.types.js +2 -0
  35. package/dist/factory/workers/user.types.js.map +1 -0
  36. package/dist/generators/generateAccessToken.d.ts +3 -0
  37. package/dist/generators/generateAccessToken.js +27 -0
  38. package/dist/generators/generateAccessToken.js.map +1 -0
  39. package/dist/generators/generateChatId.d.ts +2 -0
  40. package/dist/generators/generateChatId.js +13 -0
  41. package/dist/generators/generateChatId.js.map +1 -0
  42. package/dist/generators/generateEcdsaKeyPair.d.ts +2 -0
  43. package/dist/generators/generateEcdsaKeyPair.js +31 -0
  44. package/dist/generators/generateEcdsaKeyPair.js.map +1 -0
  45. package/dist/generators/generateImageBuffer.d.ts +3 -0
  46. package/dist/generators/generateImageBuffer.js +23 -0
  47. package/dist/generators/generateImageBuffer.js.map +1 -0
  48. package/dist/generators/generateImageBuffer.types.d.ts +7 -0
  49. package/dist/generators/generateImageBuffer.types.js +2 -0
  50. package/dist/generators/generateImageBuffer.types.js.map +1 -0
  51. package/dist/generators/generateKeyPair.d.ts +6 -0
  52. package/dist/generators/generateKeyPair.js +36 -0
  53. package/dist/generators/generateKeyPair.js.map +1 -0
  54. package/dist/generators/generateKeyPair.types.d.ts +9 -0
  55. package/dist/generators/generateKeyPair.types.js +2 -0
  56. package/dist/generators/generateKeyPair.types.js.map +1 -0
  57. package/dist/generators/generateLocale.d.ts +5 -0
  58. package/dist/generators/generateLocale.js +16 -0
  59. package/dist/generators/generateLocale.js.map +1 -0
  60. package/dist/generators/generateRegId.d.ts +4 -0
  61. package/dist/generators/generateRegId.js +14 -0
  62. package/dist/generators/generateRegId.js.map +1 -0
  63. package/dist/generators/generateRsaKeyPair.d.ts +2 -0
  64. package/dist/generators/generateRsaKeyPair.js +22 -0
  65. package/dist/generators/generateRsaKeyPair.js.map +1 -0
  66. package/dist/generators/generateUserCrypto.d.ts +15 -0
  67. package/dist/generators/generateUserCrypto.js +33 -0
  68. package/dist/generators/generateUserCrypto.js.map +1 -0
  69. package/dist/generators/index.d.ts +9 -0
  70. package/dist/generators/index.js +105 -0
  71. package/dist/generators/index.js.map +1 -0
  72. package/dist/index.d.ts +4 -0
  73. package/dist/index.js +50 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/stubs/index.d.ts +1 -0
  76. package/dist/stubs/index.js +17 -0
  77. package/dist/stubs/index.js.map +1 -0
  78. package/dist/stubs/server-engine/Leader.types.d.ts +8 -0
  79. package/dist/stubs/server-engine/Leader.types.js +2 -0
  80. package/dist/stubs/server-engine/Leader.types.js.map +1 -0
  81. package/dist/stubs/server-engine/Localizator.d.ts +3 -0
  82. package/dist/stubs/server-engine/Localizator.js +34 -0
  83. package/dist/stubs/server-engine/Localizator.js.map +1 -0
  84. package/dist/stubs/server-engine/Localizator.types.d.ts +22 -0
  85. package/dist/stubs/server-engine/Localizator.types.js +2 -0
  86. package/dist/stubs/server-engine/Localizator.types.js.map +1 -0
  87. package/dist/stubs/server-engine/PubSub.d.ts +3 -0
  88. package/dist/stubs/server-engine/PubSub.js +24 -0
  89. package/dist/stubs/server-engine/PubSub.js.map +1 -0
  90. package/dist/stubs/server-engine/PubSub.types.d.ts +14 -0
  91. package/dist/stubs/server-engine/PubSub.types.js +2 -0
  92. package/dist/stubs/server-engine/PubSub.types.js.map +1 -0
  93. package/dist/stubs/server-engine/PushNotification.d.ts +3 -0
  94. package/dist/stubs/server-engine/PushNotification.js +18 -0
  95. package/dist/stubs/server-engine/PushNotification.js.map +1 -0
  96. package/dist/stubs/server-engine/PushNotification.types.d.ts +8 -0
  97. package/dist/stubs/server-engine/PushNotification.types.js +2 -0
  98. package/dist/stubs/server-engine/PushNotification.types.js.map +1 -0
  99. package/dist/stubs/server-engine/index.d.ts +4 -0
  100. package/dist/stubs/server-engine/index.js +50 -0
  101. package/dist/stubs/server-engine/index.js.map +1 -0
  102. package/dist/stubs/server-engine/sendPush.d.ts +3 -0
  103. package/dist/stubs/server-engine/sendPush.js +15 -0
  104. package/dist/stubs/server-engine/sendPush.js.map +1 -0
  105. package/dist/utils/generateCerts/generateCerts.const.d.ts +5 -0
  106. package/dist/utils/generateCerts/generateCerts.const.js +35 -0
  107. package/dist/utils/generateCerts/generateCerts.const.js.map +1 -0
  108. package/dist/utils/generateCerts/generateCerts.d.ts +9 -0
  109. package/dist/utils/generateCerts/generateCerts.js +108 -0
  110. package/dist/utils/generateCerts/generateCerts.js.map +1 -0
  111. package/dist/utils/generateCerts/generateCerts.types.d.ts +19 -0
  112. package/dist/utils/generateCerts/generateCerts.types.js +2 -0
  113. package/dist/utils/generateCerts/generateCerts.types.js.map +1 -0
  114. package/dist/utils/generateCerts/index.d.ts +1 -0
  115. package/dist/utils/generateCerts/index.js +17 -0
  116. package/dist/utils/generateCerts/index.js.map +1 -0
  117. package/dist/utils/getAdminApiBearer.d.ts +2 -0
  118. package/dist/utils/getAdminApiBearer.js +19 -0
  119. package/dist/utils/getAdminApiBearer.js.map +1 -0
  120. package/dist/utils/getBearer.d.ts +3 -0
  121. package/dist/utils/getBearer.js +12 -0
  122. package/dist/utils/getBearer.js.map +1 -0
  123. package/dist/utils/index.d.ts +6 -0
  124. package/dist/utils/index.js +72 -0
  125. package/dist/utils/index.js.map +1 -0
  126. package/dist/utils/jwtRequest.d.ts +9 -0
  127. package/dist/utils/jwtRequest.js +29 -0
  128. package/dist/utils/jwtRequest.js.map +1 -0
  129. package/dist/utils/staticRequest.d.ts +10 -0
  130. package/dist/utils/staticRequest.js +24 -0
  131. package/dist/utils/staticRequest.js.map +1 -0
  132. package/dist/utils/tlsRequest.d.ts +6 -0
  133. package/dist/utils/tlsRequest.js +44 -0
  134. package/dist/utils/tlsRequest.js.map +1 -0
  135. package/dist/utils/tlsRequest.types.d.ts +9 -0
  136. package/dist/utils/tlsRequest.types.js +2 -0
  137. package/dist/utils/tlsRequest.types.js.map +1 -0
  138. package/eslint.config.mjs +11 -0
  139. package/jsconfig.json +14 -0
  140. package/package.json +83 -0
  141. package/src/factory/factory.ts +51 -0
  142. package/src/factory/factory.types.ts +50 -0
  143. package/src/factory/index.ts +2 -0
  144. package/src/factory/workers/connection.ts +22 -0
  145. package/src/factory/workers/connection.types.ts +29 -0
  146. package/src/factory/workers/index.ts +6 -0
  147. package/src/factory/workers/organization.ts +35 -0
  148. package/src/factory/workers/organization.types.ts +53 -0
  149. package/src/factory/workers/user.ts +57 -0
  150. package/src/factory/workers/user.types.ts +77 -0
  151. package/src/generators/generateAccessToken.ts +24 -0
  152. package/src/generators/generateChatId.ts +6 -0
  153. package/src/generators/generateEcdsaKeyPair.ts +16 -0
  154. package/src/generators/generateImageBuffer.ts +19 -0
  155. package/src/generators/generateImageBuffer.types.ts +7 -0
  156. package/src/generators/generateKeyPair.ts +24 -0
  157. package/src/generators/generateKeyPair.types.ts +9 -0
  158. package/src/generators/generateLocale.ts +28 -0
  159. package/src/generators/generateRegId.ts +9 -0
  160. package/src/generators/generateRsaKeyPair.ts +12 -0
  161. package/src/generators/generateUserCrypto.ts +24 -0
  162. package/src/generators/index.ts +9 -0
  163. package/src/index.ts +4 -0
  164. package/src/stubs/index.ts +1 -0
  165. package/src/stubs/server-engine/Leader.types.ts +9 -0
  166. package/src/stubs/server-engine/Localizator.ts +25 -0
  167. package/src/stubs/server-engine/Localizator.types.ts +24 -0
  168. package/src/stubs/server-engine/PubSub.ts +13 -0
  169. package/src/stubs/server-engine/PubSub.types.ts +15 -0
  170. package/src/stubs/server-engine/PushNotification.ts +11 -0
  171. package/src/stubs/server-engine/PushNotification.types.ts +9 -0
  172. package/src/stubs/server-engine/index.ts +4 -0
  173. package/src/stubs/server-engine/sendPush.ts +7 -0
  174. package/src/utils/generateCerts/generateCerts.const.ts +48 -0
  175. package/src/utils/generateCerts/generateCerts.ts +108 -0
  176. package/src/utils/generateCerts/generateCerts.types.ts +21 -0
  177. package/src/utils/generateCerts/index.ts +1 -0
  178. package/src/utils/getAdminApiBearer.ts +17 -0
  179. package/src/utils/getBearer.ts +11 -0
  180. package/src/utils/index.ts +6 -0
  181. package/src/utils/jwtRequest.ts +25 -0
  182. package/src/utils/staticRequest.ts +22 -0
  183. package/src/utils/tlsRequest.ts +41 -0
  184. package/src/utils/tlsRequest.types.ts +9 -0
  185. package/test/env.ts +10 -0
  186. package/tsconfig.build.json +4 -0
  187. package/tsconfig.json +30 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.generateCerts = generateCerts;
8
+ exports.generatePkiEnvironment = generatePkiEnvironment;
9
+ var _fs = _interopRequireDefault(require("fs"));
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _nodeForge = require("node-forge");
12
+ var _generateCerts = require("./generateCerts.const");
13
+ let serialNumber = 1;
14
+ const dir = _path.default.resolve('certs');
15
+
16
+ /** Generate a certificate and a private key */
17
+ function generateCerts(attributes, options = {}) {
18
+ const keys = _nodeForge.pki.rsa.generateKeyPair(2048);
19
+ const cert = _nodeForge.pki.createCertificate();
20
+ cert.publicKey = keys.publicKey;
21
+ const serial = `00${serialNumber.toString()}`;
22
+ cert.serialNumber = serial.substr(serial.length - 2);
23
+ serialNumber++;
24
+ cert.validity.notBefore = new Date();
25
+ cert.validity.notAfter = new Date();
26
+ cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);
27
+ cert.setSubject(attributes);
28
+ cert.setIssuer(options.issuer ?? attributes);
29
+ cert.setExtensions(getExtensions(options));
30
+ cert.sign(options.key ?? keys.privateKey, _nodeForge.md.sha256.create());
31
+ return {
32
+ cert: _nodeForge.pki.certificateToPem(cert),
33
+ privateKey: keys.privateKey,
34
+ privateKeyPem: _nodeForge.pki.privateKeyToPem(keys.privateKey)
35
+ };
36
+ }
37
+
38
+ /**
39
+ * Generate a CA certificate as well as a client and a server private key and certificate
40
+ * These will be stored in the $ROOT/certs directoryA
41
+ */
42
+ function generatePkiEnvironment() {
43
+ const ca = generateCerts(_generateCerts.caAttributes, {
44
+ ca: true
45
+ });
46
+ const client = generateCerts(_generateCerts.clientAttributes, {
47
+ key: ca.privateKey,
48
+ issuer: _generateCerts.caAttributes
49
+ });
50
+ const server = generateCerts(_generateCerts.serverAttributes, {
51
+ key: ca.privateKey,
52
+ issuer: _generateCerts.caAttributes
53
+ });
54
+
55
+ // Create directory if it does not exist
56
+ if (!_fs.default.existsSync(dir)) {
57
+ _fs.default.mkdirSync(dir);
58
+ }
59
+ _fs.default.writeFileSync(_path.default.resolve(dir, 'ca.crt'), ca.cert);
60
+ _fs.default.writeFileSync(_path.default.resolve(dir, 'ca.key'), ca.privateKeyPem);
61
+ _fs.default.writeFileSync(_path.default.resolve(dir, 'client.crt'), client.cert);
62
+ _fs.default.writeFileSync(_path.default.resolve(dir, 'client.key'), client.privateKeyPem);
63
+ _fs.default.writeFileSync(_path.default.resolve(dir, 'server.crt'), server.cert);
64
+ _fs.default.writeFileSync(_path.default.resolve(dir, 'server.key'), server.privateKeyPem);
65
+ }
66
+
67
+ /** Get the best fitting extensions for the certificate to generate */
68
+ function getExtensions(options = {}) {
69
+ return [{
70
+ name: 'basicConstraints',
71
+ cA: options.ca === true
72
+ }, {
73
+ name: 'keyUsage',
74
+ keyCertSign: true,
75
+ digitalSignature: true,
76
+ nonRepudiation: true,
77
+ keyEncipherment: true,
78
+ dataEncipherment: true
79
+ }, {
80
+ name: 'extKeyUsage',
81
+ serverAuth: true,
82
+ clientAuth: true,
83
+ codeSigning: true,
84
+ emailProtection: true,
85
+ timeStamping: true
86
+ }, {
87
+ name: 'nsCertType',
88
+ client: true,
89
+ server: true,
90
+ email: true,
91
+ objsign: true,
92
+ sslCA: true,
93
+ emailCA: true,
94
+ objCA: true
95
+ }, {
96
+ name: 'subjectAltName',
97
+ altNames: [{
98
+ type: 2,
99
+ value: 'localhost'
100
+ }, {
101
+ type: 7,
102
+ ip: '127.0.0.1'
103
+ }]
104
+ }, {
105
+ name: 'subjectKeyIdentifier'
106
+ }];
107
+ }
108
+ //# sourceMappingURL=generateCerts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCerts.js","names":["_fs","_interopRequireDefault","require","_path","_nodeForge","_generateCerts","serialNumber","dir","path","resolve","generateCerts","attributes","options","keys","pki","rsa","generateKeyPair","cert","createCertificate","publicKey","serial","toString","substr","length","validity","notBefore","Date","notAfter","setFullYear","getFullYear","setSubject","setIssuer","issuer","setExtensions","getExtensions","sign","key","privateKey","md","sha256","create","certificateToPem","privateKeyPem","privateKeyToPem","generatePkiEnvironment","ca","caAttributes","client","clientAttributes","server","serverAttributes","fs","existsSync","mkdirSync","writeFileSync","name","cA","keyCertSign","digitalSignature","nonRepudiation","keyEncipherment","dataEncipherment","serverAuth","clientAuth","codeSigning","emailProtection","timeStamping","email","objsign","sslCA","emailCA","objCA","altNames","type","value","ip"],"sources":["../../../src/utils/generateCerts/generateCerts.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport {pki, md} from 'node-forge';\nimport {caAttributes, clientAttributes, serverAttributes} from './generateCerts.const';\nimport {generateCertsOptions, GeneratedCertificate} from './generateCerts.types';\n\nlet serialNumber = 1;\n\nconst dir = path.resolve('certs');\n\n/** Generate a certificate and a private key */\nexport function generateCerts(\n attributes: Array<pki.CertificateField>,\n options: generateCertsOptions = {},\n): GeneratedCertificate {\n const keys = pki.rsa.generateKeyPair(2048);\n const cert = pki.createCertificate();\n cert.publicKey = keys.publicKey;\n const serial = `00${serialNumber.toString()}`;\n cert.serialNumber = serial.substr(serial.length - 2);\n serialNumber++;\n cert.validity.notBefore = new Date();\n cert.validity.notAfter = new Date();\n cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);\n cert.setSubject(attributes);\n cert.setIssuer(options.issuer ?? attributes);\n cert.setExtensions(getExtensions(options));\n cert.sign(options.key ?? keys.privateKey, md.sha256.create());\n return {\n cert: pki.certificateToPem(cert),\n privateKey: keys.privateKey,\n privateKeyPem: pki.privateKeyToPem(keys.privateKey),\n };\n}\n\n/**\n * Generate a CA certificate as well as a client and a server private key and certificate\n * These will be stored in the $ROOT/certs directoryA\n */\nexport function generatePkiEnvironment(): void {\n const ca = generateCerts(caAttributes, {ca: true});\n const client = generateCerts(clientAttributes, {key: ca.privateKey, issuer: caAttributes});\n const server = generateCerts(serverAttributes, {key: ca.privateKey, issuer: caAttributes});\n\n // Create directory if it does not exist\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir);\n }\n\n fs.writeFileSync(path.resolve(dir, 'ca.crt'), ca.cert);\n fs.writeFileSync(path.resolve(dir, 'ca.key'), ca.privateKeyPem);\n fs.writeFileSync(path.resolve(dir, 'client.crt'), client.cert);\n fs.writeFileSync(path.resolve(dir, 'client.key'), client.privateKeyPem);\n fs.writeFileSync(path.resolve(dir, 'server.crt'), server.cert);\n fs.writeFileSync(path.resolve(dir, 'server.key'), server.privateKeyPem);\n}\n\n/** Get the best fitting extensions for the certificate to generate */\nfunction getExtensions(options: generateCertsOptions = {}): Array<unknown> {\n return [\n {\n name: 'basicConstraints',\n cA: options.ca === true,\n },\n {\n name: 'keyUsage',\n keyCertSign: true,\n digitalSignature: true,\n nonRepudiation: true,\n keyEncipherment: true,\n dataEncipherment: true,\n },\n {\n name: 'extKeyUsage',\n serverAuth: true,\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n timeStamping: true,\n },\n {\n name: 'nsCertType',\n client: true,\n server: true,\n email: true,\n objsign: true,\n sslCA: true,\n emailCA: true,\n objCA: true,\n },\n {\n name: 'subjectAltName',\n altNames: [\n {\n type: 2,\n value: 'localhost',\n },\n {\n type: 7,\n ip: '127.0.0.1',\n },\n ],\n },\n {\n name: 'subjectKeyIdentifier',\n },\n ];\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { pki } from 'node-forge';
2
+ /** Options ot generate fake certificates */
3
+ export interface generateCertsOptions {
4
+ /** Indicates that we should generate a CA certificate */
5
+ ca?: boolean;
6
+ /** Certificate issue information */
7
+ issuer?: Array<pki.CertificateField>;
8
+ /** Private key to use to sign the certificate */
9
+ key?: pki.PrivateKey;
10
+ }
11
+ /** Fake certificate generated */
12
+ export interface GeneratedCertificate {
13
+ /** PEM certificate */
14
+ cert: string;
15
+ /** Private key to use with the certificate */
16
+ privateKey: pki.PrivateKey;
17
+ /** PEM encoding of the private key */
18
+ privateKeyPem: string;
19
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=generateCerts.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCerts.types.js","names":[],"sources":["../../../src/utils/generateCerts/generateCerts.types.ts"],"sourcesContent":["import {pki} from 'node-forge';\n\n/** Options ot generate fake certificates */\nexport interface generateCertsOptions {\n /** Indicates that we should generate a CA certificate */\n ca?: boolean;\n /** Certificate issue information */\n issuer?: Array<pki.CertificateField>;\n /** Private key to use to sign the certificate */\n key?: pki.PrivateKey;\n}\n\n/** Fake certificate generated */\nexport interface GeneratedCertificate {\n /** PEM certificate */\n cert: string;\n /** Private key to use with the certificate */\n privateKey: pki.PrivateKey;\n /** PEM encoding of the private key */\n privateKeyPem: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from './generateCerts';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _generateCerts = require("./generateCerts");
7
+ Object.keys(_generateCerts).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _generateCerts[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _generateCerts[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_generateCerts","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/generateCerts/index.ts"],"sourcesContent":["export * from './generateCerts';\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ /** Generate Admin api Bearer Token authorization header */
2
+ export declare function getAdminApiBearer(email: string, payload?: {}): string;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAdminApiBearer = getAdminApiBearer;
7
+ var _faker = require("@faker-js/faker");
8
+ var _generators = require("../generators");
9
+ /** Generate Admin api Bearer Token authorization header */
10
+ function getAdminApiBearer(email, payload = {}) {
11
+ return `Bearer ${(0, _generators.generateAccessToken)(email, {
12
+ audience: process.env.ADMIN_API_ACCESS_TOKEN_AUDIENCE,
13
+ issuer: process.env.ADMIN_API_PUBLIC_URL
14
+ }, {
15
+ per: [_faker.faker.lorem.word(), _faker.faker.lorem.word()],
16
+ ...payload
17
+ })}`;
18
+ }
19
+ //# sourceMappingURL=getAdminApiBearer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAdminApiBearer.js","names":["_faker","require","_generators","getAdminApiBearer","email","payload","generateAccessToken","audience","process","env","ADMIN_API_ACCESS_TOKEN_AUDIENCE","issuer","ADMIN_API_PUBLIC_URL","per","faker","lorem","word"],"sources":["../../src/utils/getAdminApiBearer.ts"],"sourcesContent":["import { faker } from '@faker-js/faker';\nimport {generateAccessToken} from 'generators';\n\n/** Generate Admin api Bearer Token authorization header */\nexport function getAdminApiBearer(email: string, payload = {}): string {\n return `Bearer ${generateAccessToken(\n email,\n {\n audience: process.env.ADMIN_API_ACCESS_TOKEN_AUDIENCE,\n issuer: process.env.ADMIN_API_PUBLIC_URL,\n },\n {\n per: [faker.lorem.word(), faker.lorem.word()],\n ...payload,\n },\n )}`;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA;AACO,SAASE,iBAAiBA,CAACC,KAAa,EAAEC,OAAO,GAAG,CAAC,CAAC,EAAU;EACrE,OAAO,UAAU,IAAAC,+BAAmB,EAClCF,KAAK,EACL;IACEG,QAAQ,EAAEC,OAAO,CAACC,GAAG,CAACC,+BAA+B;IACrDC,MAAM,EAAEH,OAAO,CAACC,GAAG,CAACG;EACtB,CAAC,EACD;IACEC,GAAG,EAAE,CAACC,YAAK,CAACC,KAAK,CAACC,IAAI,CAAC,CAAC,EAAEF,YAAK,CAACC,KAAK,CAACC,IAAI,CAAC,CAAC,CAAC;IAC7C,GAAGX;EACL,CACF,CAAC,EAAE;AACL","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { SignOptions } from 'jsonwebtoken';
2
+ /** Generate Bearer Token authorization header */
3
+ export declare function getBearer(userId: string, options?: SignOptions, payload?: string | object | Buffer): string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getBearer = getBearer;
7
+ var _generators = require("../generators");
8
+ /** Generate Bearer Token authorization header */
9
+ function getBearer(userId, options = {}, payload = {}) {
10
+ return `Bearer ${(0, _generators.generateAccessToken)(userId, options, payload)}`;
11
+ }
12
+ //# sourceMappingURL=getBearer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBearer.js","names":["_generators","require","getBearer","userId","options","payload","generateAccessToken"],"sources":["../../src/utils/getBearer.ts"],"sourcesContent":["import {SignOptions} from 'jsonwebtoken';\nimport {generateAccessToken} from 'generators';\n\n/** Generate Bearer Token authorization header */\nexport function getBearer(\n userId: string,\n options: SignOptions = {},\n payload: string | object | Buffer = {},\n): string {\n return `Bearer ${generateAccessToken(userId, options, payload)}`;\n}\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA;AACO,SAASC,SAASA,CACvBC,MAAc,EACdC,OAAoB,GAAG,CAAC,CAAC,EACzBC,OAAiC,GAAG,CAAC,CAAC,EAC9B;EACR,OAAO,UAAU,IAAAC,+BAAmB,EAACH,MAAM,EAAEC,OAAO,EAAEC,OAAO,CAAC,EAAE;AAClE","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ export * from './getBearer';
2
+ export * from './tlsRequest';
3
+ export * from './generateCerts';
4
+ export * from './jwtRequest';
5
+ export * from './staticRequest';
6
+ export * from './getAdminApiBearer';
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _getBearer = require("./getBearer");
7
+ Object.keys(_getBearer).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _getBearer[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _getBearer[key];
14
+ }
15
+ });
16
+ });
17
+ var _tlsRequest = require("./tlsRequest");
18
+ Object.keys(_tlsRequest).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _tlsRequest[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _tlsRequest[key];
25
+ }
26
+ });
27
+ });
28
+ var _generateCerts = require("./generateCerts");
29
+ Object.keys(_generateCerts).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _generateCerts[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _generateCerts[key];
36
+ }
37
+ });
38
+ });
39
+ var _jwtRequest = require("./jwtRequest");
40
+ Object.keys(_jwtRequest).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _jwtRequest[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _jwtRequest[key];
47
+ }
48
+ });
49
+ });
50
+ var _staticRequest = require("./staticRequest");
51
+ Object.keys(_staticRequest).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _staticRequest[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _staticRequest[key];
58
+ }
59
+ });
60
+ });
61
+ var _getAdminApiBearer = require("./getAdminApiBearer");
62
+ Object.keys(_getAdminApiBearer).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _getAdminApiBearer[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function () {
68
+ return _getAdminApiBearer[key];
69
+ }
70
+ });
71
+ });
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_getBearer","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_tlsRequest","_generateCerts","_jwtRequest","_staticRequest","_getAdminApiBearer"],"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './getBearer';\nexport * from './tlsRequest';\nexport * from './generateCerts';\nexport * from './jwtRequest';\nexport * from './staticRequest';\nexport * from './getAdminApiBearer';\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,cAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,cAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,cAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,cAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,WAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,WAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,WAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,WAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,cAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,cAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,cAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,cAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,kBAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,kBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,kBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,kBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import supertest from 'supertest';
2
+ /**
3
+ * Get a pre-configured generator for an express instance that uses JWT authentication
4
+ * @param {Object} app Express app
5
+ * @param {String} method Method in which the requests will be made
6
+ * @param {String} endpoint PAth of the endpoint where the requests are to be made
7
+ * @return {Function} - Supertest instance with JWT Authorization
8
+ */
9
+ export declare function jwtRequest(app: any, method: any, endpoint: any): (userId: string) => supertest.Request;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.jwtRequest = jwtRequest;
8
+ var _supertest = _interopRequireDefault(require("supertest"));
9
+ var _getBearer = require("./getBearer");
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-nocheck
12
+
13
+ /**
14
+ * Get a pre-configured generator for an express instance that uses JWT authentication
15
+ * @param {Object} app Express app
16
+ * @param {String} method Method in which the requests will be made
17
+ * @param {String} endpoint PAth of the endpoint where the requests are to be made
18
+ * @return {Function} - Supertest instance with JWT Authorization
19
+ */
20
+ function jwtRequest(app, method, endpoint) {
21
+ /**
22
+ * @param {Object} user User making the request
23
+ * @return {Object} Pre-configured supertest instance
24
+ */
25
+ return async function request(userId) {
26
+ return (0, _supertest.default)(app)[method](endpoint).set('Authorization', (0, _getBearer.getBearer)(userId));
27
+ };
28
+ }
29
+ //# sourceMappingURL=jwtRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtRequest.js","names":["_supertest","_interopRequireDefault","require","_getBearer","jwtRequest","app","method","endpoint","request","userId","supertest","set","getBearer"],"sources":["../../src/utils/jwtRequest.ts"],"sourcesContent":[" \n \n \n \n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport supertest from 'supertest';\nimport {getBearer} from './getBearer';\n\n/**\n * Get a pre-configured generator for an express instance that uses JWT authentication\n * @param {Object} app Express app\n * @param {String} method Method in which the requests will be made\n * @param {String} endpoint PAth of the endpoint where the requests are to be made\n * @return {Function} - Supertest instance with JWT Authorization\n */\nexport function jwtRequest(app, method, endpoint) {\n /**\n * @param {Object} user User making the request\n * @return {Object} Pre-configured supertest instance\n */\n return async function request(userId: string): supertest.Request {\n return supertest(app)[method](endpoint).set('Authorization', getBearer(userId));\n };\n}\n"],"mappings":";;;;;;;AAMA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAHA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CAACC,GAAG,EAAEC,MAAM,EAAEC,QAAQ,EAAE;EAChD;AACF;AACA;AACA;EACE,OAAO,eAAeC,OAAOA,CAACC,MAAc,EAAqB;IAC/D,OAAO,IAAAC,kBAAS,EAACL,GAAG,CAAC,CAACC,MAAM,CAAC,CAACC,QAAQ,CAAC,CAACI,GAAG,CAAC,eAAe,EAAE,IAAAC,oBAAS,EAACH,MAAM,CAAC,CAAC;EACjF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { Application } from 'express';
2
+ import supertest from 'supertest';
3
+ /**
4
+ * Get a pre-configured generator for an express instance that uses STATIC client key authentication
5
+ * @param app Express app
6
+ * @param method Method in which the requests will be made
7
+ * @param endpoint PAth of the endpoint where the requests are to be made
8
+ * @return - Supertest instance with STATIC Authorization
9
+ */
10
+ export declare function staticRequest(app: Application, method: string, endpoint: string): () => supertest.Request;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.staticRequest = staticRequest;
8
+ var _supertest = _interopRequireDefault(require("supertest"));
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-nocheck
11
+
12
+ /**
13
+ * Get a pre-configured generator for an express instance that uses STATIC client key authentication
14
+ * @param app Express app
15
+ * @param method Method in which the requests will be made
16
+ * @param endpoint PAth of the endpoint where the requests are to be made
17
+ * @return - Supertest instance with STATIC Authorization
18
+ */
19
+ function staticRequest(app, method, endpoint) {
20
+ return async function request() {
21
+ return (0, _supertest.default)(app)[method](endpoint).set('Authorization', `Bearer ${process.env.STATIC_TOKEN}`);
22
+ };
23
+ }
24
+ //# sourceMappingURL=staticRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staticRequest.js","names":["_supertest","_interopRequireDefault","require","staticRequest","app","method","endpoint","request","supertest","set","process","env","STATIC_TOKEN"],"sources":["../../src/utils/staticRequest.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { Application } from 'express';\nimport supertest from 'supertest';\n\n/**\n * Get a pre-configured generator for an express instance that uses STATIC client key authentication\n * @param app Express app\n * @param method Method in which the requests will be made\n * @param endpoint PAth of the endpoint where the requests are to be made\n * @return - Supertest instance with STATIC Authorization\n */\nexport function staticRequest(\n app: Application,\n method: string,\n endpoint: string\n) {\n return async function request(): supertest.Request {\n return supertest(app) [method](endpoint)\n .set('Authorization', `Bearer ${process.env.STATIC_TOKEN as string}`);\n };\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAHA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAC3BC,GAAgB,EAChBC,MAAc,EACdC,QAAgB,EAChB;EACA,OAAO,eAAeC,OAAOA,CAAA,EAAsB;IACjD,OAAO,IAAAC,kBAAS,EAACJ,GAAG,CAAC,CAAEC,MAAM,CAAC,CAACC,QAAQ,CAAC,CACrCG,GAAG,CAAC,eAAe,EAAE,UAAUC,OAAO,CAACC,GAAG,CAACC,YAAY,EAAY,CAAC;EACzE,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import { Request } from 'supertest';
2
+ import { tlsRequestOptions } from './tlsRequest.types';
3
+ /**
4
+ * Wrapper for supertest that adds TLS encryption
5
+ */
6
+ export declare function tlsRequest(options?: tlsRequestOptions): Promise<Request>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.tlsRequest = tlsRequest;
8
+ var _fs = _interopRequireDefault(require("fs"));
9
+ var _supertest = require("supertest");
10
+ const customAgent = (0, _supertest.agent)(`https://localhost:${process.env.PORT}`);
11
+ let settings;
12
+
13
+ /**
14
+ * Wrapper for supertest that adds TLS encryption
15
+ */
16
+ async function tlsRequest(options = {}) {
17
+ if (!settings) loadDefaultSettings();
18
+ const ca = options.ca ? _fs.default.readFileSync(options.ca, 'utf-8') : settings.ca;
19
+ const key = options.key ? _fs.default.readFileSync(options.key, 'utf-8') : settings.key;
20
+ const cert = options.cert ? _fs.default.readFileSync(options.cert, 'utf-8') : settings.cert;
21
+ if (!ca || !key || !cert) throw new Error('Missing some TLS configuration');
22
+ return customAgent.ca(ca).key(key).cert(cert);
23
+ }
24
+
25
+ /** Load TLS settings from env variables */
26
+ function loadDefaultSettings() {
27
+ const {
28
+ TLS_REQUEST_KEY,
29
+ TLS_REQUEST_CERT,
30
+ TLS_REQUEST_CA,
31
+ TLS_SERVER_KEY,
32
+ TLS_SERVER_CERT,
33
+ TLS_CA
34
+ } = process.env;
35
+ if (!(TLS_REQUEST_KEY || TLS_SERVER_KEY)) {
36
+ throw new Error('TLS Request: no TLS setting specified');
37
+ }
38
+ settings = {
39
+ key: _fs.default.readFileSync(TLS_REQUEST_KEY ?? TLS_SERVER_KEY, 'utf-8'),
40
+ cert: _fs.default.readFileSync(TLS_REQUEST_CERT ?? TLS_SERVER_CERT, 'utf-8'),
41
+ ca: _fs.default.readFileSync(TLS_REQUEST_CA ?? TLS_CA, 'utf-8')
42
+ };
43
+ }
44
+ //# sourceMappingURL=tlsRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tlsRequest.js","names":["_fs","_interopRequireDefault","require","_supertest","customAgent","agent","process","env","PORT","settings","tlsRequest","options","loadDefaultSettings","ca","fs","readFileSync","key","cert","Error","TLS_REQUEST_KEY","TLS_REQUEST_CERT","TLS_REQUEST_CA","TLS_SERVER_KEY","TLS_SERVER_CERT","TLS_CA"],"sources":["../../src/utils/tlsRequest.ts"],"sourcesContent":["import fs from 'fs';\nimport {agent, Request} from 'supertest';\nimport {tlsRequestOptions} from './tlsRequest.types';\n\nconst customAgent = agent(`https://localhost:${process.env.PORT as string}`);\n\nlet settings: tlsRequestOptions;\n\n/**\n * Wrapper for supertest that adds TLS encryption\n */\nexport async function tlsRequest(options: tlsRequestOptions = {}): Promise<Request> {\n if (!settings) loadDefaultSettings();\n const ca = options.ca ? fs.readFileSync(options.ca, 'utf-8') : settings.ca;\n const key = options.key ? fs.readFileSync(options.key, 'utf-8') : settings.key;\n const cert = options.cert ? fs.readFileSync(options.cert, 'utf-8') : settings.cert;\n if (!ca || !key || !cert) throw new Error('Missing some TLS configuration');\n return customAgent.ca(ca).key(key).cert(cert);\n}\n\n/** Load TLS settings from env variables */\nfunction loadDefaultSettings(): void {\n const {\n TLS_REQUEST_KEY,\n TLS_REQUEST_CERT,\n TLS_REQUEST_CA,\n TLS_SERVER_KEY,\n TLS_SERVER_CERT,\n TLS_CA,\n } = process.env;\n\n if (!(TLS_REQUEST_KEY || TLS_SERVER_KEY)) {\n throw new Error('TLS Request: no TLS setting specified');\n }\n\n settings = {\n key: fs.readFileSync((TLS_REQUEST_KEY ?? TLS_SERVER_KEY) as string, 'utf-8'),\n cert: fs.readFileSync((TLS_REQUEST_CERT ?? TLS_SERVER_CERT) as string, 'utf-8'),\n ca: fs.readFileSync((TLS_REQUEST_CA ?? TLS_CA) as string, 'utf-8'),\n };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAGA,MAAME,WAAW,GAAG,IAAAC,gBAAK,EAAC,qBAAqBC,OAAO,CAACC,GAAG,CAACC,IAAI,EAAY,CAAC;AAE5E,IAAIC,QAA2B;;AAE/B;AACA;AACA;AACO,eAAeC,UAAUA,CAACC,OAA0B,GAAG,CAAC,CAAC,EAAoB;EAClF,IAAI,CAACF,QAAQ,EAAEG,mBAAmB,CAAC,CAAC;EACpC,MAAMC,EAAE,GAAGF,OAAO,CAACE,EAAE,GAAGC,WAAE,CAACC,YAAY,CAACJ,OAAO,CAACE,EAAE,EAAE,OAAO,CAAC,GAAGJ,QAAQ,CAACI,EAAE;EAC1E,MAAMG,GAAG,GAAGL,OAAO,CAACK,GAAG,GAAGF,WAAE,CAACC,YAAY,CAACJ,OAAO,CAACK,GAAG,EAAE,OAAO,CAAC,GAAGP,QAAQ,CAACO,GAAG;EAC9E,MAAMC,IAAI,GAAGN,OAAO,CAACM,IAAI,GAAGH,WAAE,CAACC,YAAY,CAACJ,OAAO,CAACM,IAAI,EAAE,OAAO,CAAC,GAAGR,QAAQ,CAACQ,IAAI;EAClF,IAAI,CAACJ,EAAE,IAAI,CAACG,GAAG,IAAI,CAACC,IAAI,EAAE,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;EAC3E,OAAOd,WAAW,CAACS,EAAE,CAACA,EAAE,CAAC,CAACG,GAAG,CAACA,GAAG,CAAC,CAACC,IAAI,CAACA,IAAI,CAAC;AAC/C;;AAEA;AACA,SAASL,mBAAmBA,CAAA,EAAS;EACnC,MAAM;IACJO,eAAe;IACfC,gBAAgB;IAChBC,cAAc;IACdC,cAAc;IACdC,eAAe;IACfC;EACF,CAAC,GAAGlB,OAAO,CAACC,GAAG;EAEf,IAAI,EAAEY,eAAe,IAAIG,cAAc,CAAC,EAAE;IACxC,MAAM,IAAIJ,KAAK,CAAC,uCAAuC,CAAC;EAC1D;EAEAT,QAAQ,GAAG;IACTO,GAAG,EAAEF,WAAE,CAACC,YAAY,CAAEI,eAAe,IAAIG,cAAc,EAAa,OAAO,CAAC;IAC5EL,IAAI,EAAEH,WAAE,CAACC,YAAY,CAAEK,gBAAgB,IAAIG,eAAe,EAAa,OAAO,CAAC;IAC/EV,EAAE,EAAEC,WAAE,CAACC,YAAY,CAAEM,cAAc,IAAIG,MAAM,EAAa,OAAO;EACnE,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ /** Options for TLS requester */
2
+ export interface tlsRequestOptions {
3
+ /** CA certificate used to validate the server */
4
+ ca?: string;
5
+ /** Key used to sign the requests */
6
+ key?: string;
7
+ /** Certificate to expose to the server */
8
+ cert?: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=tlsRequest.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tlsRequest.types.js","names":[],"sources":["../../src/utils/tlsRequest.types.ts"],"sourcesContent":["/** Options for TLS requester */\nexport interface tlsRequestOptions {\n /** CA certificate used to validate the server */\n ca?: string;\n /** Key used to sign the requests */\n key?: string;\n /** Certificate to expose to the server */\n cert?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import globals from 'globals';
2
+ import pluginJs from '@eslint/js';
3
+ import tseslint from 'typescript-eslint';
4
+
5
+ export default [
6
+ { files: ['.src/', '**/*.{js,mjs,cjs,ts}'] },
7
+ { languageOptions: { globals: { ...globals.browser, ...globals.node } } },
8
+ pluginJs.configs.recommended,
9
+ { ignores: ['**/*.test.ts', '**/*.d.ts'] },
10
+ ...tseslint.configs.recommended
11
+ ];
package/jsconfig.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2020",
4
+ "module": "es6",
5
+ "checkJs": true,
6
+ "baseUrl": "src",
7
+ "moduleResolution": "node",
8
+ "paths": {
9
+ "test": ["../test"],
10
+ "test/*": ["../test/*"]
11
+ }
12
+ },
13
+ "exclude": ["node_modules", "dist"]
14
+ }
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "backend-test-tools",
3
+ "version": "1.0.0",
4
+ "description": "Node test tools",
5
+ "main": "dist/index.js",
6
+ "scripts": {
7
+ "lint": "eslint ./src",
8
+ "lint:fix": "eslint ./src --fix",
9
+ "test": "NODE_ENV=test nyc --reporter=none mocha test/hooks.ts \"src/**/*.test.ts\"",
10
+ "build": "rimraf dist && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && npx babel src --out-dir dist --source-maps --extensions \".ts\" --ignore \"**/*.test.ts\" --copy-files --no-copy-ignored",
11
+ "prepublishOnly": "npm run build"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/prakashmahendran/backend-test-tools.git"
16
+ },
17
+ "author": "Ram",
18
+ "license": "UNLICENSED",
19
+ "bugs": {
20
+ "url": "https://github.com/prakashmahendran/backend-test-tools/issues"
21
+ },
22
+ "homepage": "https://github.com/prakashmahendran/backend-test-tools#readme",
23
+ "devDependencies": {
24
+ "@babel/cli": "^7.25.7",
25
+ "@babel/core": "^7.25.8",
26
+ "@babel/plugin-transform-class-properties": "^7.25.7",
27
+ "@babel/plugin-transform-runtime": "^7.25.7",
28
+ "@babel/preset-env": "^7.25.8",
29
+ "@babel/preset-typescript": "^7.25.7",
30
+ "@babel/register": "^7.25.7",
31
+ "@eslint/js": "^9.12.0",
32
+ "@faker-js/faker": "^9.0.3",
33
+ "@types/chai": "^4.3.0",
34
+ "@types/jsonwebtoken": "^8.5.9",
35
+ "@types/mocha": "^9.1.1",
36
+ "@types/node": "^16.18.114",
37
+ "@types/node-forge": "^0.10.10",
38
+ "@types/sinon": "^10.0.20",
39
+ "@types/superagent": "^4.1.24",
40
+ "@types/supertest": "^2.0.16",
41
+ "@types/validator": "^13.12.2",
42
+ "@typescript-eslint/eslint-plugin": "^8.8.1",
43
+ "babel-plugin-istanbul": "^7.0.0",
44
+ "babel-plugin-module-resolver": "^5.0.2",
45
+ "babel-plugin-tsconfig-paths": "^1.0.3",
46
+ "core-js": "^3.38.1",
47
+ "eslint": "^9.13.0",
48
+ "globals": "^15.11.0",
49
+ "husky": "^4.3.8",
50
+ "lint-staged": "^10.5.4",
51
+ "mocha": "^9.2.2",
52
+ "move-cli": "^2.0.0",
53
+ "nyc": "^15.1.0",
54
+ "prettier": "^3.3.3",
55
+ "rimraf": "^6.0.1",
56
+ "ts-node": "^10.9.2",
57
+ "tsc-alias": "^1.8.10",
58
+ "tsconfig-paths": "^4.2.0",
59
+ "typescript": "^5.5.4",
60
+ "typescript-eslint": "^8.8.1"
61
+ },
62
+ "husky": {
63
+ "hooks": {
64
+ "pre-commit": "lint-staged"
65
+ }
66
+ },
67
+ "lint-staged": {
68
+ "*.js": "eslint",
69
+ "*.ts": "eslint"
70
+ },
71
+ "dependencies": {
72
+ "@babel/runtime": "^7.25.7",
73
+ "jimp": "^0.16.13",
74
+ "jsonwebtoken": "^8.5.1",
75
+ "node-forge": "^1.3.1",
76
+ "rfdc": "^1.4.1",
77
+ "sinon": "^9.2.4",
78
+ "supertest": "^4.0.2"
79
+ },
80
+ "peerDependencies": {
81
+ "node-server-engine": "^1.0.0"
82
+ }
83
+ }