@magda/typescript-common 1.1.0-alpha.2 → 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.
Files changed (252) hide show
  1. package/dist/AspectBuilder.d.ts +7 -0
  2. package/dist/AspectBuilder.js +3 -0
  3. package/dist/AspectBuilder.js.map +1 -0
  4. package/dist/AspectCreationFailure.d.ts +5 -0
  5. package/dist/AspectCreationFailure.js +10 -0
  6. package/dist/AspectCreationFailure.js.map +1 -0
  7. package/dist/AsyncPage.d.ts +18 -0
  8. package/dist/AsyncPage.js +140 -0
  9. package/dist/AsyncPage.js.map +1 -0
  10. package/dist/ConnectionResult.d.ts +16 -0
  11. package/dist/ConnectionResult.js +77 -0
  12. package/dist/ConnectionResult.js.map +1 -0
  13. package/dist/ConnectorRecordId.d.ts +15 -0
  14. package/dist/ConnectorRecordId.js +46 -0
  15. package/dist/ConnectorRecordId.js.map +1 -0
  16. package/dist/JsonConnector.d.ts +195 -0
  17. package/dist/JsonConnector.js +427 -0
  18. package/dist/JsonConnector.js.map +1 -0
  19. package/dist/JsonTransformer.d.ts +112 -0
  20. package/dist/JsonTransformer.js +225 -0
  21. package/dist/JsonTransformer.js.map +1 -0
  22. package/dist/OpaCompileResponseParser.d.ts +480 -0
  23. package/dist/OpaCompileResponseParser.js +1134 -0
  24. package/dist/OpaCompileResponseParser.js.map +1 -0
  25. package/dist/RecordCreationFailure.d.ts +7 -0
  26. package/dist/RecordCreationFailure.js +11 -0
  27. package/dist/RecordCreationFailure.js.map +1 -0
  28. package/dist/SimpleOpaSQLTranslator.d.ts +14 -0
  29. package/dist/SimpleOpaSQLTranslator.js +79 -0
  30. package/dist/SimpleOpaSQLTranslator.js.map +1 -0
  31. package/dist/addTrailingSlash.d.ts +1 -0
  32. package/dist/addTrailingSlash.js +15 -0
  33. package/dist/addTrailingSlash.js.map +1 -0
  34. package/dist/appendUrlSegments.d.ts +2 -0
  35. package/dist/appendUrlSegments.js +18 -0
  36. package/dist/appendUrlSegments.js.map +1 -0
  37. package/dist/authorization-api/AccessControlError.d.ts +4 -0
  38. package/dist/authorization-api/AccessControlError.js +13 -0
  39. package/dist/authorization-api/AccessControlError.js.map +1 -0
  40. package/dist/authorization-api/ApiClient.d.ts +141 -0
  41. package/dist/authorization-api/ApiClient.js +335 -0
  42. package/dist/authorization-api/ApiClient.js.map +1 -0
  43. package/dist/authorization-api/AuthError.d.ts +4 -0
  44. package/dist/authorization-api/AuthError.js +13 -0
  45. package/dist/authorization-api/AuthError.js.map +1 -0
  46. package/dist/authorization-api/GenericError.d.ts +9 -0
  47. package/dist/authorization-api/GenericError.js +17 -0
  48. package/dist/authorization-api/GenericError.js.map +1 -0
  49. package/dist/authorization-api/authMiddleware.d.ts +7 -0
  50. package/dist/authorization-api/authMiddleware.js +52 -0
  51. package/dist/authorization-api/authMiddleware.js.map +1 -0
  52. package/dist/authorization-api/model.d.ts +99 -0
  53. package/dist/authorization-api/model.js +3 -0
  54. package/dist/authorization-api/model.js.map +1 -0
  55. package/dist/coerceJson.d.ts +2 -0
  56. package/dist/coerceJson.js +13 -0
  57. package/dist/coerceJson.js.map +1 -0
  58. package/dist/createServiceError.d.ts +19 -0
  59. package/dist/createServiceError.js +45 -0
  60. package/dist/createServiceError.js.map +1 -0
  61. package/dist/delay.d.ts +2 -0
  62. package/dist/delay.js +9 -0
  63. package/dist/delay.js.map +1 -0
  64. package/dist/express/status.d.ts +30 -0
  65. package/dist/express/status.js +180 -0
  66. package/dist/express/status.js.map +1 -0
  67. package/dist/formatServiceError.d.ts +1 -0
  68. package/dist/formatServiceError.js +23 -0
  69. package/dist/formatServiceError.js.map +1 -0
  70. package/dist/generated/registry/api.d.ts +596 -0
  71. package/dist/generated/registry/api.js +2060 -0
  72. package/dist/generated/registry/api.js.map +1 -0
  73. package/dist/getAbsoluteUrl.d.ts +12 -0
  74. package/dist/getAbsoluteUrl.js +35 -0
  75. package/dist/getAbsoluteUrl.js.map +1 -0
  76. package/dist/getBasePathFromUrl.d.ts +10 -0
  77. package/dist/getBasePathFromUrl.js +27 -0
  78. package/dist/getBasePathFromUrl.js.map +1 -0
  79. package/dist/markdownToHtml.d.ts +3 -0
  80. package/dist/markdownToHtml.js +38 -0
  81. package/dist/markdownToHtml.js.map +1 -0
  82. package/dist/opa/OpaTypes.d.ts +41 -0
  83. package/dist/opa/OpaTypes.js +3 -0
  84. package/dist/opa/OpaTypes.js.map +1 -0
  85. package/dist/opa/getAuthDecision.d.ts +19 -0
  86. package/dist/opa/getAuthDecision.js +94 -0
  87. package/dist/opa/getAuthDecision.js.map +1 -0
  88. package/dist/opa/queryOpa.d.ts +1 -0
  89. package/dist/opa/queryOpa.js +41 -0
  90. package/dist/opa/queryOpa.js.map +1 -0
  91. package/dist/registry/AuthorizedRegistryClient.d.ts +29 -0
  92. package/dist/registry/AuthorizedRegistryClient.js +115 -0
  93. package/dist/registry/AuthorizedRegistryClient.js.map +1 -0
  94. package/dist/registry/RegistryClient.d.ts +36 -0
  95. package/dist/registry/RegistryClient.js +59 -0
  96. package/dist/registry/RegistryClient.js.map +1 -0
  97. package/dist/registry/TenantConsts.d.ts +31 -0
  98. package/dist/registry/TenantConsts.js +35 -0
  99. package/dist/registry/TenantConsts.js.map +1 -0
  100. package/dist/registry-manual/api.d.ts +9 -0
  101. package/dist/registry-manual/api.js +10 -0
  102. package/dist/registry-manual/api.js.map +1 -0
  103. package/dist/request.d.ts +3 -0
  104. package/dist/request.js +19 -0
  105. package/dist/request.js.map +1 -0
  106. package/dist/retry.d.ts +1 -0
  107. package/dist/retry.js +21 -0
  108. package/dist/retry.js.map +1 -0
  109. package/dist/retryBackoff.d.ts +1 -0
  110. package/dist/retryBackoff.js +21 -0
  111. package/dist/retryBackoff.js.map +1 -0
  112. package/dist/runLater.d.ts +1 -0
  113. package/dist/runLater.js +16 -0
  114. package/dist/runLater.js.map +1 -0
  115. package/dist/session/GetUserId.d.ts +5 -0
  116. package/dist/session/GetUserId.js +41 -0
  117. package/dist/session/GetUserId.js.map +1 -0
  118. package/dist/session/GetUserSession.d.ts +3 -0
  119. package/dist/session/GetUserSession.js +22 -0
  120. package/dist/session/GetUserSession.js.map +1 -0
  121. package/dist/session/addJwtSecretFromEnvVar.d.ts +14 -0
  122. package/dist/session/addJwtSecretFromEnvVar.js +23 -0
  123. package/dist/session/addJwtSecretFromEnvVar.js.map +1 -0
  124. package/dist/session/buildJwt.d.ts +1 -0
  125. package/dist/session/buildJwt.js +8 -0
  126. package/dist/session/buildJwt.js.map +1 -0
  127. package/dist/session/cookieUtils.d.ts +16 -0
  128. package/dist/session/cookieUtils.js +19 -0
  129. package/dist/session/cookieUtils.js.map +1 -0
  130. package/dist/session/destroySession.d.ts +10 -0
  131. package/dist/session/destroySession.js +44 -0
  132. package/dist/session/destroySession.js.map +1 -0
  133. package/dist/session/getSessionId.d.ts +2 -0
  134. package/dist/session/getSessionId.js +28 -0
  135. package/dist/session/getSessionId.js.map +1 -0
  136. package/dist/tenant-api/AuthorizedTenantClient.d.ts +25 -0
  137. package/dist/tenant-api/AuthorizedTenantClient.js +61 -0
  138. package/dist/tenant-api/AuthorizedTenantClient.js.map +1 -0
  139. package/dist/tenant-api/Tenant.d.ts +17 -0
  140. package/dist/tenant-api/Tenant.js +10 -0
  141. package/dist/tenant-api/Tenant.js.map +1 -0
  142. package/dist/test/JsonConnector.spec.d.ts +1 -0
  143. package/dist/test/JsonConnector.spec.js +352 -0
  144. package/dist/test/JsonConnector.spec.js.map +1 -0
  145. package/dist/test/JsonTransformer.spec.d.ts +1 -0
  146. package/dist/test/JsonTransformer.spec.js +98 -0
  147. package/dist/test/JsonTransformer.spec.js.map +1 -0
  148. package/dist/test/arbitraries.d.ts +98 -0
  149. package/dist/test/arbitraries.js +264 -0
  150. package/dist/test/arbitraries.js.map +1 -0
  151. package/dist/test/aspect-templates/organization-details.d.ts +4 -0
  152. package/dist/test/aspect-templates/organization-details.js +11 -0
  153. package/dist/test/aspect-templates/organization-details.js.map +1 -0
  154. package/dist/test/buildApiClient.spec.d.ts +1 -0
  155. package/dist/test/buildApiClient.spec.js +177 -0
  156. package/dist/test/buildApiClient.spec.js.map +1 -0
  157. package/dist/test/buildAuthorizedTenantClient.spec.d.ts +1 -0
  158. package/dist/test/buildAuthorizedTenantClient.spec.js +60 -0
  159. package/dist/test/buildAuthorizedTenantClient.spec.js.map +1 -0
  160. package/dist/test/connectors/MockExpressServer.d.ts +5 -0
  161. package/dist/test/connectors/MockExpressServer.js +28 -0
  162. package/dist/test/connectors/MockExpressServer.js.map +1 -0
  163. package/dist/test/connectors/MockRegistry.d.ts +7 -0
  164. package/dist/test/connectors/MockRegistry.js +93 -0
  165. package/dist/test/connectors/MockRegistry.js.map +1 -0
  166. package/dist/test/connectors/runConnectorTest.d.ts +5 -0
  167. package/dist/test/connectors/runConnectorTest.js +106 -0
  168. package/dist/test/connectors/runConnectorTest.js.map +1 -0
  169. package/dist/test/db/getTestDBConfig.d.ts +7 -0
  170. package/dist/test/db/getTestDBConfig.js +13 -0
  171. package/dist/test/db/getTestDBConfig.js.map +1 -0
  172. package/dist/test/db/runMigrationSql.d.ts +9 -0
  173. package/dist/test/db/runMigrationSql.js +82 -0
  174. package/dist/test/db/runMigrationSql.js.map +1 -0
  175. package/dist/test/express/status.spec.d.ts +1 -0
  176. package/dist/test/express/status.spec.js +160 -0
  177. package/dist/test/express/status.spec.js.map +1 -0
  178. package/dist/test/fakeArgv.d.ts +2 -0
  179. package/dist/test/fakeArgv.js +7 -0
  180. package/dist/test/fakeArgv.js.map +1 -0
  181. package/dist/test/getAuthDecision.spec.d.ts +1 -0
  182. package/dist/test/getAuthDecision.spec.js +22 -0
  183. package/dist/test/getAuthDecision.spec.js.map +1 -0
  184. package/dist/test/getBasePathFromUrl.spec.d.ts +1 -0
  185. package/dist/test/getBasePathFromUrl.spec.js +25 -0
  186. package/dist/test/getBasePathFromUrl.spec.js.map +1 -0
  187. package/dist/test/jsverify.d.ts +2 -0
  188. package/dist/test/jsverify.js +8 -0
  189. package/dist/test/jsverify.js.map +1 -0
  190. package/dist/test/mockAuthApiHost.d.ts +14 -0
  191. package/dist/test/mockAuthApiHost.js +174 -0
  192. package/dist/test/mockAuthApiHost.js.map +1 -0
  193. package/dist/test/mockAuthorization.d.ts +3 -0
  194. package/dist/test/mockAuthorization.js +24 -0
  195. package/dist/test/mockAuthorization.js.map +1 -0
  196. package/dist/test/mockTenantDataStore.d.ts +8 -0
  197. package/dist/test/mockTenantDataStore.js +41 -0
  198. package/dist/test/mockTenantDataStore.js.map +1 -0
  199. package/dist/test/mockUserDataStore.d.ts +11 -0
  200. package/dist/test/mockUserDataStore.js +56 -0
  201. package/dist/test/mockUserDataStore.js.map +1 -0
  202. package/dist/test/registry/buildAuthorizedClient.spec.d.ts +1 -0
  203. package/dist/test/registry/buildAuthorizedClient.spec.js +101 -0
  204. package/dist/test/registry/buildAuthorizedClient.spec.js.map +1 -0
  205. package/dist/test/sampleOpaResponse.json +480 -0
  206. package/dist/test/sampleOpaResponseSimple.json +173 -0
  207. package/dist/test/sampleOpaResponseUnconditionalTrue.json +193 -0
  208. package/dist/test/sampleOpaResponseUnconditionalTrueWithDefaultRule.json +303 -0
  209. package/dist/test/sampleOpaResponseWithDefaultRule.json +303 -0
  210. package/dist/test/session/buildJwt.spec.d.ts +1 -0
  211. package/dist/test/session/buildJwt.spec.js +50 -0
  212. package/dist/test/session/buildJwt.spec.js.map +1 -0
  213. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.d.ts +1 -0
  214. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js +64 -0
  215. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsAndOwnerTest.spec.js.map +1 -0
  216. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.d.ts +1 -0
  217. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js +52 -0
  218. package/dist/test/session/buildJwtForRegistryEsriOpaGroupsTest.spec.js.map +1 -0
  219. package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.d.ts +1 -0
  220. package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js +36 -0
  221. package/dist/test/session/buildJwtForRegistryEsriOpaOwnerTest.spec.js.map +1 -0
  222. package/dist/test/testAsyncPage.spec.d.ts +1 -0
  223. package/dist/test/testAsyncPage.spec.js +463 -0
  224. package/dist/test/testAsyncPage.spec.js.map +1 -0
  225. package/dist/test/testOpaCompileResponseParser.spec.d.ts +1 -0
  226. package/dist/test/testOpaCompileResponseParser.spec.js +148 -0
  227. package/dist/test/testOpaCompileResponseParser.spec.js.map +1 -0
  228. package/dist/test/util.d.ts +1 -0
  229. package/dist/test/util.js +8 -0
  230. package/dist/test/util.js.map +1 -0
  231. package/dist/util/arrayToMaybe.d.ts +2 -0
  232. package/dist/util/arrayToMaybe.js +8 -0
  233. package/dist/util/arrayToMaybe.js.map +1 -0
  234. package/dist/util/cleanOrgTitle.d.ts +1 -0
  235. package/dist/util/cleanOrgTitle.js +13 -0
  236. package/dist/util/cleanOrgTitle.js.map +1 -0
  237. package/dist/util/escapeRegExp.d.ts +2 -0
  238. package/dist/util/escapeRegExp.js +5 -0
  239. package/dist/util/escapeRegExp.js.map +1 -0
  240. package/dist/util/getMinikubeIP.d.ts +1 -0
  241. package/dist/util/getMinikubeIP.js +13 -0
  242. package/dist/util/getMinikubeIP.js.map +1 -0
  243. package/dist/util/isUuid.d.ts +2 -0
  244. package/dist/util/isUuid.js +6 -0
  245. package/dist/util/isUuid.js.map +1 -0
  246. package/dist/util/unionToThrowable.d.ts +1 -0
  247. package/dist/util/unionToThrowable.js +12 -0
  248. package/dist/util/unionToThrowable.js.map +1 -0
  249. package/dist/utilityTypes.d.ts +1 -0
  250. package/dist/utilityTypes.js +3 -0
  251. package/dist/utilityTypes.js.map +1 -0
  252. 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,2 @@
1
+ import jsc from "jsverify";
2
+ export default jsc;
@@ -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,3 @@
1
+ import { Test, Response } from "supertest";
2
+ export { Response };
3
+ export default function mockAuthorization(adminApiUrl: string, isAdmin: boolean, jwtSecret: string, req: Test): Promise<Response>;
@@ -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,8 @@
1
+ import { Tenant } from "../tenant-api/Tenant";
2
+ declare const mockTenantDataStore: {
3
+ reset: () => void;
4
+ getTenants: () => Tenant[];
5
+ createTenant(tenant: Tenant): any;
6
+ countTenants: () => number;
7
+ };
8
+ export default mockTenantDataStore;
@@ -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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"}