@nsshunt/stsconfig 1.25.13 → 1.25.15

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/.eslintrc.json DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "env": {
3
- "browser": true,
4
- "es2021": true,
5
- "node": true,
6
- "jest": true
7
- },
8
- "extends": [
9
- "eslint:recommended",
10
- "plugin:@typescript-eslint/recommended"
11
- ],
12
- "parser": "@typescript-eslint/parser",
13
- "parserOptions": {
14
- "ecmaVersion": "latest",
15
- "sourceType": "module"
16
- },
17
- "plugins": [
18
- "@typescript-eslint"
19
- ],
20
- "ignorePatterns": ["temp.js", "**/k6scripts/*.js", "**/public/*", "**/dist/*", "**/types/*"],
21
- "rules": {
22
- "indent": ["error", 4],
23
- "no-mixed-spaces-and-tabs": [2],
24
- "@typescript-eslint/no-var-requires": "warn"
25
- }
26
- }
@@ -1,11 +0,0 @@
1
- # To get started with Dependabot version updates, you'll need to specify which
2
- # package ecosystems to update and where the package manifests are located.
3
- # Please see the documentation for all configuration options:
4
- # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
-
6
- version: 2
7
- updates:
8
- - package-ecosystem: "npm" # See documentation for possible values
9
- directory: "/" # Location of package manifests
10
- schedule:
11
- interval: "monthly"
@@ -1,54 +0,0 @@
1
- # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
2
- # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
3
-
4
- name: Node.js Package
5
-
6
- on:
7
- release:
8
- types: [created]
9
- push:
10
- branches: [ main ]
11
-
12
- jobs:
13
- build:
14
- runs-on: ubuntu-latest
15
- steps:
16
- - uses: actions/checkout@v3
17
- - uses: actions/setup-node@v3
18
- with:
19
- node-version: 19
20
- - run: npm ci
21
- - run: npm run lint
22
- - run: npm test
23
-
24
- publish-npm:
25
- needs: build
26
- runs-on: ubuntu-latest
27
- steps:
28
- - uses: actions/checkout@v3
29
- - uses: actions/setup-node@v3
30
- with:
31
- node-version: 19
32
- registry-url: https://registry.npmjs.org/
33
- - run: npm ci
34
- - run: npm run build
35
- - run: npm publish --access public
36
- env:
37
- NODE_AUTH_TOKEN: ${{secrets.npm_token}}
38
-
39
- # publish-gpr:
40
- # needs: build
41
- # runs-on: ubuntu-latest
42
- # permissions:
43
- # contents: read
44
- # packages: write
45
- # steps:
46
- # - uses: actions/checkout@v2
47
- # - uses: actions/setup-node@v2
48
- # with:
49
- # node-version: 17
50
- # registry-url: https://npm.pkg.github.com/
51
- # - run: npm ci
52
- # - run: npm publish
53
- # env:
54
- # NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
package/babel.config.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "presets": [
3
- ["@babel/preset-env", {"targets": {"node": "current"}}],
4
- "@babel/preset-typescript"
5
- ]
6
- }
package/build.sh DELETED
@@ -1,29 +0,0 @@
1
- #!/bin/sh
2
- rm -rf dist
3
- rm -rf types
4
- npm run build
5
- RESULT=$?
6
- if [ $RESULT -eq 0 ]; then
7
- echo success build
8
- npm run lint
9
- RESULT=$?
10
- if [ $RESULT -eq 0 ]; then
11
- echo success lint
12
- npm run test
13
- RESULT=$?
14
- if [ $RESULT -eq 0 ]; then
15
- echo success test
16
- git commit -a -m "changed"
17
- npm version patch
18
- npm i
19
- git commit -a -m "changed"
20
- git push
21
- else
22
- echo failed test
23
- fi
24
- else
25
- echo failed lint
26
- fi
27
- else
28
- echo failed build
29
- fi
package/dist/index.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./stsconfig"), exports);
18
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAm7BA,8CAA2B"}
@@ -1,214 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("./index");
4
- let goptions;
5
- describe("Test implicit config settings", () => {
6
- const OLD_ENV = process.env;
7
- beforeAll(async () => {
8
- jest.resetModules(); // Most important - it clears the cache
9
- process.env = {
10
- ...OLD_ENV,
11
- STSENVFILE: './.env-test-file-1'
12
- };
13
- goptions = (0, index_1.$Options)();
14
- }, 30000);
15
- afterAll(async () => {
16
- process.env = OLD_ENV; // Restore old environment
17
- }, 5000);
18
- test('Checking default config items', async () => {
19
- expect.assertions(25);
20
- expect(goptions.isProduction).toEqual(false);
21
- expect(goptions.isTest).toEqual(true);
22
- expect(goptions.consoleLogErrors).toEqual(false);
23
- expect(goptions.dbuser).toEqual('postgres');
24
- expect(goptions.dbpassword).toEqual('postgres');
25
- expect(goptions.dbpasswordfile).toEqual(undefined);
26
- expect(goptions.dbhost).toEqual('localhost');
27
- expect(goptions.dbport).toEqual('5432');
28
- expect(goptions.database).toEqual('stsrestmsdb01');
29
- expect(goptions.databaseUrl).toEqual(undefined);
30
- expect(goptions.databasescriptfolder).toEqual('/var/lib/sts/stsglobalresources/db-scripts');
31
- expect(goptions.poolSize).toEqual(500);
32
- expect(goptions.useCPUs).toEqual(-1);
33
- expect(goptions.respawnOnFail).toEqual(false);
34
- expect(goptions.defaultDatabaseEntries).toEqual(10000);
35
- expect(goptions.useRedis).toEqual(false);
36
- expect(goptions.endFlush).toEqual(false);
37
- expect(goptions.redisPort).toEqual('6379');
38
- expect(goptions.redisServer).toEqual('localhost');
39
- expect(goptions.k6ScriptPath).toEqual('.');
40
- expect(goptions.defaultDatabaseMinExtraDataSize).toEqual(0);
41
- expect(goptions.defaultDatabaseMaxExtraDataSize).toEqual(2000);
42
- expect(goptions.logToFile).toEqual(false);
43
- expect(goptions.logFilePath).toEqual('/var/lib/sts');
44
- expect(goptions.logFileFormat).toEqual('csv');
45
- });
46
- test('Checking default rest01 service config', async () => {
47
- expect.assertions(14);
48
- expect(goptions.rest01endpoint).toEqual('https://localhost');
49
- expect(goptions.rest01hostport).toEqual('3003');
50
- expect(goptions.rest01port).toEqual('3003');
51
- expect(goptions.rest01apiroot).toEqual('/stsrest01/v1');
52
- expect(goptions.rest01prometheussupport).toEqual(true);
53
- expect(goptions.rest01prometheusclusterport).toEqual('3013');
54
- expect(goptions.rest01servicename).toEqual('STSRest01');
55
- expect(goptions.rest01serviceversion).toEqual('1.0.0');
56
- expect(goptions.rest01apiidentifier).toEqual(undefined);
57
- expect(goptions.rest01apiidentifierfile).toEqual(undefined);
58
- expect(goptions.rest01clientid).toEqual(undefined);
59
- expect(goptions.rest01clientidfile).toEqual(undefined);
60
- expect(goptions.rest01clientsecret).toEqual(undefined);
61
- expect(goptions.rest01clientsecretfile).toEqual(undefined);
62
- });
63
- test('Checking default instrument manager service config', async () => {
64
- expect.assertions(14);
65
- expect(goptions.imendpoint).toEqual('https://localhost');
66
- expect(goptions.imhostport).toEqual('3001');
67
- expect(goptions.import).toEqual('3001');
68
- expect(goptions.imapiroot).toEqual('/stsinstrumentmanager/v1');
69
- expect(goptions.imprometheussupport).toEqual(true);
70
- expect(goptions.imprometheusclusterport).toEqual('3011');
71
- expect(goptions.imservicename).toEqual('STSInstrumentManager');
72
- expect(goptions.imserviceversion).toEqual('1.0.0');
73
- expect(goptions.imapiidentifier).toEqual(undefined);
74
- expect(goptions.imapiidentifierfile).toEqual(undefined);
75
- expect(goptions.imclientid).toEqual(undefined);
76
- expect(goptions.imclientidfile).toEqual(undefined);
77
- expect(goptions.imclientsecret).toEqual(undefined);
78
- expect(goptions.imclientsecretfile).toEqual(undefined);
79
- });
80
- test('Checking default test orchestrator service config', async () => {
81
- expect.assertions(14);
82
- expect(goptions.toendpoint).toEqual('https://localhost');
83
- expect(goptions.tohostport).toEqual('3004');
84
- expect(goptions.toport).toEqual('3004');
85
- expect(goptions.toapiroot).toEqual('/ststestorchestrator/v1');
86
- expect(goptions.toprometheussupport).toEqual(true);
87
- expect(goptions.toprometheusclusterport).toEqual('3014');
88
- expect(goptions.toservicename).toEqual('STSTestOrchestrator');
89
- expect(goptions.toserviceversion).toEqual('1.0.0');
90
- expect(goptions.toapiidentifier).toEqual(undefined);
91
- expect(goptions.toapiidentifierfile).toEqual(undefined);
92
- expect(goptions.toclientid).toEqual(undefined);
93
- expect(goptions.toclientidfile).toEqual(undefined);
94
- expect(goptions.toclientsecret).toEqual(undefined);
95
- expect(goptions.toclientsecretfile).toEqual(undefined);
96
- });
97
- test('Checking default authentication service config', async () => {
98
- expect.assertions(29);
99
- expect(goptions.asendpoint).toEqual('https://localhost');
100
- expect(goptions.ashostport).toEqual('3002');
101
- expect(goptions.asport).toEqual('3002');
102
- expect(goptions.asapiroot).toEqual('/stsauth/v1.0');
103
- expect(goptions.asoauthapiroot).toEqual('/oauth2/v2.0');
104
- expect(goptions.asadminapiroot).toEqual('/admin/v1.0');
105
- expect(goptions.asprometheussupport).toEqual(true);
106
- expect(goptions.asprometheusclusterport).toEqual('3012');
107
- expect(goptions.asservicename).toEqual('STSAuth');
108
- expect(goptions.asserviceversion).toEqual('1.0.0');
109
- expect(goptions.asapiidentifier).toEqual('https://stsmda.com.au/stsauthapi/v1.0/');
110
- expect(goptions.asapiidentifierfile).toEqual(undefined);
111
- expect(goptions.asoauthapiidentifier).toEqual('https://stsmda.com.au/stsauthoauthapi/v2.0/');
112
- expect(goptions.asoauthapiidentifierfile).toEqual(undefined);
113
- expect(goptions.asadminapiidentifier).toEqual('https://stsmda.com.au/stsauthadminapi/v1.0/');
114
- expect(goptions.asadminapiidentifierfile).toEqual(undefined);
115
- expect(goptions.asclientid).toEqual(undefined);
116
- expect(goptions.asclientidfile).toEqual(undefined);
117
- expect(goptions.asclientsecret).toEqual(undefined);
118
- expect(goptions.asclientsecretfile).toEqual(undefined);
119
- expect(goptions.asjwksjsonpath).toEqual('/.well-known/jwks.json');
120
- expect(goptions.asjwkskeyrotationtime).toEqual(86400);
121
- expect(goptions.asjwkskeypurgetimeoffset).toEqual(300);
122
- expect(goptions.asjwkskeycount).toEqual(4);
123
- expect(goptions.asaccesstokenexpire).toEqual(43200);
124
- expect(goptions.authorizeendpoint).toEqual('https://localhost');
125
- expect(goptions.authorizeport).toEqual('3010');
126
- expect(goptions.authorizeapiroot).toEqual('');
127
- expect(goptions.authorizeapi).toEqual('/authorize');
128
- });
129
- test('Checking default test runner service config', async () => {
130
- expect.assertions(8);
131
- expect(goptions.trprometheussupport).toEqual(true);
132
- expect(goptions.trprometheusclusterport).toEqual('3015');
133
- expect(goptions.trservicename).toEqual('STSRestRunner');
134
- expect(goptions.trserviceversion).toEqual('1.0.0');
135
- expect(goptions.trclientid).toEqual(undefined);
136
- expect(goptions.trclientidfile).toEqual(undefined);
137
- expect(goptions.trclientsecret).toEqual(undefined);
138
- expect(goptions.trclientsecretfile).toEqual(undefined);
139
- });
140
- test('Checking default broker service config', async () => {
141
- expect.assertions(14);
142
- expect(goptions.brokerendpoint).toEqual('https://localhost');
143
- expect(goptions.brokerhostport).toEqual('3006');
144
- expect(goptions.brokerport).toEqual('3006');
145
- expect(goptions.brokerapiroot).toEqual('/stsbroker/v1.0');
146
- expect(goptions.brokerprometheussupport).toEqual(true);
147
- expect(goptions.brokerprometheusclusterport).toEqual('3016');
148
- expect(goptions.brokerservicename).toEqual('STSBroker');
149
- expect(goptions.brokerserviceversion).toEqual('1.0.0');
150
- expect(goptions.brokerapiidentifier).toEqual(undefined);
151
- expect(goptions.brokerapiidentifierfile).toEqual(undefined);
152
- expect(goptions.brokerclientid).toEqual(undefined);
153
- expect(goptions.brokerclientidfile).toEqual(undefined);
154
- expect(goptions.brokerclientsecret).toEqual(undefined);
155
- expect(goptions.brokerclientsecretfile).toEqual(undefined);
156
- });
157
- test('Checking default sts test runner node service config', async () => {
158
- expect.assertions(15);
159
- expect(goptions.trnendpoint).toEqual('https://localhost');
160
- expect(goptions.trnhostport).toEqual('3007');
161
- expect(goptions.trnport).toEqual('3007');
162
- expect(goptions.trnapiroot).toEqual('/ststrn/v1.0');
163
- expect(goptions.trnprometheussupport).toEqual(true);
164
- expect(goptions.trnprometheusclusterport).toEqual('3017');
165
- expect(goptions.trnservicename).toEqual('STSTestRunnerNode');
166
- expect(goptions.trnserviceversion).toEqual('1.0.0');
167
- expect(goptions.trnapiidentifier).toEqual(undefined);
168
- expect(goptions.trnapiidentifierfile).toEqual(undefined);
169
- expect(goptions.trnclientid).toEqual(undefined);
170
- expect(goptions.trnclientidfile).toEqual(undefined);
171
- expect(goptions.trnclientsecret).toEqual(undefined);
172
- expect(goptions.trnclientsecretfile).toEqual(undefined);
173
- expect(goptions.trncallbackuri).toEqual('https://localhost:3007/ststrn/v1.0/');
174
- });
175
- test('Checking default additional config items', async () => {
176
- expect.assertions(22);
177
- expect(goptions.publishinterval).toEqual(1000);
178
- expect(goptions.publishtimeout).toEqual(750);
179
- expect(goptions.publishdebug).toEqual(false);
180
- expect(goptions.transport).toEqual('RESTAPI');
181
- expect(goptions.useSecureCookies).toEqual(false);
182
- expect(goptions.keepAlive).toEqual(true);
183
- expect(goptions.maxSockets).toEqual(10);
184
- expect(goptions.maxTotalSockets).toEqual(20);
185
- expect(goptions.maxFreeSockets).toEqual(256);
186
- expect(goptions.timeout).toEqual(10000);
187
- expect(goptions.maxPayloadSize).toEqual('50mb');
188
- expect(goptions.instrumentationObservationInterval).toEqual(1000);
189
- expect(goptions.instrumentationTimeWindow).toEqual(600);
190
- expect(goptions.authJWTAccessTokenTimeout).toEqual(600);
191
- expect(goptions.authJWTRefreshTokenTimeout).toEqual(3600 * 24);
192
- expect(goptions.authCookieTimeout).toEqual(3600 * 24);
193
- expect(goptions.masterProcessExitTime).toEqual(500);
194
- expect(goptions.childProcessExitTime).toEqual(500);
195
- expect(goptions.systemInformationInterval).toEqual(1000);
196
- expect(goptions.ignoresocketio).toEqual(true);
197
- expect(goptions.httpsserverkeypath).toEqual('/var/lib/sts/stsglobalresources/keys/server.key');
198
- expect(goptions.httpsservercertpath).toEqual('/var/lib/sts/stsglobalresources/keys/server.cert');
199
- });
200
- test('Checking JWKS config items', async () => {
201
- expect.assertions(10);
202
- expect(goptions.tsjwkskeys).toEqual(3);
203
- expect(goptions.tsjwksstorepath).toEqual('/var/lib/sts/stsglobalresources/.stsauthprivate/jwks-private.json');
204
- expect(goptions.tsjwksstorepathfile).toEqual(undefined);
205
- expect(goptions.tsjwksstorepublicpath).toEqual('/var/lib/sts/stsglobalresources/.well-known/jwks.json');
206
- expect(goptions.jwksAuthConfigCache).toEqual(true);
207
- expect(goptions.jwksAuthConfigCacheMaxEntries).toEqual(5);
208
- expect(goptions.jwksAuthConfigCacheMaxAge).toEqual(600000);
209
- expect(goptions.jwksAuthConfigRateLimit).toEqual(true);
210
- expect(goptions.jwksAuthConfigRateLimitRequestsPerMinute).toEqual(10);
211
- expect(goptions.jwksAuthConfigTimeout).toEqual(30000);
212
- });
213
- });
214
- //# sourceMappingURL=stsconfig-01.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stsconfig-01.test.js","sourceRoot":"","sources":["../src/stsconfig-01.test.ts"],"names":[],"mappings":"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"}
@@ -1,214 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("./index");
4
- let goptions;
5
- describe("Test configured settings", () => {
6
- const OLD_ENV = process.env;
7
- beforeAll(async () => {
8
- jest.resetModules(); // Most important - it clears the cache
9
- process.env = {
10
- ...OLD_ENV,
11
- STSENVFILE: './.env-test-file-2'
12
- };
13
- goptions = (0, index_1.$Options)();
14
- }, 30000);
15
- afterAll(async () => {
16
- process.env = OLD_ENV; // Restore old environment
17
- }, 5000);
18
- test('Checking default config items', async () => {
19
- expect.assertions(25);
20
- expect(goptions.isProduction).toEqual(false);
21
- expect(goptions.isTest).toEqual(true);
22
- expect(goptions.consoleLogErrors).toEqual(true);
23
- expect(goptions.dbuser).toEqual('postgres-c');
24
- expect(goptions.dbpassword).toEqual('testfilepassword');
25
- expect(goptions.dbpasswordfile).toEqual('testpasswordfile');
26
- expect(goptions.dbhost).toEqual('localhost-c');
27
- expect(goptions.dbport).toEqual('54320');
28
- expect(goptions.database).toEqual('stsrestmsdb01-c');
29
- expect(goptions.databaseUrl).toEqual('-c');
30
- expect(goptions.databasescriptfolder).toEqual('/var/lib/sts/stsglobalresources/db-scripts-c');
31
- expect(goptions.poolSize).toEqual(5000);
32
- expect(goptions.useCPUs).toEqual(-10);
33
- expect(goptions.respawnOnFail).toEqual(true);
34
- expect(goptions.defaultDatabaseEntries).toEqual(100000);
35
- expect(goptions.useRedis).toEqual(true);
36
- expect(goptions.endFlush).toEqual(true);
37
- expect(goptions.redisPort).toEqual('63790');
38
- expect(goptions.redisServer).toEqual('localhost-c');
39
- expect(goptions.k6ScriptPath).toEqual('.-c');
40
- expect(goptions.defaultDatabaseMinExtraDataSize).toEqual(1);
41
- expect(goptions.defaultDatabaseMaxExtraDataSize).toEqual(20000);
42
- expect(goptions.logToFile).toEqual(true);
43
- expect(goptions.logFilePath).toEqual('/var/lib/sts-c');
44
- expect(goptions.logFileFormat).toEqual('csv-c');
45
- });
46
- test('Checking default rest01 service config', async () => {
47
- expect.assertions(14);
48
- expect(goptions.rest01endpoint).toEqual('https://localhost-c');
49
- expect(goptions.rest01hostport).toEqual('30030');
50
- expect(goptions.rest01port).toEqual('30030');
51
- expect(goptions.rest01apiroot).toEqual('/stsrest01/v1-c');
52
- expect(goptions.rest01prometheussupport).toEqual(false);
53
- expect(goptions.rest01prometheusclusterport).toEqual('30130');
54
- expect(goptions.rest01servicename).toEqual('STSRest01-c');
55
- expect(goptions.rest01serviceversion).toEqual('1.0.0-c');
56
- expect(goptions.rest01apiidentifier).toEqual('testapiidentifierfilecontents');
57
- expect(goptions.rest01apiidentifierfile).toEqual('testapiidentifierFile');
58
- expect(goptions.rest01clientid).toEqual('testclientidfilecontents');
59
- expect(goptions.rest01clientidfile).toEqual('testclientidfile'); // testclientidfile
60
- expect(goptions.rest01clientsecret).toEqual('testclientsecretfilecontents');
61
- expect(goptions.rest01clientsecretfile).toEqual('testclientsecretfile');
62
- });
63
- test('Checking default instrument manager service config', async () => {
64
- expect.assertions(14);
65
- expect(goptions.imendpoint).toEqual('https://localhost-c');
66
- expect(goptions.imhostport).toEqual('30010');
67
- expect(goptions.import).toEqual('30010');
68
- expect(goptions.imapiroot).toEqual('/stsinstrumentmanager/v1-c');
69
- expect(goptions.imprometheussupport).toEqual(false);
70
- expect(goptions.imprometheusclusterport).toEqual('30110');
71
- expect(goptions.imservicename).toEqual('STSInstrumentManager-c');
72
- expect(goptions.imserviceversion).toEqual('1.0.0-c');
73
- expect(goptions.imapiidentifier).toEqual('testapiidentifierfilecontents');
74
- expect(goptions.imapiidentifierfile).toEqual('testapiidentifierFile');
75
- expect(goptions.imclientid).toEqual('testclientidfilecontents');
76
- expect(goptions.imclientidfile).toEqual('testclientidfile'); // testclientidfile
77
- expect(goptions.imclientsecret).toEqual('testclientsecretfilecontents');
78
- expect(goptions.imclientsecretfile).toEqual('testclientsecretfile');
79
- });
80
- test('Checking default test orchestrator service config', async () => {
81
- expect.assertions(14);
82
- expect(goptions.toendpoint).toEqual('https://localhost-c');
83
- expect(goptions.tohostport).toEqual('30040');
84
- expect(goptions.toport).toEqual('30040');
85
- expect(goptions.toapiroot).toEqual('/ststestorchestrator/v1-c');
86
- expect(goptions.toprometheussupport).toEqual(false);
87
- expect(goptions.toprometheusclusterport).toEqual('30140');
88
- expect(goptions.toservicename).toEqual('STSTestOrchestrator-c');
89
- expect(goptions.toserviceversion).toEqual('1.0.0-c');
90
- expect(goptions.toapiidentifier).toEqual('testapiidentifierfilecontents');
91
- expect(goptions.toapiidentifierfile).toEqual('testapiidentifierFile');
92
- expect(goptions.toclientid).toEqual('testclientidfilecontents');
93
- expect(goptions.toclientidfile).toEqual('testclientidfile'); // testclientidfile
94
- expect(goptions.toclientsecret).toEqual('testclientsecretfilecontents');
95
- expect(goptions.toclientsecretfile).toEqual('testclientsecretfile');
96
- });
97
- test('Checking default authentication service config', async () => {
98
- expect.assertions(29);
99
- expect(goptions.asendpoint).toEqual('https://localhost-c');
100
- expect(goptions.ashostport).toEqual('30020');
101
- expect(goptions.asport).toEqual('30020');
102
- expect(goptions.asapiroot).toEqual('/stsauth/v1.0-c');
103
- expect(goptions.asoauthapiroot).toEqual('/oauth2/v2.0-c');
104
- expect(goptions.asadminapiroot).toEqual('/admin/v1.0-c');
105
- expect(goptions.asprometheussupport).toEqual(false);
106
- expect(goptions.asprometheusclusterport).toEqual('30120');
107
- expect(goptions.asservicename).toEqual('STSAuth-c');
108
- expect(goptions.asserviceversion).toEqual('1.0.0-c');
109
- expect(goptions.asapiidentifier).toEqual('testapiidentifierfilecontents');
110
- expect(goptions.asapiidentifierfile).toEqual('testapiidentifierFile');
111
- expect(goptions.asoauthapiidentifier).toEqual('testapiidentifierfilecontents');
112
- expect(goptions.asoauthapiidentifierfile).toEqual('testapiidentifierFile');
113
- expect(goptions.asadminapiidentifier).toEqual('testapiidentifierfilecontents');
114
- expect(goptions.asadminapiidentifierfile).toEqual('testapiidentifierFile');
115
- expect(goptions.asclientid).toEqual('testclientidfilecontents');
116
- expect(goptions.asclientidfile).toEqual('testclientidfile'); // testclientidfile
117
- expect(goptions.asclientsecret).toEqual('testclientsecretfilecontents');
118
- expect(goptions.asclientsecretfile).toEqual('testclientsecretfile');
119
- expect(goptions.asjwksjsonpath).toEqual('/.well-known/jwks.json-c');
120
- expect(goptions.asjwkskeyrotationtime).toEqual(864000);
121
- expect(goptions.asjwkskeypurgetimeoffset).toEqual(3000);
122
- expect(goptions.asjwkskeycount).toEqual(40);
123
- expect(goptions.asaccesstokenexpire).toEqual(432000);
124
- expect(goptions.authorizeendpoint).toEqual('https://localhost-c');
125
- expect(goptions.authorizeport).toEqual('3010-c');
126
- expect(goptions.authorizeapiroot).toEqual('-c');
127
- expect(goptions.authorizeapi).toEqual('/authorize-c');
128
- });
129
- test('Checking default test runner service config', async () => {
130
- expect.assertions(8);
131
- expect(goptions.trprometheussupport).toEqual(false);
132
- expect(goptions.trprometheusclusterport).toEqual('30150');
133
- expect(goptions.trservicename).toEqual('STSRestRunner-c');
134
- expect(goptions.trserviceversion).toEqual('1.0.0-c');
135
- expect(goptions.trclientid).toEqual('testclientidfilecontents');
136
- expect(goptions.trclientidfile).toEqual('testclientidfile'); // testclientidfile
137
- expect(goptions.trclientsecret).toEqual('testclientsecretfilecontents');
138
- expect(goptions.trclientsecretfile).toEqual('testclientsecretfile');
139
- });
140
- test('Checking default broker service config', async () => {
141
- expect.assertions(14);
142
- expect(goptions.brokerendpoint).toEqual('https://localhost-c');
143
- expect(goptions.brokerhostport).toEqual('3006-c');
144
- expect(goptions.brokerport).toEqual('3006-c');
145
- expect(goptions.brokerapiroot).toEqual('/stsbroker/v1.0-c');
146
- expect(goptions.brokerprometheussupport).toEqual(false);
147
- expect(goptions.brokerprometheusclusterport).toEqual('3016-c');
148
- expect(goptions.brokerservicename).toEqual('STSBroker-c');
149
- expect(goptions.brokerserviceversion).toEqual('1.0.0-c');
150
- expect(goptions.brokerapiidentifier).toEqual('testapiidentifierfilecontents');
151
- expect(goptions.brokerapiidentifierfile).toEqual('testapiidentifierFile');
152
- expect(goptions.brokerclientid).toEqual('testclientidfilecontents');
153
- expect(goptions.brokerclientidfile).toEqual('testclientidfile'); // testclientidfile
154
- expect(goptions.brokerclientsecret).toEqual('testclientsecretfilecontents');
155
- expect(goptions.brokerclientsecretfile).toEqual('testclientsecretfile');
156
- });
157
- test('Checking default test runner node service config', async () => {
158
- expect.assertions(15);
159
- expect(goptions.trnendpoint).toEqual('https://localhost-c');
160
- expect(goptions.trnhostport).toEqual('3007-c');
161
- expect(goptions.trnport).toEqual('3007-c');
162
- expect(goptions.trnapiroot).toEqual('/ststrn/v1.0-c');
163
- expect(goptions.trnprometheussupport).toEqual(false);
164
- expect(goptions.trnprometheusclusterport).toEqual('3017-c');
165
- expect(goptions.trnservicename).toEqual('STSTestRunnerNode-c');
166
- expect(goptions.trnserviceversion).toEqual('1.0.0-c');
167
- expect(goptions.trnapiidentifier).toEqual('testapiidentifierfilecontents');
168
- expect(goptions.trnapiidentifierfile).toEqual('testapiidentifierFile');
169
- expect(goptions.trnclientid).toEqual('testclientidfilecontents');
170
- expect(goptions.trnclientidfile).toEqual('testclientidfile'); // testclientidfile
171
- expect(goptions.trnclientsecret).toEqual('testclientsecretfilecontents');
172
- expect(goptions.trnclientsecretfile).toEqual('testclientsecretfile');
173
- expect(goptions.trncallbackuri).toEqual('https://localhost:3007/ststrn/v1.0/-c');
174
- });
175
- test('Checking default additional config items', async () => {
176
- expect.assertions(22);
177
- expect(goptions.publishinterval).toEqual(10000);
178
- expect(goptions.publishtimeout).toEqual(7500);
179
- expect(goptions.publishdebug).toEqual(true);
180
- expect(goptions.transport).toEqual('RESTAPI-c');
181
- expect(goptions.useSecureCookies).toEqual(true);
182
- expect(goptions.keepAlive).toEqual(false);
183
- expect(goptions.maxSockets).toEqual(100);
184
- expect(goptions.maxTotalSockets).toEqual(200);
185
- expect(goptions.maxFreeSockets).toEqual(2560);
186
- expect(goptions.timeout).toEqual(100000);
187
- expect(goptions.maxPayloadSize).toEqual('50mb-c');
188
- expect(goptions.instrumentationObservationInterval).toEqual(10000);
189
- expect(goptions.instrumentationTimeWindow).toEqual(6000);
190
- expect(goptions.authJWTAccessTokenTimeout).toEqual(6000);
191
- expect(goptions.authJWTRefreshTokenTimeout).toEqual(3600 * 24 * 10);
192
- expect(goptions.authCookieTimeout).toEqual(3600 * 24 * 10);
193
- expect(goptions.masterProcessExitTime).toEqual(5000);
194
- expect(goptions.childProcessExitTime).toEqual(5000);
195
- expect(goptions.systemInformationInterval).toEqual(10000);
196
- expect(goptions.ignoresocketio).toEqual(false);
197
- expect(goptions.httpsserverkeypath).toEqual('/var/lib/sts/stsglobalresources/keys/server.key-c');
198
- expect(goptions.httpsservercertpath).toEqual('/var/lib/sts/stsglobalresources/keys/server.cert-c');
199
- });
200
- test('Checking JWKS config items', async () => {
201
- expect.assertions(10);
202
- expect(goptions.tsjwkskeys).toEqual(30);
203
- expect(goptions.tsjwksstorepath).toEqual('testclientsecretfilecontents');
204
- expect(goptions.tsjwksstorepathfile).toEqual('testclientsecretfile');
205
- expect(goptions.tsjwksstorepublicpath).toEqual('/var/lib/sts/stsglobalresources/.well-known/jwks.json-c');
206
- expect(goptions.jwksAuthConfigCache).toEqual(false);
207
- expect(goptions.jwksAuthConfigCacheMaxEntries).toEqual(50);
208
- expect(goptions.jwksAuthConfigCacheMaxAge).toEqual(6000000);
209
- expect(goptions.jwksAuthConfigRateLimit).toEqual(false);
210
- expect(goptions.jwksAuthConfigRateLimitRequestsPerMinute).toEqual(100);
211
- expect(goptions.jwksAuthConfigTimeout).toEqual(300000);
212
- });
213
- });
214
- //# sourceMappingURL=stsconfig-02.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stsconfig-02.test.js","sourceRoot":"","sources":["../src/stsconfig-02.test.ts"],"names":[],"mappings":"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"}