@rockcarver/frodo-lib 0.12.2-9 → 0.12.2

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 (41) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/cjs/index.js +3 -3
  3. package/cjs/index.js.map +1 -1
  4. package/cjs/ops/AdminOps.js +63 -34
  5. package/cjs/ops/AdminOps.js.map +1 -1
  6. package/cjs/ops/IdmOps.test.js.map +1 -0
  7. package/cjs/ops/IdpOps.js +75 -74
  8. package/cjs/ops/IdpOps.js.map +1 -1
  9. package/cjs/ops/IdpOps.test.js.map +1 -0
  10. package/cjs/ops/JourneyOps.js +5 -2
  11. package/cjs/ops/JourneyOps.js.map +1 -1
  12. package/cjs/ops/{SamlOps.js → Saml2Ops.js} +61 -61
  13. package/cjs/ops/Saml2Ops.js.map +1 -0
  14. package/cjs/ops/Saml2Ops.test.js.map +1 -0
  15. package/cjs/test/mocks/ForgeRockApiMockEngine.js +9 -0
  16. package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
  17. package/cjs/test/mocks/IdmConfigApi/getAllConfigEntities/entities.json +490 -0
  18. package/esm/index.mjs +1 -1
  19. package/esm/ops/AdminOps.mjs +32 -29
  20. package/esm/ops/IdmOps.test.mjs +43 -0
  21. package/esm/ops/IdpOps.mjs +30 -29
  22. package/esm/ops/IdpOps.test.mjs +63 -0
  23. package/esm/ops/JourneyOps.mjs +5 -2
  24. package/esm/ops/{SamlOps.mjs → Saml2Ops.mjs} +11 -11
  25. package/esm/ops/Saml2Ops.test.mjs +89 -0
  26. package/esm/test/mocks/ForgeRockApiMockEngine.mjs +7 -0
  27. package/esm/test/mocks/IdmConfigApi/getAllConfigEntities/entities.json +490 -0
  28. package/package.json +2 -2
  29. package/types/index.d.ts +1 -1
  30. package/types/index.d.ts.map +1 -1
  31. package/types/ops/AdminOps.d.ts +1 -0
  32. package/types/ops/AdminOps.d.ts.map +1 -1
  33. package/types/ops/IdpOps.d.ts +12 -12
  34. package/types/ops/IdpOps.d.ts.map +1 -1
  35. package/types/ops/JourneyOps.d.ts.map +1 -1
  36. package/types/ops/{SamlOps.d.ts → Saml2Ops.d.ts} +10 -10
  37. package/types/ops/Saml2Ops.d.ts.map +1 -0
  38. package/types/test/mocks/ForgeRockApiMockEngine.d.ts +1 -0
  39. package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
  40. package/cjs/ops/SamlOps.js.map +0 -1
  41. package/types/ops/SamlOps.d.ts.map +0 -1
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.describeProvider = describeProvider;
7
- exports.exportMetadata = exportMetadata;
8
- exports.exportProvider = exportProvider;
9
- exports.exportProvidersToFile = exportProvidersToFile;
10
- exports.exportProvidersToFiles = exportProvidersToFiles;
11
- exports.importFirstProvider = importFirstProvider;
12
- exports.importProvider = importProvider;
13
- exports.importProvidersFromFile = importProvidersFromFile;
14
- exports.importProvidersFromFiles = importProvidersFromFiles;
15
- exports.listProviders = listProviders;
6
+ exports.describeSaml2Provider = describeSaml2Provider;
7
+ exports.exportSaml2Metadata = exportSaml2Metadata;
8
+ exports.exportSaml2ProviderToFile = exportSaml2ProviderToFile;
9
+ exports.exportSaml2ProvidersToFile = exportSaml2ProvidersToFile;
10
+ exports.exportSaml2ProvidersToFiles = exportSaml2ProvidersToFiles;
11
+ exports.importFirstSaml2ProviderFromFile = importFirstSaml2ProviderFromFile;
12
+ exports.importSaml2ProviderFromFile = importSaml2ProviderFromFile;
13
+ exports.importSaml2ProvidersFromFile = importSaml2ProvidersFromFile;
14
+ exports.importSaml2ProvidersFromFiles = importSaml2ProvidersFromFiles;
15
+ exports.listSaml2Providers = listSaml2Providers;
16
16
 
17
17
  var _fs = _interopRequireDefault(require("fs"));
18
18
 
@@ -60,8 +60,8 @@ function getFileDataTemplate() {
60
60
  */
61
61
 
62
62
 
63
- function listProviders() {
64
- return _listProviders.apply(this, arguments);
63
+ function listSaml2Providers() {
64
+ return _listSaml2Providers.apply(this, arguments);
65
65
  }
66
66
  /**
67
67
  * Include dependencies in the export file
@@ -70,8 +70,8 @@ function listProviders() {
70
70
  */
71
71
 
72
72
 
73
- function _listProviders() {
74
- _listProviders = _asyncToGenerator(function* () {
73
+ function _listSaml2Providers() {
74
+ _listSaml2Providers = _asyncToGenerator(function* () {
75
75
  var long = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
76
76
  var providerList = (yield (0, _Saml2Api.getProviders)()).result;
77
77
  providerList.sort((a, b) => a._id.localeCompare(b._id));
@@ -90,7 +90,7 @@ function _listProviders() {
90
90
  (0, _Console.printMessage)(table.toString());
91
91
  }
92
92
  });
93
- return _listProviders.apply(this, arguments);
93
+ return _listSaml2Providers.apply(this, arguments);
94
94
  }
95
95
 
96
96
  function exportDependencies(_x, _x2) {
@@ -131,8 +131,8 @@ function _exportDependencies() {
131
131
  return _exportDependencies.apply(this, arguments);
132
132
  }
133
133
 
134
- function exportProvider(_x3) {
135
- return _exportProvider.apply(this, arguments);
134
+ function exportSaml2ProviderToFile(_x3) {
135
+ return _exportSaml2ProviderToFile.apply(this, arguments);
136
136
  }
137
137
  /**
138
138
  * Export provider metadata to file
@@ -141,8 +141,8 @@ function exportProvider(_x3) {
141
141
  */
142
142
 
143
143
 
144
- function _exportProvider() {
145
- _exportProvider = _asyncToGenerator(function* (entityId) {
144
+ function _exportSaml2ProviderToFile() {
145
+ _exportSaml2ProviderToFile = _asyncToGenerator(function* (entityId) {
146
146
  var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
147
147
  var fileName = file;
148
148
 
@@ -191,11 +191,11 @@ function _exportProvider() {
191
191
  (0, _Console.printMessage)(error.message, 'error');
192
192
  }
193
193
  });
194
- return _exportProvider.apply(this, arguments);
194
+ return _exportSaml2ProviderToFile.apply(this, arguments);
195
195
  }
196
196
 
197
- function exportMetadata(_x4) {
198
- return _exportMetadata.apply(this, arguments);
197
+ function exportSaml2Metadata(_x4) {
198
+ return _exportSaml2Metadata.apply(this, arguments);
199
199
  }
200
200
  /**
201
201
  * Describe an entity provider's configuration
@@ -203,8 +203,8 @@ function exportMetadata(_x4) {
203
203
  */
204
204
 
205
205
 
206
- function _exportMetadata() {
207
- _exportMetadata = _asyncToGenerator(function* (entityId) {
206
+ function _exportSaml2Metadata() {
207
+ _exportSaml2Metadata = _asyncToGenerator(function* (entityId) {
208
208
  var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
209
209
  var fileName = file;
210
210
 
@@ -230,11 +230,11 @@ function _exportMetadata() {
230
230
  (0, _Console.printMessage)(err, 'error');
231
231
  });
232
232
  });
233
- return _exportMetadata.apply(this, arguments);
233
+ return _exportSaml2Metadata.apply(this, arguments);
234
234
  }
235
235
 
236
- function describeProvider(_x5) {
237
- return _describeProvider.apply(this, arguments);
236
+ function describeSaml2Provider(_x5) {
237
+ return _describeSaml2Provider.apply(this, arguments);
238
238
  }
239
239
  /**
240
240
  * Export all entity providers to one file
@@ -242,8 +242,8 @@ function describeProvider(_x5) {
242
242
  */
243
243
 
244
244
 
245
- function _describeProvider() {
246
- _describeProvider = _asyncToGenerator(function* (entityId) {
245
+ function _describeSaml2Provider() {
246
+ _describeSaml2Provider = _asyncToGenerator(function* (entityId) {
247
247
  try {
248
248
  var found = yield (0, _Saml2Api.findProviders)("entityId eq '".concat(entityId, "'"), 'location,roles');
249
249
 
@@ -287,19 +287,19 @@ function _describeProvider() {
287
287
  (0, _Console.printMessage)(error.message, 'error');
288
288
  }
289
289
  });
290
- return _describeProvider.apply(this, arguments);
290
+ return _describeSaml2Provider.apply(this, arguments);
291
291
  }
292
292
 
293
- function exportProvidersToFile() {
294
- return _exportProvidersToFile.apply(this, arguments);
293
+ function exportSaml2ProvidersToFile() {
294
+ return _exportSaml2ProvidersToFile.apply(this, arguments);
295
295
  }
296
296
  /**
297
297
  * Export all entity providers to individual files
298
298
  */
299
299
 
300
300
 
301
- function _exportProvidersToFile() {
302
- _exportProvidersToFile = _asyncToGenerator(function* () {
301
+ function _exportSaml2ProvidersToFile() {
302
+ _exportSaml2ProvidersToFile = _asyncToGenerator(function* () {
303
303
  var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
304
304
  var fileName = file;
305
305
 
@@ -335,11 +335,11 @@ function _exportProvidersToFile() {
335
335
  (0, _Console.printMessage)("exportProvidersToFile: ".concat((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status), 'error');
336
336
  }
337
337
  });
338
- return _exportProvidersToFile.apply(this, arguments);
338
+ return _exportSaml2ProvidersToFile.apply(this, arguments);
339
339
  }
340
340
 
341
- function exportProvidersToFiles() {
342
- return _exportProvidersToFiles.apply(this, arguments);
341
+ function exportSaml2ProvidersToFiles() {
342
+ return _exportSaml2ProvidersToFiles.apply(this, arguments);
343
343
  }
344
344
  /**
345
345
  * Include dependencies from the import file
@@ -348,8 +348,8 @@ function exportProvidersToFiles() {
348
348
  */
349
349
 
350
350
 
351
- function _exportProvidersToFiles() {
352
- _exportProvidersToFiles = _asyncToGenerator(function* () {
351
+ function _exportSaml2ProvidersToFiles() {
352
+ _exportSaml2ProvidersToFiles = _asyncToGenerator(function* () {
353
353
  var found = yield (0, _Saml2Api.getProviders)();
354
354
 
355
355
  if (found.resultCount > 0) {
@@ -372,7 +372,7 @@ function _exportProvidersToFiles() {
372
372
  (0, _Console.printMessage)('No entity providers found.', 'info');
373
373
  }
374
374
  });
375
- return _exportProvidersToFiles.apply(this, arguments);
375
+ return _exportSaml2ProvidersToFiles.apply(this, arguments);
376
376
  }
377
377
 
378
378
  function importDependencies(_x6, _x7) {
@@ -427,8 +427,8 @@ function getLocation(entityId64, fileData) {
427
427
  */
428
428
 
429
429
 
430
- function importProvider(_x8, _x9) {
431
- return _importProvider.apply(this, arguments);
430
+ function importSaml2ProviderFromFile(_x8, _x9) {
431
+ return _importSaml2ProviderFromFile.apply(this, arguments);
432
432
  }
433
433
  /**
434
434
  * Import first SAML entity provider from file
@@ -436,8 +436,8 @@ function importProvider(_x8, _x9) {
436
436
  */
437
437
 
438
438
 
439
- function _importProvider() {
440
- _importProvider = _asyncToGenerator(function* (entityId, file) {
439
+ function _importSaml2ProviderFromFile() {
440
+ _importSaml2ProviderFromFile = _asyncToGenerator(function* (entityId, file) {
441
441
  var entityId64 = (0, _Base.encode)(entityId, false);
442
442
 
443
443
  _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
@@ -479,11 +479,11 @@ function _importProvider() {
479
479
  };
480
480
  }());
481
481
  });
482
- return _importProvider.apply(this, arguments);
482
+ return _importSaml2ProviderFromFile.apply(this, arguments);
483
483
  }
484
484
 
485
- function importFirstProvider(_x10) {
486
- return _importFirstProvider.apply(this, arguments);
485
+ function importFirstSaml2ProviderFromFile(_x10) {
486
+ return _importFirstSaml2ProviderFromFile.apply(this, arguments);
487
487
  }
488
488
  /**
489
489
  * Import all SAML entity providers from file
@@ -491,8 +491,8 @@ function importFirstProvider(_x10) {
491
491
  */
492
492
 
493
493
 
494
- function _importFirstProvider() {
495
- _importFirstProvider = _asyncToGenerator(function* (file) {
494
+ function _importFirstSaml2ProviderFromFile() {
495
+ _importFirstSaml2ProviderFromFile = _asyncToGenerator(function* (file) {
496
496
  _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
497
497
  var _ref3 = _asyncToGenerator(function* (err, data) {
498
498
  if (err) throw err;
@@ -548,19 +548,19 @@ function _importFirstProvider() {
548
548
  };
549
549
  }());
550
550
  });
551
- return _importFirstProvider.apply(this, arguments);
551
+ return _importFirstSaml2ProviderFromFile.apply(this, arguments);
552
552
  }
553
553
 
554
- function importProvidersFromFile(_x11) {
555
- return _importProvidersFromFile.apply(this, arguments);
554
+ function importSaml2ProvidersFromFile(_x11) {
555
+ return _importSaml2ProvidersFromFile.apply(this, arguments);
556
556
  }
557
557
  /**
558
558
  * Import all SAML entity providers from all *.saml.json files in the current directory
559
559
  */
560
560
 
561
561
 
562
- function _importProvidersFromFile() {
563
- _importProvidersFromFile = _asyncToGenerator(function* (file) {
562
+ function _importSaml2ProvidersFromFile() {
563
+ _importSaml2ProvidersFromFile = _asyncToGenerator(function* (file) {
564
564
  _fs.default.readFile(file, 'utf8', /*#__PURE__*/function () {
565
565
  var _ref4 = _asyncToGenerator(function* (err, data) {
566
566
  if (err) throw err;
@@ -610,15 +610,15 @@ function _importProvidersFromFile() {
610
610
  };
611
611
  }());
612
612
  });
613
- return _importProvidersFromFile.apply(this, arguments);
613
+ return _importSaml2ProvidersFromFile.apply(this, arguments);
614
614
  }
615
615
 
616
- function importProvidersFromFiles() {
617
- return _importProvidersFromFiles.apply(this, arguments);
616
+ function importSaml2ProvidersFromFiles() {
617
+ return _importSaml2ProvidersFromFiles.apply(this, arguments);
618
618
  }
619
619
 
620
- function _importProvidersFromFiles() {
621
- _importProvidersFromFiles = _asyncToGenerator(function* () {
620
+ function _importSaml2ProvidersFromFiles() {
621
+ _importSaml2ProvidersFromFiles = _asyncToGenerator(function* () {
622
622
  var names = _fs.default.readdirSync('.');
623
623
 
624
624
  var jsonFiles = names.filter(name => name.toLowerCase().endsWith('.saml.json'));
@@ -673,6 +673,6 @@ function _importProvidersFromFiles() {
673
673
 
674
674
  (0, _Console.stopProgressIndicator)("Imported ".concat(total - totalErrors, " of ").concat(total, " provider(s) from ").concat(jsonFiles.length, " file(s)."));
675
675
  });
676
- return _importProvidersFromFiles.apply(this, arguments);
676
+ return _importSaml2ProvidersFromFiles.apply(this, arguments);
677
677
  }
678
- //# sourceMappingURL=SamlOps.js.map
678
+ //# sourceMappingURL=Saml2Ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Saml2Ops.js","names":["roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","listSaml2Providers","long","providerList","getProviders","result","sort","a","b","_id","localeCompare","provider","printMessage","entityId","table","createTable","push","location","roles","map","role","join","toString","exportDependencies","providerData","fileData","attrMapperScriptId","_","get","scriptData","getScript","convertBase64TextToArray","idpAdapterScriptId","metaDataResponse","getProviderMetadata","convertBase64UrlTextToArray","encodeBase64Url","exportSaml2ProviderToFile","file","fileName","getTypedFilename","createProgressIndicator","found","findProviders","resultCount","id","response","getProviderByLocationAndId","updateProgressIndicator","saveJsonToFile","stopProgressIndicator","brightCyan","err","error","message","exportSaml2Metadata","then","metaData","saveTextToFile","catch","describeSaml2Provider","rawProviderData","_rev","metadataUrl","getProviderMetadataUrl","createObjectTable","exportSaml2ProvidersToFile","getRealmString","stubData","status","exportSaml2ProvidersToFiles","importDependencies","convertTextArrayToBase64","createOrUpdateScript","getLocation","entityId64","undefined","importSaml2ProviderFromFile","encode","fs","readFile","data","JSON","parse","validateImport","convertTextArrayToBase64Url","createProvider","createProviderErr","importFirstSaml2ProviderFromFile","providerIds","keys","length","decode","importSaml2ProvidersFromFile","hostedIds","remoteIds","concat","includes","importSaml2ProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["ops/Saml2Ops.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport { decode, encode, encodeBase64Url } from '../api/utils/Base64';\nimport {\n createTable,\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n createObjectTable,\n} from './utils/Console';\nimport {\n getProviders,\n findProviders,\n getProviderByLocationAndId,\n getProviderMetadata,\n createProvider,\n getProviderMetadataUrl,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n validateImport,\n} from './utils/ExportImportUtils';\nimport { createOrUpdateScript } from './ScriptOps';\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listSaml2Providers(long = false) {\n const providerList = (await getProviders()).result;\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const provider of providerList) {\n printMessage(`${provider.entityId}`, 'data');\n }\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n for (const provider of providerList) {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n }\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = await getScript(attrMapperScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = await getScript(idpAdapterScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n // eslint-disable-next-line no-param-reassign\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse)\n );\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProviderToFile(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'saml');\n }\n createProgressIndicator(1, `Exporting provider ${entityId}`);\n try {\n const found = await findProviders(`entityId eq '${entityId}'`, 'location');\n switch (found.resultCount) {\n case 0:\n printMessage(`No provider with entity id '${entityId}' found`, 'error');\n break;\n case 1:\n {\n const { location } = found.result[0];\n const id = found.result[0]._id;\n try {\n const response = await getProviderByLocationAndId(location, id);\n const providerData = response;\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.saml[location][providerData._id] = providerData;\n await exportDependencies(providerData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n }\n break;\n default:\n printMessage(\n `Multiple providers with entity id '${entityId}' found`,\n 'error'\n );\n }\n } catch (error) {\n stopProgressIndicator(`${error}`);\n printMessage(error.message, 'error');\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportSaml2Metadata(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressIndicator(1, `Exporting metadata for: ${entityId}`);\n getProviderMetadata(entityId)\n .then(async (response) => {\n updateProgressIndicator(`Writing file ${fileName}`);\n // printMessage(response.data, 'error');\n const metaData = response;\n saveTextToFile(metaData, fileName);\n stopProgressIndicator(\n `Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n });\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeSaml2Provider(entityId) {\n try {\n const found = await findProviders(\n `entityId eq '${entityId}'`,\n 'location,roles'\n );\n switch (found.resultCount) {\n case 0:\n printMessage(`No provider with entity id '${entityId}' found`, 'error');\n break;\n case 1:\n {\n try {\n const { location } = found.result[0];\n const id = found.result[0]._id;\n const roles = found.result[0].roles\n .map((role) => roleMap[role])\n .join(', ');\n const response = await getProviderByLocationAndId(location, id);\n const rawProviderData = response;\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getProviderMetadataUrl(entityId);\n // const fullProviderData = getFileDataTemplate();\n // fullProviderData.saml[location][rawProviderData._id] =\n // rawProviderData;\n // await exportDependencies(rawProviderData, fullProviderData);\n // describe the provider\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString());\n } catch (err) {\n printMessage(err, 'error');\n }\n }\n break;\n default:\n printMessage(\n `Multiple providers with entity id '${entityId}' found`,\n 'error'\n );\n }\n } catch (error) {\n printMessage(error.message, 'error');\n }\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportSaml2ProvidersToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n try {\n const fileData = getFileDataTemplate();\n const found = await getProviders();\n if (found.resultCount > 0) {\n createProgressIndicator(found.resultCount, 'Exporting providers');\n for (const stubData of found.result) {\n updateProgressIndicator(`Exporting provider ${stubData.entityId}`);\n // eslint-disable-next-line no-await-in-loop\n const providerData = await getProviderByLocationAndId(\n stubData.location,\n stubData._id\n );\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(providerData, fileData);\n fileData.saml[stubData.location][providerData._id] = providerData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${found.resultCount} providers exported to ${fileName}.`\n );\n } else {\n printMessage('No entity providers found.', 'info');\n }\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportProvidersToFile: ${error.response?.status}`, 'error');\n }\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportSaml2ProvidersToFiles() {\n const found = await getProviders();\n if (found.resultCount > 0) {\n createProgressIndicator(found.resultCount, 'Exporting providers');\n for (const stubData of found.result) {\n updateProgressIndicator(`Exporting provider ${stubData.entityId}`);\n const fileName = getTypedFilename(stubData.entityId, 'saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n const providerData = await getProviderByLocationAndId(\n stubData.location,\n stubData._id\n );\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(providerData, fileData);\n fileData.saml[stubData.location][providerData._id] = providerData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${found.resultCount} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await createOrUpdateScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await createOrUpdateScript(attrMapperScriptId, scriptData);\n }\n}\n\n/**\n * Find provider in import file and return its location\n * @param {String} entityId64 Base64-encoded provider entity id\n * @param {Object} fileData Import file json data\n * @returns {String} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(entityId64, fileData) {\n if (_.get(fileData, ['saml', 'hosted', entityId64])) {\n return 'hosted';\n }\n if (_.get(fileData, ['saml', 'remote', entityId64])) {\n return 'remote';\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importSaml2ProviderFromFile(entityId, file) {\n const entityId64 = encode(entityId, false);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n const location = getLocation(entityId64, fileData);\n if (location) {\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n updateProgressIndicator(`Importing ${entityId}`);\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n createProvider(location, providerData, metaData)\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${entityId}.`\n );\n })\n .catch((createProviderErr) => {\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response, 'error');\n });\n } else {\n stopProgressIndicator(\n `Provider ${entityId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML entity provider from file\n * @param {String} file Import file name\n */\nexport async function importFirstSaml2ProviderFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n // find providers in hosted and if none exist in remote\n let location = 'hosted';\n let providerIds = _.keys(fileData.saml[location]);\n if (providerIds.length === 0) {\n location = 'remote';\n providerIds = _.keys(fileData.saml[location]);\n if (providerIds.length === 0) {\n location = null;\n }\n }\n if (location) {\n const entityId64 = providerIds[0];\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n updateProgressIndicator(`Importing ${entityId}`);\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n createProvider(location, providerData, metaData)\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${entityId}.`\n );\n })\n .catch((createProviderErr) => {\n stopProgressIndicator(`Error importing provider ${entityId}`);\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n });\n } else {\n stopProgressIndicator(`No providers found in ${file.brightCyan}!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importSaml2ProvidersFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n // find providers in hosted and in remote and map locations\n const hostedIds = _.keys(fileData.saml.hosted);\n const remoteIds = _.keys(fileData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n createProgressIndicator(providerIds.length, 'Importing providers...');\n for (const entityId64 of providerIds) {\n const location = hostedIds.includes(entityId64) ? 'hosted' : 'remote';\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n await createProvider(location, providerData, metaData);\n updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n }\n stopProgressIndicator(`Providers imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importSaml2ProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.saml.json')\n );\n createProgressIndicator(jsonFiles.length, 'Importing providers...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n // find providers in hosted and in remote and map locations\n const hostedIds = _.keys(fileData.saml.hosted);\n const remoteIds = _.keys(fileData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n total += providerIds.length;\n let errors = 0;\n for (const entityId64 of providerIds) {\n const location = hostedIds.includes(entityId64) ? 'hosted' : 'remote';\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n await createProvider(location, providerData, metaData);\n // updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n errors += 1;\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n }\n totalErrors += errors;\n updateProgressIndicator(\n `Imported ${providerIds.length - errors} provider(s) from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} provider(s) from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Saml2Ops.test.js","names":["mock","MockAdapter","axios","state","default","session","setTenant","setRealm","setCookieName","setCookieValue","setDeploymentType","global","CLOUD_DEPLOYMENT_TYPE_KEY","describe","test","expect","Saml2","describeSaml2Provider","toBeDefined","mockFindSaml2Providers","mockGetSaml2ProviderByLocationAndId","mockGetSaml2ProviderMetadata","assertions","toBeTruthy","exportSaml2Metadata","exportSaml2ProviderToFile","exportSaml2ProvidersToFile","exportSaml2ProvidersToFiles","importFirstSaml2ProviderFromFile","importSaml2ProviderFromFile","importSaml2ProvidersFromFile","importSaml2ProvidersFromFiles","mockGetSaml2Providers","listSaml2Providers"],"sources":["ops/Saml2Ops.test.ts"],"sourcesContent":["import axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport { Saml2, state } from '../index';\nimport * as global from '../storage/StaticStorage';\nimport {\n mockGetSaml2Providers,\n mockFindSaml2Providers,\n mockGetSaml2ProviderByLocationAndId,\n mockGetSaml2ProviderMetadata,\n} from '../test/mocks/ForgeRockApiMockEngine';\n\nconst mock = new MockAdapter(axios);\n\nstate.default.session.setTenant('https://openam-frodo-dev.forgeblocks.com/am');\nstate.default.session.setRealm('alpha');\nstate.default.session.setCookieName('cookieName');\nstate.default.session.setCookieValue('cookieValue');\nstate.default.session.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);\n\ndescribe('Saml2Ops - describeSaml2Provider()', () => {\n test('describeSaml2Provider() 0: Method is implemented', async () => {\n expect(Saml2.describeSaml2Provider).toBeDefined();\n });\n\n test('describeSaml2Provider() 1: Describe saml2 entity provider', async () => {\n mockFindSaml2Providers(mock);\n mockGetSaml2ProviderByLocationAndId(mock);\n mockGetSaml2ProviderMetadata(mock);\n expect.assertions(2);\n await Saml2.describeSaml2Provider('iSPAzure');\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2Metadata()', () => {\n test('exportSaml2Metadata() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Metadata).toBeDefined();\n });\n\n test('describeSaml2Provider() 1: Export hosted saml2 entity provider metadata', async () => {\n mockGetSaml2ProviderMetadata(mock);\n expect.assertions(2);\n await Saml2.exportSaml2Metadata('iSPAzure');\n expect(true).toBeTruthy();\n });\n\n test('describeSaml2Provider() 2: Export remote saml2 entity provider metadata', async () => {\n mockGetSaml2ProviderMetadata(mock);\n expect.assertions(2);\n await Saml2.exportSaml2Metadata('urn:federation:MicrosoftOnline');\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProviderToFile()', () => {\n test('exportSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFile()', () => {\n test('exportSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFiles()', () => {\n test('exportSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importFirstSaml2ProviderFromFile()', () => {\n test('importFirstSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importFirstSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProviderFromFile()', () => {\n test('importSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFile()', () => {\n test('importSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFiles()', () => {\n test('importSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - listSaml2Providers()', () => {\n mockGetSaml2Providers(mock);\n test('listSaml2Providers() 0: Method is implemented', async () => {\n expect(Saml2.listSaml2Providers).toBeDefined();\n });\n\n test('listSaml2Providers() 1: List saml2 entity providers', async () => {\n mockGetSaml2Providers(mock);\n expect.assertions(2);\n await Saml2.listSaml2Providers();\n expect(true).toBeTruthy();\n });\n});\n"],"mappings":"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"}
@@ -23,6 +23,7 @@ exports.mockGetScript = mockGetScript;
23
23
  exports.mockGetSocialProviders = mockGetSocialProviders;
24
24
  exports.mockGetTree = mockGetTree;
25
25
  exports.mockGetTrees = mockGetTrees;
26
+ exports.mockListAllConfigEntities = mockListAllConfigEntities;
26
27
  exports.mockPutConfigEntity = mockPutConfigEntity;
27
28
  exports.mockPutNode = mockPutNode;
28
29
  exports.mockPutScript = mockPutScript;
@@ -319,6 +320,14 @@ function mockPutSocialProviderByTypeAndId(mock, callback) {
319
320
  */
320
321
 
321
322
 
323
+ function mockListAllConfigEntities(mock) {
324
+ mock.onGet(/.*?\/openidm\/config$/).reply(function () {
325
+ var mockStatus = 200;
326
+ var mockResponse = JSON.parse(_fs.default.readFileSync(_path.default.resolve(_dirname, "./IdmConfigApi/getAllConfigEntities/entities.json"), 'utf8'));
327
+ return [mockStatus, mockResponse];
328
+ });
329
+ }
330
+
322
331
  function mockGetConfigEntity(mock) {
323
332
  mock.onGet(/.*?\/openidm\/config\/.+/).reply(function (config) {
324
333
  var entityId = config.url ? config.url.substring(config.url.indexOf('/config/') + 8) : '';
@@ -1 +1 @@
1
- {"version":3,"file":"ForgeRockApiMockEngine.js","names":["__dirname","path","dirname","fileURLToPath","readJsonFile","file","json","JSON","parse","fs","readFileSync","resolve","getTrees","treeObjects","mockGetTrees","mock","onGet","reply","mockStatus","mockResponse","expect","toBeTruthy","getTree","treeId","treeObject","mockGetTree","config","elements","url","split","length","_id","toBe","mockPutTree","callback","onPut","mockTreeObj","data","mockGetNode","nodeType","nodeId","mockPutNode","mockNodeObj","getScript","scriptId","mockGetScript","mockPutScript","mockScriptObj","getScriptByName","scriptName","getSaml2Providers","mockGetSaml2Providers","mockFindSaml2Providers","result","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults","getCirclesOfTrust","mockGetCirclesOfTrust","mockCreateCircleOfTrust","onPost","mockCotObj","cotId","mockUpdateCircleOfTrust","mockGetSaml2ProviderByLocationAndId","location","providerId","mockCreateSaml2Provider","parseUrl","pathname","mockSaml2ProviderLocation","mockSaml2ProviderObj","mockSaml2ProviderId64","metaDataXml","decode","standardMetadata","encode","match","mockUpdateSaml2Provider","mockGetSaml2ProviderMetadata","parsed","realm","searchParam","entityId","getSocialProviders","mockGetSocialProviders","mockPutSocialProviderByTypeAndId","mockSocialProviderType","mockSocialProviderId","mockSocialProviderObj","mockGetConfigEntity","substring","indexOf","mockPutConfigEntity"],"sources":["test/mocks/ForgeRockApiMockEngine.ts"],"sourcesContent":["import MockAdapter from 'axios-mock-adapter';\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { encode, decode } from '../../api/utils/Base64';\nimport { parseUrl } from '../../api/utils/ApiUtils';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport function readJsonFile(file: string) {\n const json = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, `${file}`), 'utf8')\n );\n return json;\n}\n\n/**\n * AM Mocks and Utils\n */\n\nexport function getTrees() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, './TreeApi/getTrees/trees.json'),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetTrees(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/trees\\?_queryFilter=true/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getTrees();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function getTree(treeId: string) {\n const treeObject = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, `./TreeApi/getTree/${treeId}.json`),\n 'utf8'\n )\n );\n return treeObject;\n}\n\nexport function mockGetTree(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/trees\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const treeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = getTree(treeId);\n expect(mockResponse._id).toBe(treeId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutTree(\n mock: MockAdapter,\n callback: (mockTreeId: string, mockTreeObj) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/trees\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const treeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockTreeObj = JSON.parse(config.data);\n callback(treeId, mockTreeObj);\n return [mockStatus, mockTreeObj];\n });\n}\n\nexport function mockGetNode(mock: MockAdapter) {\n mock\n .onGet(\n /\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/nodes\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const nodeType = elements[elements?.length - 2];\n const nodeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./NodeApi/getNode/${nodeType}/${nodeId}.json`\n ),\n 'utf8'\n )\n );\n expect(mockResponse._id).toBe(nodeId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutNode(\n mock: MockAdapter,\n callback: (mockNodeId: string, mockNodeObj) => void\n) {\n mock\n .onPut(\n /\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/nodes\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const nodeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockNodeObj = JSON.parse(config.data);\n callback(nodeId, mockNodeObj);\n return [mockStatus, mockNodeObj];\n });\n}\n\nexport function getScript(scriptId: string) {\n const treeObject = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, `./ScriptApi/getScript/${scriptId}.json`),\n 'utf8'\n )\n );\n return treeObject;\n}\n\nexport function mockGetScript(mock: MockAdapter) {\n mock\n .onGet(/.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/scripts\\/.+/)\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const scriptId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = getScript(scriptId);\n expect(mockResponse._id).toBe(scriptId);\n return [mockStatus, mockResponse];\n });\n}\n\n// mockPutScript(mock);\nexport function mockPutScript(\n mock: MockAdapter,\n callback: (mockScriptId: string, mockScriptObj) => void\n) {\n mock\n .onPut(/.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/scripts\\/.+/)\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const scriptId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockScriptObj = JSON.parse(config.data);\n callback(scriptId, mockScriptObj);\n return [mockStatus, mockScriptObj];\n });\n}\n\nexport function getScriptByName(scriptName: string) {\n const treeObject = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, `./ScriptApi/getScriptByName/${scriptName}.json`),\n 'utf8'\n )\n );\n return treeObject;\n}\n\n// export function mockGetScriptByName(mock: MockAdapter) {\n// mock\n// .onGet(\n// /\\/json\\/realms\\/root\\/realms\\/alpha\\/scripts\\?_queryFilter=name\\+eq\\+'.+'/\n// )\n// .reply(function (config) {\n// const elements = config.url ? config.url.split('/') : [];\n// const scriptId = elements[elements?.length - 1];\n// const mockStatus = 200;\n// const mockResponse = getScript(scriptId);\n// expect(mockResponse._id).toBe(scriptId);\n// return [mockStatus, mockResponse];\n// });\n// }\n\nexport function getSaml2Providers() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, './Saml2Api/getProviders/providers.json'),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetSaml2Providers(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\?_queryFilter=true/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getSaml2Providers();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockFindSaml2Providers(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\?_queryFilter=.+?&_fields=.+/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'EXACT',\n totalPagedResults: 1,\n remainingPagedResults: -1,\n };\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function getCirclesOfTrust() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n './CirclesOfTrustApi/getCirclesOfTrust/cots.json'\n ),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetCirclesOfTrust(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/federation\\/circlesoftrust\\?_queryFilter=true/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getCirclesOfTrust();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockCreateCircleOfTrust(\n mock: MockAdapter,\n callback: (mockCotId: string, mockCotObj) => void\n) {\n mock\n .onPost(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/federation\\/circlesoftrust\\/\\?_action=create/\n )\n .reply(function (config) {\n const mockCotObj = JSON.parse(config.data);\n const cotId = mockCotObj._id;\n const mockStatus = 200;\n callback(cotId, mockCotObj);\n return [mockStatus, mockCotObj];\n });\n}\n\nexport function mockUpdateCircleOfTrust(\n mock: MockAdapter,\n callback: (mockCotId: string, mockCotObj) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/federation\\/circlesoftrust\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const cotId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockCotObj = JSON.parse(config.data);\n callback(cotId, mockCotObj);\n return [mockStatus, mockCotObj];\n });\n}\n\nexport function mockGetSaml2ProviderByLocationAndId(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\/.+?\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const location = elements[elements?.length - 2];\n const providerId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./Saml2Api/getProviderByLocationAndId/${location}/${providerId}.json`\n ),\n 'utf8'\n )\n );\n expect(mockResponse._id).toBe(providerId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockCreateSaml2Provider(\n mock: MockAdapter,\n callback: (\n mockSaml2ProviderId64: string,\n mockSaml2ProviderLocation: string,\n mockSaml2ProviderObj\n ) => void\n) {\n mock\n .onPost(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\/(hosted|remote)\\/\\?_action=(create|importEntity)/\n )\n .reply(function (config) {\n const elements = config.url\n ? parseUrl(config.url).pathname.split('/')\n : [];\n const mockSaml2ProviderLocation = elements[elements?.length - 1];\n const mockSaml2ProviderObj = JSON.parse(config.data);\n let mockSaml2ProviderId64 = '';\n if (mockSaml2ProviderObj._id) {\n mockSaml2ProviderId64 = mockSaml2ProviderObj._id;\n } else {\n const metaDataXml = decode(mockSaml2ProviderObj.standardMetadata);\n mockSaml2ProviderId64 = encode(\n metaDataXml.match(/entityID=\"(.+?)\"/)[1],\n false\n );\n }\n const mockStatus = 200;\n callback(\n mockSaml2ProviderId64,\n mockSaml2ProviderLocation,\n mockSaml2ProviderObj\n );\n return [mockStatus, mockSaml2ProviderObj];\n });\n}\n\nexport function mockUpdateSaml2Provider(\n mock: MockAdapter,\n callback: (\n mockSaml2ProviderId64: string,\n mockSaml2ProviderLocation: string,\n mockSaml2ProviderObj\n ) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\/(hosted|remote)\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const mockSaml2ProviderLocation = elements[elements?.length - 2];\n const mockSaml2ProviderId64 = elements[elements?.length - 1];\n const mockSaml2ProviderObj = JSON.parse(config.data);\n const mockStatus = 200;\n callback(\n mockSaml2ProviderId64,\n mockSaml2ProviderLocation,\n mockSaml2ProviderObj\n );\n return [mockStatus, mockSaml2ProviderObj];\n });\n}\n\nexport function mockGetSaml2ProviderMetadata(mock: MockAdapter) {\n mock\n .onGet(/.*?\\/saml2\\/jsp\\/exportmetadata.jsp\\?entityid=.+?&realm=.+/)\n .reply(function (config) {\n const parsed = parseUrl(config.url);\n const realm = parsed.searchParam['realm'];\n const entityId = parsed.searchParam['entityid'];\n const mockStatus = 200;\n const mockResponse = fs.readFileSync(\n path.resolve(\n __dirname,\n `./Saml2Api/getProviderMetadata/${realm}/${encode(\n entityId,\n false\n )}.xml`\n ),\n 'utf8'\n );\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function getSocialProviders() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n './SocialIdentityProvidersApi/getSocialIdentityProviders/socialIdentityProviders.json'\n ),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetSocialProviders(mock: MockAdapter) {\n mock\n .onPost(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/services\\/SocialIdentityProviders\\?_action=nextdescendents/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getSocialProviders();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutSocialProviderByTypeAndId(\n mock: MockAdapter,\n callback: (\n mockSocialProviderId: string,\n mockSocialProviderType: string,\n mockSocialProviderObj\n ) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/services\\/SocialIdentityProviders\\/.+?\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const mockSocialProviderType = elements[elements?.length - 2];\n const mockSocialProviderId = elements[elements?.length - 1];\n const mockSocialProviderObj = JSON.parse(config.data);\n const mockStatus = 200;\n callback(\n mockSocialProviderId,\n mockSocialProviderType,\n mockSocialProviderObj\n );\n return [mockStatus, mockSocialProviderObj];\n });\n}\n\n/**\n * IDM Mocks and Utils\n */\n\nexport function mockGetConfigEntity(mock: MockAdapter) {\n mock.onGet(/.*?\\/openidm\\/config\\/.+/).reply(function (config) {\n const entityId = config.url\n ? config.url.substring(config.url.indexOf('/config/') + 8)\n : '';\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./IdmConfigApi/getConfigEntity/${entityId}.json`\n ),\n 'utf8'\n )\n );\n expect(mockResponse._id).toBe(entityId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutConfigEntity(\n mock: MockAdapter,\n callback: (mockEntityId: string, mockEntityObj) => void\n) {\n mock.onPut(/.*?\\/openidm\\/config\\/.+/).reply(function (config) {\n const entityId = config.url\n ? config.url.substring(config.url.indexOf('/config/') + 8)\n : '';\n const mockStatus = 200;\n const mockResponse = JSON.parse(config.data);\n callback(entityId, mockResponse);\n return [mockStatus, mockResponse];\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ForgeRockApiMockEngine.js","names":["__dirname","path","dirname","fileURLToPath","readJsonFile","file","json","JSON","parse","fs","readFileSync","resolve","getTrees","treeObjects","mockGetTrees","mock","onGet","reply","mockStatus","mockResponse","expect","toBeTruthy","getTree","treeId","treeObject","mockGetTree","config","elements","url","split","length","_id","toBe","mockPutTree","callback","onPut","mockTreeObj","data","mockGetNode","nodeType","nodeId","mockPutNode","mockNodeObj","getScript","scriptId","mockGetScript","mockPutScript","mockScriptObj","getScriptByName","scriptName","getSaml2Providers","mockGetSaml2Providers","mockFindSaml2Providers","result","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults","getCirclesOfTrust","mockGetCirclesOfTrust","mockCreateCircleOfTrust","onPost","mockCotObj","cotId","mockUpdateCircleOfTrust","mockGetSaml2ProviderByLocationAndId","location","providerId","mockCreateSaml2Provider","parseUrl","pathname","mockSaml2ProviderLocation","mockSaml2ProviderObj","mockSaml2ProviderId64","metaDataXml","decode","standardMetadata","encode","match","mockUpdateSaml2Provider","mockGetSaml2ProviderMetadata","parsed","realm","searchParam","entityId","getSocialProviders","mockGetSocialProviders","mockPutSocialProviderByTypeAndId","mockSocialProviderType","mockSocialProviderId","mockSocialProviderObj","mockListAllConfigEntities","mockGetConfigEntity","substring","indexOf","mockPutConfigEntity"],"sources":["test/mocks/ForgeRockApiMockEngine.ts"],"sourcesContent":["import MockAdapter from 'axios-mock-adapter';\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { encode, decode } from '../../api/utils/Base64';\nimport { parseUrl } from '../../api/utils/ApiUtils';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport function readJsonFile(file: string) {\n const json = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, `${file}`), 'utf8')\n );\n return json;\n}\n\n/**\n * AM Mocks and Utils\n */\n\nexport function getTrees() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, './TreeApi/getTrees/trees.json'),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetTrees(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/trees\\?_queryFilter=true/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getTrees();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function getTree(treeId: string) {\n const treeObject = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, `./TreeApi/getTree/${treeId}.json`),\n 'utf8'\n )\n );\n return treeObject;\n}\n\nexport function mockGetTree(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/trees\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const treeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = getTree(treeId);\n expect(mockResponse._id).toBe(treeId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutTree(\n mock: MockAdapter,\n callback: (mockTreeId: string, mockTreeObj) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/trees\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const treeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockTreeObj = JSON.parse(config.data);\n callback(treeId, mockTreeObj);\n return [mockStatus, mockTreeObj];\n });\n}\n\nexport function mockGetNode(mock: MockAdapter) {\n mock\n .onGet(\n /\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/nodes\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const nodeType = elements[elements?.length - 2];\n const nodeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./NodeApi/getNode/${nodeType}/${nodeId}.json`\n ),\n 'utf8'\n )\n );\n expect(mockResponse._id).toBe(nodeId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutNode(\n mock: MockAdapter,\n callback: (mockNodeId: string, mockNodeObj) => void\n) {\n mock\n .onPut(\n /\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/authentication\\/authenticationtrees\\/nodes\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const nodeId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockNodeObj = JSON.parse(config.data);\n callback(nodeId, mockNodeObj);\n return [mockStatus, mockNodeObj];\n });\n}\n\nexport function getScript(scriptId: string) {\n const treeObject = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, `./ScriptApi/getScript/${scriptId}.json`),\n 'utf8'\n )\n );\n return treeObject;\n}\n\nexport function mockGetScript(mock: MockAdapter) {\n mock\n .onGet(/.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/scripts\\/.+/)\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const scriptId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = getScript(scriptId);\n expect(mockResponse._id).toBe(scriptId);\n return [mockStatus, mockResponse];\n });\n}\n\n// mockPutScript(mock);\nexport function mockPutScript(\n mock: MockAdapter,\n callback: (mockScriptId: string, mockScriptObj) => void\n) {\n mock\n .onPut(/.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/scripts\\/.+/)\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const scriptId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockScriptObj = JSON.parse(config.data);\n callback(scriptId, mockScriptObj);\n return [mockStatus, mockScriptObj];\n });\n}\n\nexport function getScriptByName(scriptName: string) {\n const treeObject = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, `./ScriptApi/getScriptByName/${scriptName}.json`),\n 'utf8'\n )\n );\n return treeObject;\n}\n\n// export function mockGetScriptByName(mock: MockAdapter) {\n// mock\n// .onGet(\n// /\\/json\\/realms\\/root\\/realms\\/alpha\\/scripts\\?_queryFilter=name\\+eq\\+'.+'/\n// )\n// .reply(function (config) {\n// const elements = config.url ? config.url.split('/') : [];\n// const scriptId = elements[elements?.length - 1];\n// const mockStatus = 200;\n// const mockResponse = getScript(scriptId);\n// expect(mockResponse._id).toBe(scriptId);\n// return [mockStatus, mockResponse];\n// });\n// }\n\nexport function getSaml2Providers() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(__dirname, './Saml2Api/getProviders/providers.json'),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetSaml2Providers(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\?_queryFilter=true/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getSaml2Providers();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockFindSaml2Providers(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\?_queryFilter=.+?&_fields=.+/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'EXACT',\n totalPagedResults: 1,\n remainingPagedResults: -1,\n };\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function getCirclesOfTrust() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n './CirclesOfTrustApi/getCirclesOfTrust/cots.json'\n ),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetCirclesOfTrust(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/federation\\/circlesoftrust\\?_queryFilter=true/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getCirclesOfTrust();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockCreateCircleOfTrust(\n mock: MockAdapter,\n callback: (mockCotId: string, mockCotObj) => void\n) {\n mock\n .onPost(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/federation\\/circlesoftrust\\/\\?_action=create/\n )\n .reply(function (config) {\n const mockCotObj = JSON.parse(config.data);\n const cotId = mockCotObj._id;\n const mockStatus = 200;\n callback(cotId, mockCotObj);\n return [mockStatus, mockCotObj];\n });\n}\n\nexport function mockUpdateCircleOfTrust(\n mock: MockAdapter,\n callback: (mockCotId: string, mockCotObj) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/federation\\/circlesoftrust\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const cotId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockCotObj = JSON.parse(config.data);\n callback(cotId, mockCotObj);\n return [mockStatus, mockCotObj];\n });\n}\n\nexport function mockGetSaml2ProviderByLocationAndId(mock: MockAdapter) {\n mock\n .onGet(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\/.+?\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const location = elements[elements?.length - 2];\n const providerId = elements[elements?.length - 1];\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./Saml2Api/getProviderByLocationAndId/${location}/${providerId}.json`\n ),\n 'utf8'\n )\n );\n expect(mockResponse._id).toBe(providerId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockCreateSaml2Provider(\n mock: MockAdapter,\n callback: (\n mockSaml2ProviderId64: string,\n mockSaml2ProviderLocation: string,\n mockSaml2ProviderObj\n ) => void\n) {\n mock\n .onPost(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\/(hosted|remote)\\/\\?_action=(create|importEntity)/\n )\n .reply(function (config) {\n const elements = config.url\n ? parseUrl(config.url).pathname.split('/')\n : [];\n const mockSaml2ProviderLocation = elements[elements?.length - 1];\n const mockSaml2ProviderObj = JSON.parse(config.data);\n let mockSaml2ProviderId64 = '';\n if (mockSaml2ProviderObj._id) {\n mockSaml2ProviderId64 = mockSaml2ProviderObj._id;\n } else {\n const metaDataXml = decode(mockSaml2ProviderObj.standardMetadata);\n mockSaml2ProviderId64 = encode(\n metaDataXml.match(/entityID=\"(.+?)\"/)[1],\n false\n );\n }\n const mockStatus = 200;\n callback(\n mockSaml2ProviderId64,\n mockSaml2ProviderLocation,\n mockSaml2ProviderObj\n );\n return [mockStatus, mockSaml2ProviderObj];\n });\n}\n\nexport function mockUpdateSaml2Provider(\n mock: MockAdapter,\n callback: (\n mockSaml2ProviderId64: string,\n mockSaml2ProviderLocation: string,\n mockSaml2ProviderObj\n ) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/saml2\\/(hosted|remote)\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const mockSaml2ProviderLocation = elements[elements?.length - 2];\n const mockSaml2ProviderId64 = elements[elements?.length - 1];\n const mockSaml2ProviderObj = JSON.parse(config.data);\n const mockStatus = 200;\n callback(\n mockSaml2ProviderId64,\n mockSaml2ProviderLocation,\n mockSaml2ProviderObj\n );\n return [mockStatus, mockSaml2ProviderObj];\n });\n}\n\nexport function mockGetSaml2ProviderMetadata(mock: MockAdapter) {\n mock\n .onGet(/.*?\\/saml2\\/jsp\\/exportmetadata.jsp\\?entityid=.+?&realm=.+/)\n .reply(function (config) {\n const parsed = parseUrl(config.url);\n const realm = parsed.searchParam['realm'];\n const entityId = parsed.searchParam['entityid'];\n const mockStatus = 200;\n const mockResponse = fs.readFileSync(\n path.resolve(\n __dirname,\n `./Saml2Api/getProviderMetadata/${realm}/${encode(\n entityId,\n false\n )}.xml`\n ),\n 'utf8'\n );\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function getSocialProviders() {\n const treeObjects = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n './SocialIdentityProvidersApi/getSocialIdentityProviders/socialIdentityProviders.json'\n ),\n 'utf8'\n )\n );\n return treeObjects;\n}\n\nexport function mockGetSocialProviders(mock: MockAdapter) {\n mock\n .onPost(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/services\\/SocialIdentityProviders\\?_action=nextdescendents/\n )\n .reply(function () {\n const mockStatus = 200;\n const mockResponse = getSocialProviders();\n expect(mockResponse).toBeTruthy();\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutSocialProviderByTypeAndId(\n mock: MockAdapter,\n callback: (\n mockSocialProviderId: string,\n mockSocialProviderType: string,\n mockSocialProviderObj\n ) => void\n) {\n mock\n .onPut(\n /.*?\\/json\\/realms\\/root\\/realms\\/alpha\\/realm-config\\/services\\/SocialIdentityProviders\\/.+?\\/.+/\n )\n .reply(function (config) {\n const elements = config.url ? config.url.split('/') : [];\n const mockSocialProviderType = elements[elements?.length - 2];\n const mockSocialProviderId = elements[elements?.length - 1];\n const mockSocialProviderObj = JSON.parse(config.data);\n const mockStatus = 200;\n callback(\n mockSocialProviderId,\n mockSocialProviderType,\n mockSocialProviderObj\n );\n return [mockStatus, mockSocialProviderObj];\n });\n}\n\n/**\n * IDM Mocks and Utils\n */\n\nexport function mockListAllConfigEntities(mock: MockAdapter) {\n mock.onGet(/.*?\\/openidm\\/config$/).reply(function () {\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./IdmConfigApi/getAllConfigEntities/entities.json`\n ),\n 'utf8'\n )\n );\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockGetConfigEntity(mock: MockAdapter) {\n mock.onGet(/.*?\\/openidm\\/config\\/.+/).reply(function (config) {\n const entityId = config.url\n ? config.url.substring(config.url.indexOf('/config/') + 8)\n : '';\n const mockStatus = 200;\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./IdmConfigApi/getConfigEntity/${entityId}.json`\n ),\n 'utf8'\n )\n );\n expect(mockResponse._id).toBe(entityId);\n return [mockStatus, mockResponse];\n });\n}\n\nexport function mockPutConfigEntity(\n mock: MockAdapter,\n callback: (mockEntityId: string, mockEntityObj) => void\n) {\n mock.onPut(/.*?\\/openidm\\/config\\/.+/).reply(function (config) {\n const entityId = config.url\n ? config.url.substring(config.url.indexOf('/config/') + 8)\n : '';\n const mockStatus = 200;\n const mockResponse = JSON.parse(config.data);\n callback(entityId, mockResponse);\n return [mockStatus, mockResponse];\n });\n}\n"],"mappings":"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"}