@magda/typescript-common 1.1.0-arm64.0 → 1.1.0-rc.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/dist/AspectBuilder.d.ts +7 -0
- package/dist/AspectBuilder.js +3 -0
- package/dist/AspectBuilder.js.map +1 -0
- package/dist/AspectCreationFailure.d.ts +5 -0
- package/dist/AspectCreationFailure.js +10 -0
- package/dist/AspectCreationFailure.js.map +1 -0
- package/dist/AsyncPage.d.ts +18 -0
- package/dist/AsyncPage.js +140 -0
- package/dist/AsyncPage.js.map +1 -0
- package/dist/ConnectionResult.d.ts +16 -0
- package/dist/ConnectionResult.js +77 -0
- package/dist/ConnectionResult.js.map +1 -0
- package/dist/ConnectorRecordId.d.ts +15 -0
- package/dist/ConnectorRecordId.js +46 -0
- package/dist/ConnectorRecordId.js.map +1 -0
- package/dist/JsonConnector.d.ts +195 -0
- package/dist/JsonConnector.js +427 -0
- package/dist/JsonConnector.js.map +1 -0
- package/dist/JsonTransformer.d.ts +112 -0
- package/dist/JsonTransformer.js +225 -0
- package/dist/JsonTransformer.js.map +1 -0
- package/dist/OpaCompileResponseParser.d.ts +480 -0
- package/dist/OpaCompileResponseParser.js +1134 -0
- package/dist/OpaCompileResponseParser.js.map +1 -0
- package/dist/RecordCreationFailure.d.ts +7 -0
- package/dist/RecordCreationFailure.js +11 -0
- package/dist/RecordCreationFailure.js.map +1 -0
- package/dist/SimpleOpaSQLTranslator.d.ts +14 -0
- package/dist/SimpleOpaSQLTranslator.js +79 -0
- package/dist/SimpleOpaSQLTranslator.js.map +1 -0
- package/dist/addTrailingSlash.d.ts +1 -0
- package/dist/addTrailingSlash.js +15 -0
- package/dist/addTrailingSlash.js.map +1 -0
- package/dist/appendUrlSegments.d.ts +2 -0
- package/dist/appendUrlSegments.js +18 -0
- package/dist/appendUrlSegments.js.map +1 -0
- package/dist/authorization-api/AccessControlError.d.ts +4 -0
- package/dist/authorization-api/AccessControlError.js +13 -0
- package/dist/authorization-api/AccessControlError.js.map +1 -0
- package/dist/authorization-api/ApiClient.d.ts +141 -0
- package/dist/authorization-api/ApiClient.js +335 -0
- package/dist/authorization-api/ApiClient.js.map +1 -0
- package/dist/authorization-api/AuthError.d.ts +4 -0
- package/dist/authorization-api/AuthError.js +13 -0
- package/dist/authorization-api/AuthError.js.map +1 -0
- package/dist/authorization-api/GenericError.d.ts +9 -0
- package/dist/authorization-api/GenericError.js +17 -0
- package/dist/authorization-api/GenericError.js.map +1 -0
- package/dist/authorization-api/authMiddleware.d.ts +7 -0
- package/dist/authorization-api/authMiddleware.js +52 -0
- package/dist/authorization-api/authMiddleware.js.map +1 -0
- package/dist/authorization-api/model.d.ts +99 -0
- package/dist/authorization-api/model.js +3 -0
- package/dist/authorization-api/model.js.map +1 -0
- package/dist/coerceJson.d.ts +2 -0
- package/dist/coerceJson.js +13 -0
- package/dist/coerceJson.js.map +1 -0
- package/dist/createServiceError.d.ts +19 -0
- package/dist/createServiceError.js +45 -0
- package/dist/createServiceError.js.map +1 -0
- package/dist/delay.d.ts +2 -0
- package/dist/delay.js +9 -0
- package/dist/delay.js.map +1 -0
- package/dist/express/status.d.ts +30 -0
- package/dist/express/status.js +180 -0
- package/dist/express/status.js.map +1 -0
- package/dist/formatServiceError.d.ts +1 -0
- package/dist/formatServiceError.js +23 -0
- package/dist/formatServiceError.js.map +1 -0
- package/dist/generated/registry/api.d.ts +596 -0
- package/dist/generated/registry/api.js +2060 -0
- package/dist/generated/registry/api.js.map +1 -0
- package/dist/getAbsoluteUrl.d.ts +12 -0
- package/dist/getAbsoluteUrl.js +35 -0
- package/dist/getAbsoluteUrl.js.map +1 -0
- package/dist/getBasePathFromUrl.d.ts +10 -0
- package/dist/getBasePathFromUrl.js +27 -0
- package/dist/getBasePathFromUrl.js.map +1 -0
- package/dist/markdownToHtml.d.ts +3 -0
- package/dist/markdownToHtml.js +38 -0
- package/dist/markdownToHtml.js.map +1 -0
- package/dist/opa/OpaTypes.d.ts +41 -0
- package/dist/opa/OpaTypes.js +3 -0
- package/dist/opa/OpaTypes.js.map +1 -0
- package/dist/opa/getAuthDecision.d.ts +19 -0
- package/dist/opa/getAuthDecision.js +94 -0
- package/dist/opa/getAuthDecision.js.map +1 -0
- package/dist/opa/queryOpa.d.ts +1 -0
- package/dist/opa/queryOpa.js +41 -0
- package/dist/opa/queryOpa.js.map +1 -0
- package/dist/registry/AuthorizedRegistryClient.d.ts +29 -0
- package/dist/registry/AuthorizedRegistryClient.js +115 -0
- package/dist/registry/AuthorizedRegistryClient.js.map +1 -0
- package/dist/registry/RegistryClient.d.ts +36 -0
- package/dist/registry/RegistryClient.js +59 -0
- package/dist/registry/RegistryClient.js.map +1 -0
- package/dist/registry/TenantConsts.d.ts +31 -0
- package/dist/registry/TenantConsts.js +35 -0
- package/dist/registry/TenantConsts.js.map +1 -0
- package/dist/registry-manual/api.d.ts +9 -0
- package/dist/registry-manual/api.js +10 -0
- package/dist/registry-manual/api.js.map +1 -0
- package/dist/request.d.ts +3 -0
- package/dist/request.js +19 -0
- package/dist/request.js.map +1 -0
- package/dist/retry.d.ts +1 -0
- package/dist/retry.js +21 -0
- package/dist/retry.js.map +1 -0
- package/dist/retryBackoff.d.ts +1 -0
- package/dist/retryBackoff.js +21 -0
- package/dist/retryBackoff.js.map +1 -0
- package/dist/runLater.d.ts +1 -0
- package/dist/runLater.js +16 -0
- package/dist/runLater.js.map +1 -0
- package/dist/session/GetUserId.d.ts +5 -0
- package/dist/session/GetUserId.js +41 -0
- package/dist/session/GetUserId.js.map +1 -0
- package/dist/session/GetUserSession.d.ts +3 -0
- package/dist/session/GetUserSession.js +22 -0
- package/dist/session/GetUserSession.js.map +1 -0
- package/dist/session/addJwtSecretFromEnvVar.d.ts +14 -0
- package/dist/session/addJwtSecretFromEnvVar.js +23 -0
- package/dist/session/addJwtSecretFromEnvVar.js.map +1 -0
- package/dist/session/buildJwt.d.ts +1 -0
- package/dist/session/buildJwt.js +8 -0
- package/dist/session/buildJwt.js.map +1 -0
- package/dist/session/cookieUtils.d.ts +16 -0
- package/dist/session/cookieUtils.js +19 -0
- package/dist/session/cookieUtils.js.map +1 -0
- package/dist/session/destroySession.d.ts +10 -0
- package/dist/session/destroySession.js +44 -0
- package/dist/session/destroySession.js.map +1 -0
- package/dist/session/getSessionId.d.ts +2 -0
- package/dist/session/getSessionId.js +28 -0
- package/dist/session/getSessionId.js.map +1 -0
- package/dist/tenant-api/AuthorizedTenantClient.d.ts +25 -0
- package/dist/tenant-api/AuthorizedTenantClient.js +61 -0
- package/dist/tenant-api/AuthorizedTenantClient.js.map +1 -0
- package/dist/tenant-api/Tenant.d.ts +17 -0
- package/dist/tenant-api/Tenant.js +10 -0
- package/dist/tenant-api/Tenant.js.map +1 -0
- package/dist/test/JsonConnector.spec.d.ts +1 -0
- package/dist/test/JsonConnector.spec.js +352 -0
- package/dist/test/JsonConnector.spec.js.map +1 -0
- package/dist/test/JsonTransformer.spec.d.ts +1 -0
- package/dist/test/JsonTransformer.spec.js +98 -0
- package/dist/test/JsonTransformer.spec.js.map +1 -0
- package/dist/test/arbitraries.d.ts +98 -0
- package/dist/test/arbitraries.js +264 -0
- package/dist/test/arbitraries.js.map +1 -0
- package/dist/test/aspect-templates/organization-details.d.ts +4 -0
- package/dist/test/aspect-templates/organization-details.js +11 -0
- package/dist/test/aspect-templates/organization-details.js.map +1 -0
- package/dist/test/buildApiClient.spec.d.ts +1 -0
- package/dist/test/buildApiClient.spec.js +177 -0
- package/dist/test/buildApiClient.spec.js.map +1 -0
- package/dist/test/buildAuthorizedTenantClient.spec.d.ts +1 -0
- package/dist/test/buildAuthorizedTenantClient.spec.js +60 -0
- package/dist/test/buildAuthorizedTenantClient.spec.js.map +1 -0
- package/dist/test/connectors/MockExpressServer.d.ts +5 -0
- package/dist/test/connectors/MockExpressServer.js +28 -0
- package/dist/test/connectors/MockExpressServer.js.map +1 -0
- package/dist/test/connectors/MockRegistry.d.ts +7 -0
- package/dist/test/connectors/MockRegistry.js +93 -0
- package/dist/test/connectors/MockRegistry.js.map +1 -0
- package/dist/test/connectors/runConnectorTest.d.ts +5 -0
- package/dist/test/connectors/runConnectorTest.js +106 -0
- package/dist/test/connectors/runConnectorTest.js.map +1 -0
- package/dist/test/db/getTestDBConfig.d.ts +7 -0
- package/dist/test/db/getTestDBConfig.js +13 -0
- package/dist/test/db/getTestDBConfig.js.map +1 -0
- package/dist/test/db/runMigrationSql.d.ts +9 -0
- package/dist/test/db/runMigrationSql.js +82 -0
- package/dist/test/db/runMigrationSql.js.map +1 -0
- package/dist/test/express/status.spec.d.ts +1 -0
- package/dist/test/express/status.spec.js +160 -0
- package/dist/test/express/status.spec.js.map +1 -0
- package/dist/test/fakeArgv.d.ts +2 -0
- package/dist/test/fakeArgv.js +7 -0
- package/dist/test/fakeArgv.js.map +1 -0
- package/dist/test/getAuthDecision.spec.d.ts +1 -0
- package/dist/test/getAuthDecision.spec.js +22 -0
- package/dist/test/getAuthDecision.spec.js.map +1 -0
- package/dist/test/getBasePathFromUrl.spec.d.ts +1 -0
- package/dist/test/getBasePathFromUrl.spec.js +25 -0
- package/dist/test/getBasePathFromUrl.spec.js.map +1 -0
- package/dist/test/jsverify.d.ts +2 -0
- package/dist/test/jsverify.js +8 -0
- package/dist/test/jsverify.js.map +1 -0
- package/dist/test/mockAuthApiHost.d.ts +14 -0
- package/dist/test/mockAuthApiHost.js +174 -0
- package/dist/test/mockAuthApiHost.js.map +1 -0
- package/dist/test/mockAuthorization.d.ts +3 -0
- package/dist/test/mockAuthorization.js +24 -0
- package/dist/test/mockAuthorization.js.map +1 -0
- package/dist/test/mockTenantDataStore.d.ts +8 -0
- package/dist/test/mockTenantDataStore.js +41 -0
- package/dist/test/mockTenantDataStore.js.map +1 -0
- package/dist/test/mockUserDataStore.d.ts +11 -0
- package/dist/test/mockUserDataStore.js +56 -0
- package/dist/test/mockUserDataStore.js.map +1 -0
- package/dist/test/registry/buildAuthorizedClient.spec.d.ts +1 -0
- package/dist/test/registry/buildAuthorizedClient.spec.js +101 -0
- package/dist/test/registry/buildAuthorizedClient.spec.js.map +1 -0
- package/dist/test/sampleOpaResponse.json +480 -0
- package/dist/test/sampleOpaResponseSimple.json +173 -0
- package/dist/test/sampleOpaResponseUnconditionalTrue.json +193 -0
- package/dist/test/sampleOpaResponseUnconditionalTrueWithDefaultRule.json +303 -0
- package/dist/test/sampleOpaResponseWithDefaultRule.json +303 -0
- package/dist/test/session/buildJwt.spec.d.ts +1 -0
- package/dist/test/session/buildJwt.spec.js +50 -0
- package/dist/test/session/buildJwt.spec.js.map +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.d.ts +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js +64 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js.map +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.d.ts +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js +52 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js.map +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.d.ts +1 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js +36 -0
- package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js.map +1 -0
- package/dist/test/testAsyncPage.spec.d.ts +1 -0
- package/dist/test/testAsyncPage.spec.js +463 -0
- package/dist/test/testAsyncPage.spec.js.map +1 -0
- package/dist/test/testOpaCompileResponseParser.spec.d.ts +1 -0
- package/dist/test/testOpaCompileResponseParser.spec.js +148 -0
- package/dist/test/testOpaCompileResponseParser.spec.js.map +1 -0
- package/dist/test/util.d.ts +1 -0
- package/dist/test/util.js +8 -0
- package/dist/test/util.js.map +1 -0
- package/dist/util/arrayToMaybe.d.ts +2 -0
- package/dist/util/arrayToMaybe.js +8 -0
- package/dist/util/arrayToMaybe.js.map +1 -0
- package/dist/util/cleanOrgTitle.d.ts +1 -0
- package/dist/util/cleanOrgTitle.js +13 -0
- package/dist/util/cleanOrgTitle.js.map +1 -0
- package/dist/util/escapeRegExp.d.ts +2 -0
- package/dist/util/escapeRegExp.js +5 -0
- package/dist/util/escapeRegExp.js.map +1 -0
- package/dist/util/getMinikubeIP.d.ts +1 -0
- package/dist/util/getMinikubeIP.js +13 -0
- package/dist/util/getMinikubeIP.js.map +1 -0
- package/dist/util/isUuid.d.ts +2 -0
- package/dist/util/isUuid.js +6 -0
- package/dist/util/isUuid.js.map +1 -0
- package/dist/util/unionToThrowable.d.ts +1 -0
- package/dist/util/unionToThrowable.js +12 -0
- package/dist/util/unionToThrowable.js.map +1 -0
- package/dist/utilityTypes.d.ts +1 -0
- package/dist/utilityTypes.js +3 -0
- package/dist/utilityTypes.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fakeArgv.js","sourceRoot":"","sources":["../../src/test/fakeArgv.ts"],"names":[],"mappings":";;AAEA,SAAwB,QAAQ,CAAC,OAAY;IACzC,uCACO,OAAO,KACV,EAAE,EAAE,EAAE,EACN,CAAC,EAAE,EAAE,IACP;AACN,CAAC;AAND,2BAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "mocha";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chai_1 = require("chai");
|
|
7
|
+
const getAuthDecision_1 = __importDefault(require("../opa/getAuthDecision"));
|
|
8
|
+
const sampleOpaResponseUnconditionalTrue_json_1 = __importDefault(require("./sampleOpaResponseUnconditionalTrue.json"));
|
|
9
|
+
require("mocha");
|
|
10
|
+
/*
|
|
11
|
+
getAuthDecision only support limited use case of OPA response AST.
|
|
12
|
+
Thus, we will not test other response sample as an error will be thrown (due to lack the support of resolving rule reference).
|
|
13
|
+
This test case is to ensure the unconditional true case can be handled for #2956
|
|
14
|
+
We should switch back to OpaCompileResponseParser to support more generic OPA AST
|
|
15
|
+
*/
|
|
16
|
+
describe("Test OpaCompileResultParser with unconditional true response", function () {
|
|
17
|
+
it("Should evalute query from parse result correctly", function () {
|
|
18
|
+
const result = getAuthDecision_1.default(sampleOpaResponseUnconditionalTrue_json_1.default);
|
|
19
|
+
chai_1.expect(result).to.be.equal(true);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=getAuthDecision.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAuthDecision.spec.js","sourceRoot":"","sources":["../../src/test/getAuthDecision.spec.ts"],"names":[],"mappings":";;;;;AAAA,+BAA8B;AAC9B,6EAAqD;AACrD,wHAAkF;AAClF,iBAAe;AAEf;;;;;EAKE;AACF,QAAQ,CAAC,8DAA8D,EAAE;IACrE,EAAE,CAAC,kDAAkD,EAAE;QACnD,MAAM,MAAM,GAAG,yBAAe,CAAC,iDAAgC,CAAC,CAAC;QACjE,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "mocha";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
require("mocha");
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const getBasePathFromUrl_1 = __importDefault(require("../getBasePathFromUrl"));
|
|
9
|
+
const assertionList = {
|
|
10
|
+
"": "/",
|
|
11
|
+
"http://example.com": "/",
|
|
12
|
+
"http://example.com/": "/",
|
|
13
|
+
"http://example.com/sss/ss/": "/sss/ss",
|
|
14
|
+
"http://example.com/sss/ss": "/sss/ss"
|
|
15
|
+
//"http://example.com/ss%20%20s/ss": "/ss s/ss",
|
|
16
|
+
};
|
|
17
|
+
describe("getBasePathFromUrl", function () {
|
|
18
|
+
Object.keys(assertionList).forEach((key) => {
|
|
19
|
+
it(`Should return "${assertionList[key]}" for url "${key}" `, function () {
|
|
20
|
+
const result = getBasePathFromUrl_1.default(key);
|
|
21
|
+
chai_1.expect(result).to.be.equal(assertionList[key]);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=getBasePathFromUrl.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBasePathFromUrl.spec.js","sourceRoot":"","sources":["../../src/test/getBasePathFromUrl.spec.ts"],"names":[],"mappings":";;;;;AAAA,iBAAe;AACf,+BAA8B;AAC9B,+EAAuD;AAEvD,MAAM,aAAa,GAA8B;IAC7C,EAAE,EAAE,GAAG;IACP,oBAAoB,EAAE,GAAG;IACzB,qBAAqB,EAAE,GAAG;IAC1B,4BAA4B,EAAE,SAAS;IACvC,2BAA2B,EAAE,SAAS;IACtC,iDAAiD;CACpD,CAAC;AAEF,QAAQ,CAAC,oBAAoB,EAAE;IAC3B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,EAAE,CAAC,kBAAkB,aAAa,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG,4BAAkB,CAAC,GAAG,CAAC,CAAC;YACvC,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsverify_1 = __importDefault(require("jsverify"));
|
|
7
|
+
exports.default = jsverify_1.default;
|
|
8
|
+
//# sourceMappingURL=jsverify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsverify.js","sourceRoot":"","sources":["../../src/test/jsverify.ts"],"names":[],"mappings":";;;;;AAAA,wDAA2B;AAE3B,kBAAe,kBAAG,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Scope } from "nock";
|
|
2
|
+
import { Request } from "express";
|
|
3
|
+
export default class mockAuthApiHost {
|
|
4
|
+
scope: Scope;
|
|
5
|
+
private authApiUrl;
|
|
6
|
+
private jwtSecret;
|
|
7
|
+
private defaultAdminUserId;
|
|
8
|
+
constructor(authApiUrl: string, jwtSecret: string, defaultAdminUserId: string);
|
|
9
|
+
start(): void;
|
|
10
|
+
stop(): void;
|
|
11
|
+
mockReq(req: any, paramName?: string): Request;
|
|
12
|
+
mockAuthCheck(req: Request, requiredAdminAccess?: boolean): void;
|
|
13
|
+
private createHost;
|
|
14
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const nock_1 = __importDefault(require("nock"));
|
|
7
|
+
const GetUserId_1 = require("../session/GetUserId");
|
|
8
|
+
const AuthError_1 = __importDefault(require("../authorization-api/AuthError"));
|
|
9
|
+
const mockUserDataStore_1 = __importDefault(require("./mockUserDataStore"));
|
|
10
|
+
const url_1 = __importDefault(require("url"));
|
|
11
|
+
class mockAuthApiHost {
|
|
12
|
+
constructor(authApiUrl, jwtSecret, defaultAdminUserId) {
|
|
13
|
+
if (!authApiUrl)
|
|
14
|
+
throw new Error("authApiUrl is required to run mockAuthApiHost");
|
|
15
|
+
if (!jwtSecret)
|
|
16
|
+
throw new Error("jwtSecret is required to run mockAuthApiHost");
|
|
17
|
+
if (!defaultAdminUserId)
|
|
18
|
+
throw new Error("defaultAdminUserId is required to run mockAuthApiHost");
|
|
19
|
+
this.authApiUrl = authApiUrl;
|
|
20
|
+
this.jwtSecret = jwtSecret;
|
|
21
|
+
this.defaultAdminUserId = defaultAdminUserId;
|
|
22
|
+
this.createHost();
|
|
23
|
+
}
|
|
24
|
+
start() {
|
|
25
|
+
nock_1.default.disableNetConnect();
|
|
26
|
+
this.createHost();
|
|
27
|
+
}
|
|
28
|
+
stop() {
|
|
29
|
+
nock_1.default.cleanAll();
|
|
30
|
+
nock_1.default.enableNetConnect();
|
|
31
|
+
}
|
|
32
|
+
mockReq(req, paramName = null) {
|
|
33
|
+
const mockReq = {
|
|
34
|
+
header: function (headerName) {
|
|
35
|
+
const header = req.headers[headerName.toLowerCase()];
|
|
36
|
+
if (header && header.length)
|
|
37
|
+
return header[0];
|
|
38
|
+
else
|
|
39
|
+
return "";
|
|
40
|
+
},
|
|
41
|
+
query: url_1.default.parse(req.path, true, true).query,
|
|
42
|
+
params: (function () {
|
|
43
|
+
if (!paramName)
|
|
44
|
+
return {};
|
|
45
|
+
const r = req.path.match(/\/([^\/]+)$/);
|
|
46
|
+
if (!r || !r.length)
|
|
47
|
+
return null;
|
|
48
|
+
return { [paramName]: r[1] };
|
|
49
|
+
})()
|
|
50
|
+
};
|
|
51
|
+
return mockReq;
|
|
52
|
+
}
|
|
53
|
+
mockAuthCheck(req, requiredAdminAccess = false) {
|
|
54
|
+
const userId = GetUserId_1.getUserId(req, this.jwtSecret).valueOrThrow(new AuthError_1.default("Unauthorised", 401));
|
|
55
|
+
if (!requiredAdminAccess)
|
|
56
|
+
return;
|
|
57
|
+
if (userId != this.defaultAdminUserId)
|
|
58
|
+
throw new AuthError_1.default("Can only be accessed by Admin users", 403);
|
|
59
|
+
}
|
|
60
|
+
createHost() {
|
|
61
|
+
this.scope = nock_1.default(this.authApiUrl).persist();
|
|
62
|
+
const thisObj = this;
|
|
63
|
+
this.scope
|
|
64
|
+
.get("/private/users/lookup")
|
|
65
|
+
.query(true)
|
|
66
|
+
.reply(function (uri, requestBody) {
|
|
67
|
+
const req = thisObj.mockReq(this.req);
|
|
68
|
+
try {
|
|
69
|
+
thisObj.mockAuthCheck(req, true);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
if (e instanceof AuthError_1.default) {
|
|
73
|
+
return [e.statusCode, e.message];
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return [401, "Unauthorised"];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const source = req.query.source;
|
|
81
|
+
const sourceId = req.query.sourceId;
|
|
82
|
+
if (!source || !sourceId)
|
|
83
|
+
return [500, "Missing query parameter"];
|
|
84
|
+
const records = mockUserDataStore_1.default.getRecordBySourceAndSourceId(source, sourceId);
|
|
85
|
+
if (!records.length)
|
|
86
|
+
return [404, "cannot locate record"];
|
|
87
|
+
return [200, JSON.stringify(records[0])];
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
return [500, e.message];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
this.scope
|
|
94
|
+
.get(/\/private\/users\/[^\/]+/)
|
|
95
|
+
.reply(function (uri, requestBody) {
|
|
96
|
+
const req = thisObj.mockReq(this.req, "userId");
|
|
97
|
+
try {
|
|
98
|
+
thisObj.mockAuthCheck(req, true);
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
if (e instanceof AuthError_1.default) {
|
|
102
|
+
return [e.statusCode, e.message];
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return [401, "Unauthorised"];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const userId = req.params.userId;
|
|
110
|
+
if (!userId)
|
|
111
|
+
return [500, "Missing userId parameter"];
|
|
112
|
+
const records = mockUserDataStore_1.default.getRecordByUserId(userId);
|
|
113
|
+
if (!records.length)
|
|
114
|
+
return [404, "cannot locate record"];
|
|
115
|
+
return [200, JSON.stringify(records[0])];
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
return [500, e.message];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
this.scope
|
|
122
|
+
.get(/\/public\/users\/[^\/]+/)
|
|
123
|
+
.reply(function (uri, requestBody) {
|
|
124
|
+
const req = thisObj.mockReq(this.req, "userId");
|
|
125
|
+
try {
|
|
126
|
+
const userId = req.params.userId;
|
|
127
|
+
if (!userId)
|
|
128
|
+
return [500, "Missing userId parameter"];
|
|
129
|
+
const records = mockUserDataStore_1.default
|
|
130
|
+
.getRecordByUserId(userId)
|
|
131
|
+
.map((record) => ({
|
|
132
|
+
id: record.id,
|
|
133
|
+
photoURL: record.photoURL,
|
|
134
|
+
displayName: record.displayName,
|
|
135
|
+
isAdmin: record.isAdmin
|
|
136
|
+
}));
|
|
137
|
+
if (!records.length)
|
|
138
|
+
return [404, "cannot locate record"];
|
|
139
|
+
return [200, JSON.stringify(records[0])];
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
return [500, e.message];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
this.scope
|
|
146
|
+
.post("/private/users")
|
|
147
|
+
.reply(function (uri, requestBody) {
|
|
148
|
+
const req = thisObj.mockReq(this.req);
|
|
149
|
+
try {
|
|
150
|
+
thisObj.mockAuthCheck(req, true);
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
if (e instanceof AuthError_1.default) {
|
|
154
|
+
return [e.statusCode, e.message];
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
return [401, "Unauthorised"];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
if (!requestBody)
|
|
162
|
+
return [500, "Missing request body"];
|
|
163
|
+
const user = requestBody;
|
|
164
|
+
const newUser = mockUserDataStore_1.default.createRecord(user);
|
|
165
|
+
return [200, JSON.stringify(newUser)];
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
return [500, e.message];
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.default = mockAuthApiHost;
|
|
174
|
+
//# sourceMappingURL=mockAuthApiHost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthApiHost.js","sourceRoot":"","sources":["../../src/test/mockAuthApiHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jwt = require("jsonwebtoken");
|
|
7
|
+
const nock_1 = __importDefault(require("nock"));
|
|
8
|
+
function mockAuthorization(adminApiUrl, isAdmin, jwtSecret, req) {
|
|
9
|
+
const userId = "b1fddd6f-e230-4068-bd2c-1a21844f1598";
|
|
10
|
+
const scope = nock_1.default(adminApiUrl);
|
|
11
|
+
if (!isAdmin)
|
|
12
|
+
scope
|
|
13
|
+
.get(`/private/users/${userId}`)
|
|
14
|
+
.reply(401, "Only admin users are authorised to access this API");
|
|
15
|
+
else
|
|
16
|
+
scope.get(`/private/users/${userId}`).reply(200, { isAdmin });
|
|
17
|
+
const id = jwt.sign({ userId: userId }, jwtSecret);
|
|
18
|
+
return req.set("X-Magda-Session", id).then((res) => {
|
|
19
|
+
scope.done();
|
|
20
|
+
return res;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
exports.default = mockAuthorization;
|
|
24
|
+
//# sourceMappingURL=mockAuthorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockAuthorization.js","sourceRoot":"","sources":["../../src/test/mockAuthorization.ts"],"names":[],"mappings":";;;;;AAAA,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACpC,gDAAwB;AAKxB,SAAwB,iBAAiB,CACrC,WAAmB,EACnB,OAAgB,EAChB,SAAiB,EACjB,GAAS;IAET,MAAM,MAAM,GAAG,sCAAsC,CAAC;IACtD,MAAM,KAAK,GAAG,cAAI,CAAC,WAAW,CAAC,CAAC;IAEhC,IAAI,CAAC,OAAO;QACR,KAAK;aACA,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC;aAC/B,KAAK,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;;QACrE,KAAK,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;IAEnD,OAAO,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;AACP,CAAC;AArBD,oCAqBC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mockTenantData = [
|
|
4
|
+
{
|
|
5
|
+
id: 0,
|
|
6
|
+
domainname: "built-in",
|
|
7
|
+
enabled: true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: 1,
|
|
11
|
+
domainname: "web1.com",
|
|
12
|
+
enabled: true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: 2,
|
|
16
|
+
domainname: "web2.com",
|
|
17
|
+
enabled: false
|
|
18
|
+
}
|
|
19
|
+
];
|
|
20
|
+
let nextTenantId = 3;
|
|
21
|
+
let runtimeTenantDataStore;
|
|
22
|
+
const mockTenantDataStore = {
|
|
23
|
+
reset: function () {
|
|
24
|
+
runtimeTenantDataStore = mockTenantData.map((item) => (Object.assign({}, item)));
|
|
25
|
+
nextTenantId = 3;
|
|
26
|
+
},
|
|
27
|
+
getTenants: function () {
|
|
28
|
+
return runtimeTenantDataStore;
|
|
29
|
+
},
|
|
30
|
+
createTenant(tenant) {
|
|
31
|
+
const newTenant = Object.assign(Object.assign({}, tenant), { id: nextTenantId++ });
|
|
32
|
+
runtimeTenantDataStore.push(newTenant);
|
|
33
|
+
return newTenant;
|
|
34
|
+
},
|
|
35
|
+
countTenants: function () {
|
|
36
|
+
return runtimeTenantDataStore.length;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
mockTenantDataStore.reset();
|
|
40
|
+
exports.default = mockTenantDataStore;
|
|
41
|
+
//# sourceMappingURL=mockTenantDataStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockTenantDataStore.js","sourceRoot":"","sources":["../../src/test/mockTenantDataStore.ts"],"names":[],"mappings":";;AAEA,MAAM,cAAc,GAAG;IACnB;QACI,EAAE,EAAE,CAAC;QACL,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,IAAI;KAChB;IACD;QACI,EAAE,EAAE,CAAC;QACL,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,IAAI;KAChB;IACD;QACI,EAAE,EAAE,CAAC;QACL,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,KAAK;KACjB;CACJ,CAAC;AAEF,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,IAAI,sBAAgC,CAAC;AAErC,MAAM,mBAAmB,GAAG;IACxB,KAAK,EAAE;QACH,sBAAsB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAM,IAAI,EAAG,CAAC,CAAC;QACrE,YAAY,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,UAAU,EAAE;QACR,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED,YAAY,CAAC,MAAc;QACvB,MAAM,SAAS,mCAAa,MAAM,KAAE,EAAE,EAAE,YAAY,EAAE,GAAE,CAAC;QACzD,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,YAAY,EAAE;QACV,OAAO,sBAAsB,CAAC,MAAM,CAAC;IACzC,CAAC;CACJ,CAAC;AAEF,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAE5B,kBAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { User } from "../authorization-api/model";
|
|
2
|
+
declare const mockUserDataStore: {
|
|
3
|
+
reset: () => void;
|
|
4
|
+
getData: () => User[];
|
|
5
|
+
getRecordBySourceAndSourceId(source: string, sourceId: string): User[];
|
|
6
|
+
getRecordByUserId(userId: string): User[];
|
|
7
|
+
getRecordByIndex(idx: number): User;
|
|
8
|
+
createRecord(user: User): any;
|
|
9
|
+
countRecord: () => number;
|
|
10
|
+
};
|
|
11
|
+
export default mockUserDataStore;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const uuid_1 = require("uuid");
|
|
4
|
+
const mockUserData = [
|
|
5
|
+
{
|
|
6
|
+
id: "00000000-0000-4000-8000-000000000000",
|
|
7
|
+
displayName: "admin",
|
|
8
|
+
email: "admin@admin.com",
|
|
9
|
+
photoURL: "http://example.com",
|
|
10
|
+
source: "manual",
|
|
11
|
+
sourceId: "1",
|
|
12
|
+
isAdmin: true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "8D8931AF-86B3-104A-9B24-153491C6EA5E",
|
|
16
|
+
displayName: "Standard User",
|
|
17
|
+
email: "test@test.com",
|
|
18
|
+
photoURL: "http://example.com",
|
|
19
|
+
source: "ckan",
|
|
20
|
+
sourceId: "testuser",
|
|
21
|
+
isAdmin: false
|
|
22
|
+
}
|
|
23
|
+
];
|
|
24
|
+
let runtimeUserDataStore;
|
|
25
|
+
const mockUserDataStore = {
|
|
26
|
+
reset: function () {
|
|
27
|
+
runtimeUserDataStore = mockUserData.map((item) => (Object.assign({}, item)));
|
|
28
|
+
},
|
|
29
|
+
getData: function () {
|
|
30
|
+
return runtimeUserDataStore;
|
|
31
|
+
},
|
|
32
|
+
getRecordBySourceAndSourceId(source, sourceId) {
|
|
33
|
+
return runtimeUserDataStore.filter((record) => {
|
|
34
|
+
return record.source == source && record.sourceId == sourceId;
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
getRecordByUserId(userId) {
|
|
38
|
+
return runtimeUserDataStore.filter((record) => {
|
|
39
|
+
return record.id == userId;
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
getRecordByIndex(idx) {
|
|
43
|
+
return runtimeUserDataStore[idx];
|
|
44
|
+
},
|
|
45
|
+
createRecord(user) {
|
|
46
|
+
const newRecord = Object.assign(Object.assign({}, user), { id: uuid_1.v4() });
|
|
47
|
+
runtimeUserDataStore.push(newRecord);
|
|
48
|
+
return newRecord;
|
|
49
|
+
},
|
|
50
|
+
countRecord: function () {
|
|
51
|
+
return runtimeUserDataStore.length;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
mockUserDataStore.reset();
|
|
55
|
+
exports.default = mockUserDataStore;
|
|
56
|
+
//# sourceMappingURL=mockUserDataStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockUserDataStore.js","sourceRoot":"","sources":["../../src/test/mockUserDataStore.ts"],"names":[],"mappings":";;AAAA,+BAAoC;AAGpC,MAAM,YAAY,GAAG;IACjB;QACI,EAAE,EAAE,sCAAsC;QAC1C,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,oBAAoB;QAC9B,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,IAAI;KAChB;IACD;QACI,EAAE,EAAE,sCAAsC;QAC1C,WAAW,EAAE,eAAe;QAC5B,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,oBAAoB;QAC9B,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,KAAK;KACjB;CACJ,CAAC;AAEF,IAAI,oBAA4B,CAAC;AAEjC,MAAM,iBAAiB,GAAG;IACtB,KAAK,EAAE;QACH,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAM,IAAI,EAAG,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,EAAE;QACL,OAAO,oBAAoB,CAAC;IAChC,CAAC;IACD,4BAA4B,CAAC,MAAc,EAAE,QAAgB;QACzD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAClE,CAAC,CAAC,CAAC;IACP,CAAC;IACD,iBAAiB,CAAC,MAAc;QAC5B,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IACD,gBAAgB,CAAC,GAAW;QACxB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,YAAY,CAAC,IAAU;QACnB,MAAM,SAAS,mCAAa,IAAI,KAAE,EAAE,EAAE,SAAM,EAAE,GAAE,CAAC;QACjD,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,WAAW,EAAE;QACT,OAAO,oBAAoB,CAAC,MAAM,CAAC;IACvC,CAAC;CACJ,CAAC;AAEF,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAE1B,kBAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const chai_1 = __importDefault(require("chai"));
|
|
16
|
+
const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
17
|
+
const nock_1 = __importDefault(require("nock"));
|
|
18
|
+
const AuthorizedRegistryClient_1 = __importDefault(require("magda-typescript-common/src/registry/AuthorizedRegistryClient"));
|
|
19
|
+
chai_1.default.use(chai_as_promised_1.default);
|
|
20
|
+
const expect = chai_1.default.expect;
|
|
21
|
+
describe("Test AuthorizedRegistryClient.ts", function () {
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
nock_1.default.cleanAll();
|
|
24
|
+
});
|
|
25
|
+
it("accepts userId and jwtSecret", function () {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const registry = new AuthorizedRegistryClient_1.default({
|
|
28
|
+
baseUrl: "some.where",
|
|
29
|
+
userId: "some.user",
|
|
30
|
+
jwtSecret: "top secret",
|
|
31
|
+
tenantId: 0
|
|
32
|
+
});
|
|
33
|
+
expect(registry !== undefined);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
it("rejects null or empty of userId and jwtSecret", function () {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
expect(function () {
|
|
39
|
+
new AuthorizedRegistryClient_1.default({
|
|
40
|
+
baseUrl: "some.where",
|
|
41
|
+
userId: null,
|
|
42
|
+
jwtSecret: "top secret",
|
|
43
|
+
tenantId: 0
|
|
44
|
+
});
|
|
45
|
+
}).to.throw(Error, "Either jwt or userId and jwtSecret must have values.");
|
|
46
|
+
expect(function () {
|
|
47
|
+
new AuthorizedRegistryClient_1.default({
|
|
48
|
+
baseUrl: "some.where",
|
|
49
|
+
userId: "some.user",
|
|
50
|
+
jwtSecret: null,
|
|
51
|
+
tenantId: 0
|
|
52
|
+
});
|
|
53
|
+
}).to.throw(Error, "Either jwt or userId and jwtSecret must have values.");
|
|
54
|
+
expect(function () {
|
|
55
|
+
new AuthorizedRegistryClient_1.default({
|
|
56
|
+
baseUrl: "some.where",
|
|
57
|
+
userId: null,
|
|
58
|
+
jwtSecret: null,
|
|
59
|
+
tenantId: 0
|
|
60
|
+
});
|
|
61
|
+
}).to.throw(Error, "Either jwt or userId and jwtSecret must have values.");
|
|
62
|
+
expect(function () {
|
|
63
|
+
new AuthorizedRegistryClient_1.default({
|
|
64
|
+
baseUrl: "some.where",
|
|
65
|
+
userId: "some.user",
|
|
66
|
+
jwtSecret: "",
|
|
67
|
+
tenantId: 0
|
|
68
|
+
});
|
|
69
|
+
}).to.throw(Error, "Either jwt or userId and jwtSecret must have values.");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
it("accepts jwt", function () {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const registry = new AuthorizedRegistryClient_1.default({
|
|
75
|
+
baseUrl: "some.where",
|
|
76
|
+
jwt: "some.jwt.token",
|
|
77
|
+
tenantId: 0
|
|
78
|
+
});
|
|
79
|
+
expect(registry !== undefined);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
it("rejects null or empty jwt", function () {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
expect(function () {
|
|
85
|
+
new AuthorizedRegistryClient_1.default({
|
|
86
|
+
baseUrl: "some.where",
|
|
87
|
+
jwt: null,
|
|
88
|
+
tenantId: 0
|
|
89
|
+
});
|
|
90
|
+
}).to.throw(Error, "Either jwt or userId and jwtSecret must have values.");
|
|
91
|
+
expect(function () {
|
|
92
|
+
new AuthorizedRegistryClient_1.default({
|
|
93
|
+
baseUrl: "some.where",
|
|
94
|
+
jwt: "",
|
|
95
|
+
tenantId: 0
|
|
96
|
+
});
|
|
97
|
+
}).to.throw(Error, "Either jwt or userId and jwtSecret must have values.");
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=buildAuthorizedClient.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildAuthorizedClient.spec.js","sourceRoot":"","sources":["../../../src/test/registry/buildAuthorizedClient.spec.ts"],"names":[],"mappings":"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"}
|