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.
- package/.env.example +51 -0
- package/.mocharc.js +9 -0
- package/.prettierrc +7 -0
- package/README.md +271 -0
- package/babel.config.json +33 -0
- package/dist/factory/factory.d.ts +11 -0
- package/dist/factory/factory.js +39 -0
- package/dist/factory/factory.js.map +1 -0
- package/dist/factory/factory.types.d.ts +38 -0
- package/dist/factory/factory.types.js +2 -0
- package/dist/factory/factory.types.js.map +1 -0
- package/dist/factory/index.d.ts +2 -0
- package/dist/factory/index.js +28 -0
- package/dist/factory/index.js.map +1 -0
- package/dist/factory/workers/connection.d.ts +3 -0
- package/dist/factory/workers/connection.js +25 -0
- package/dist/factory/workers/connection.js.map +1 -0
- package/dist/factory/workers/connection.types.d.ts +28 -0
- package/dist/factory/workers/connection.types.js +2 -0
- package/dist/factory/workers/connection.types.js.map +1 -0
- package/dist/factory/workers/index.d.ts +6 -0
- package/dist/factory/workers/index.js +72 -0
- package/dist/factory/workers/index.js.map +1 -0
- package/dist/factory/workers/organization.d.ts +3 -0
- package/dist/factory/workers/organization.js +36 -0
- package/dist/factory/workers/organization.js.map +1 -0
- package/dist/factory/workers/organization.types.d.ts +51 -0
- package/dist/factory/workers/organization.types.js +2 -0
- package/dist/factory/workers/organization.types.js.map +1 -0
- package/dist/factory/workers/user.d.ts +5 -0
- package/dist/factory/workers/user.js +60 -0
- package/dist/factory/workers/user.js.map +1 -0
- package/dist/factory/workers/user.types.d.ts +76 -0
- package/dist/factory/workers/user.types.js +2 -0
- package/dist/factory/workers/user.types.js.map +1 -0
- package/dist/generators/generateAccessToken.d.ts +3 -0
- package/dist/generators/generateAccessToken.js +27 -0
- package/dist/generators/generateAccessToken.js.map +1 -0
- package/dist/generators/generateChatId.d.ts +2 -0
- package/dist/generators/generateChatId.js +13 -0
- package/dist/generators/generateChatId.js.map +1 -0
- package/dist/generators/generateEcdsaKeyPair.d.ts +2 -0
- package/dist/generators/generateEcdsaKeyPair.js +31 -0
- package/dist/generators/generateEcdsaKeyPair.js.map +1 -0
- package/dist/generators/generateImageBuffer.d.ts +3 -0
- package/dist/generators/generateImageBuffer.js +23 -0
- package/dist/generators/generateImageBuffer.js.map +1 -0
- package/dist/generators/generateImageBuffer.types.d.ts +7 -0
- package/dist/generators/generateImageBuffer.types.js +2 -0
- package/dist/generators/generateImageBuffer.types.js.map +1 -0
- package/dist/generators/generateKeyPair.d.ts +6 -0
- package/dist/generators/generateKeyPair.js +36 -0
- package/dist/generators/generateKeyPair.js.map +1 -0
- package/dist/generators/generateKeyPair.types.d.ts +9 -0
- package/dist/generators/generateKeyPair.types.js +2 -0
- package/dist/generators/generateKeyPair.types.js.map +1 -0
- package/dist/generators/generateLocale.d.ts +5 -0
- package/dist/generators/generateLocale.js +16 -0
- package/dist/generators/generateLocale.js.map +1 -0
- package/dist/generators/generateRegId.d.ts +4 -0
- package/dist/generators/generateRegId.js +14 -0
- package/dist/generators/generateRegId.js.map +1 -0
- package/dist/generators/generateRsaKeyPair.d.ts +2 -0
- package/dist/generators/generateRsaKeyPair.js +22 -0
- package/dist/generators/generateRsaKeyPair.js.map +1 -0
- package/dist/generators/generateUserCrypto.d.ts +15 -0
- package/dist/generators/generateUserCrypto.js +33 -0
- package/dist/generators/generateUserCrypto.js.map +1 -0
- package/dist/generators/index.d.ts +9 -0
- package/dist/generators/index.js +105 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/stubs/index.d.ts +1 -0
- package/dist/stubs/index.js +17 -0
- package/dist/stubs/index.js.map +1 -0
- package/dist/stubs/server-engine/Leader.types.d.ts +8 -0
- package/dist/stubs/server-engine/Leader.types.js +2 -0
- package/dist/stubs/server-engine/Leader.types.js.map +1 -0
- package/dist/stubs/server-engine/Localizator.d.ts +3 -0
- package/dist/stubs/server-engine/Localizator.js +34 -0
- package/dist/stubs/server-engine/Localizator.js.map +1 -0
- package/dist/stubs/server-engine/Localizator.types.d.ts +22 -0
- package/dist/stubs/server-engine/Localizator.types.js +2 -0
- package/dist/stubs/server-engine/Localizator.types.js.map +1 -0
- package/dist/stubs/server-engine/PubSub.d.ts +3 -0
- package/dist/stubs/server-engine/PubSub.js +24 -0
- package/dist/stubs/server-engine/PubSub.js.map +1 -0
- package/dist/stubs/server-engine/PubSub.types.d.ts +14 -0
- package/dist/stubs/server-engine/PubSub.types.js +2 -0
- package/dist/stubs/server-engine/PubSub.types.js.map +1 -0
- package/dist/stubs/server-engine/PushNotification.d.ts +3 -0
- package/dist/stubs/server-engine/PushNotification.js +18 -0
- package/dist/stubs/server-engine/PushNotification.js.map +1 -0
- package/dist/stubs/server-engine/PushNotification.types.d.ts +8 -0
- package/dist/stubs/server-engine/PushNotification.types.js +2 -0
- package/dist/stubs/server-engine/PushNotification.types.js.map +1 -0
- package/dist/stubs/server-engine/index.d.ts +4 -0
- package/dist/stubs/server-engine/index.js +50 -0
- package/dist/stubs/server-engine/index.js.map +1 -0
- package/dist/stubs/server-engine/sendPush.d.ts +3 -0
- package/dist/stubs/server-engine/sendPush.js +15 -0
- package/dist/stubs/server-engine/sendPush.js.map +1 -0
- package/dist/utils/generateCerts/generateCerts.const.d.ts +5 -0
- package/dist/utils/generateCerts/generateCerts.const.js +35 -0
- package/dist/utils/generateCerts/generateCerts.const.js.map +1 -0
- package/dist/utils/generateCerts/generateCerts.d.ts +9 -0
- package/dist/utils/generateCerts/generateCerts.js +108 -0
- package/dist/utils/generateCerts/generateCerts.js.map +1 -0
- package/dist/utils/generateCerts/generateCerts.types.d.ts +19 -0
- package/dist/utils/generateCerts/generateCerts.types.js +2 -0
- package/dist/utils/generateCerts/generateCerts.types.js.map +1 -0
- package/dist/utils/generateCerts/index.d.ts +1 -0
- package/dist/utils/generateCerts/index.js +17 -0
- package/dist/utils/generateCerts/index.js.map +1 -0
- package/dist/utils/getAdminApiBearer.d.ts +2 -0
- package/dist/utils/getAdminApiBearer.js +19 -0
- package/dist/utils/getAdminApiBearer.js.map +1 -0
- package/dist/utils/getBearer.d.ts +3 -0
- package/dist/utils/getBearer.js +12 -0
- package/dist/utils/getBearer.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +72 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jwtRequest.d.ts +9 -0
- package/dist/utils/jwtRequest.js +29 -0
- package/dist/utils/jwtRequest.js.map +1 -0
- package/dist/utils/staticRequest.d.ts +10 -0
- package/dist/utils/staticRequest.js +24 -0
- package/dist/utils/staticRequest.js.map +1 -0
- package/dist/utils/tlsRequest.d.ts +6 -0
- package/dist/utils/tlsRequest.js +44 -0
- package/dist/utils/tlsRequest.js.map +1 -0
- package/dist/utils/tlsRequest.types.d.ts +9 -0
- package/dist/utils/tlsRequest.types.js +2 -0
- package/dist/utils/tlsRequest.types.js.map +1 -0
- package/eslint.config.mjs +11 -0
- package/jsconfig.json +14 -0
- package/package.json +83 -0
- package/src/factory/factory.ts +51 -0
- package/src/factory/factory.types.ts +50 -0
- package/src/factory/index.ts +2 -0
- package/src/factory/workers/connection.ts +22 -0
- package/src/factory/workers/connection.types.ts +29 -0
- package/src/factory/workers/index.ts +6 -0
- package/src/factory/workers/organization.ts +35 -0
- package/src/factory/workers/organization.types.ts +53 -0
- package/src/factory/workers/user.ts +57 -0
- package/src/factory/workers/user.types.ts +77 -0
- package/src/generators/generateAccessToken.ts +24 -0
- package/src/generators/generateChatId.ts +6 -0
- package/src/generators/generateEcdsaKeyPair.ts +16 -0
- package/src/generators/generateImageBuffer.ts +19 -0
- package/src/generators/generateImageBuffer.types.ts +7 -0
- package/src/generators/generateKeyPair.ts +24 -0
- package/src/generators/generateKeyPair.types.ts +9 -0
- package/src/generators/generateLocale.ts +28 -0
- package/src/generators/generateRegId.ts +9 -0
- package/src/generators/generateRsaKeyPair.ts +12 -0
- package/src/generators/generateUserCrypto.ts +24 -0
- package/src/generators/index.ts +9 -0
- package/src/index.ts +4 -0
- package/src/stubs/index.ts +1 -0
- package/src/stubs/server-engine/Leader.types.ts +9 -0
- package/src/stubs/server-engine/Localizator.ts +25 -0
- package/src/stubs/server-engine/Localizator.types.ts +24 -0
- package/src/stubs/server-engine/PubSub.ts +13 -0
- package/src/stubs/server-engine/PubSub.types.ts +15 -0
- package/src/stubs/server-engine/PushNotification.ts +11 -0
- package/src/stubs/server-engine/PushNotification.types.ts +9 -0
- package/src/stubs/server-engine/index.ts +4 -0
- package/src/stubs/server-engine/sendPush.ts +7 -0
- package/src/utils/generateCerts/generateCerts.const.ts +48 -0
- package/src/utils/generateCerts/generateCerts.ts +108 -0
- package/src/utils/generateCerts/generateCerts.types.ts +21 -0
- package/src/utils/generateCerts/index.ts +1 -0
- package/src/utils/getAdminApiBearer.ts +17 -0
- package/src/utils/getBearer.ts +11 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/jwtRequest.ts +25 -0
- package/src/utils/staticRequest.ts +22 -0
- package/src/utils/tlsRequest.ts +41 -0
- package/src/utils/tlsRequest.types.ts +9 -0
- package/test/env.ts +10 -0
- package/tsconfig.build.json +4 -0
- 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 @@
|
|
|
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,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,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,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,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 @@
|
|
|
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
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
|
+
}
|