@rockcarver/frodo-lib 0.13.2-0 → 0.14.1

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 (47) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/cjs/api/ApiTypes.js.map +1 -1
  3. package/cjs/api/ThemeApi.js +132 -40
  4. package/cjs/api/ThemeApi.js.map +1 -1
  5. package/cjs/api/ThemeApi.test.js.map +1 -0
  6. package/cjs/index.js +5 -1
  7. package/cjs/index.js.map +1 -1
  8. package/cjs/ops/JourneyOps.js +260 -237
  9. package/cjs/ops/JourneyOps.js.map +1 -1
  10. package/cjs/ops/ThemeOps.js +103 -84
  11. package/cjs/ops/ThemeOps.js.map +1 -1
  12. package/cjs/ops/utils/Console.js +21 -5
  13. package/cjs/ops/utils/Console.js.map +1 -1
  14. package/cjs/storage/SessionStorage.js +6 -0
  15. package/cjs/storage/SessionStorage.js.map +1 -1
  16. package/cjs/test/mocks/ForgeRockApiMockEngine.js +2 -1
  17. package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
  18. package/cjs/test/mocks/IdmConfigApi/getConfigEntity/ui/themerealm-encore.json +77 -0
  19. package/cjs/test/mocks/IdmConfigApi/getConfigEntity/ui/themerealm-putThemes.json +665 -0
  20. package/cjs/test/mocks/IdmConfigApi/getConfigEntity/ui/themerealm.json +1 -1
  21. package/esm/api/ThemeApi.mjs +129 -41
  22. package/esm/api/ThemeApi.test.mjs +903 -0
  23. package/esm/index.mjs +2 -1
  24. package/esm/ops/JourneyOps.mjs +259 -236
  25. package/esm/ops/ThemeOps.mjs +44 -34
  26. package/esm/ops/utils/Console.mjs +18 -4
  27. package/esm/storage/SessionStorage.mjs +6 -0
  28. package/esm/test/mocks/ForgeRockApiMockEngine.mjs +2 -2
  29. package/esm/test/mocks/IdmConfigApi/getConfigEntity/ui/themerealm-encore.json +77 -0
  30. package/esm/test/mocks/IdmConfigApi/getConfigEntity/ui/themerealm-putThemes.json +665 -0
  31. package/esm/test/mocks/IdmConfigApi/getConfigEntity/ui/themerealm.json +1 -1
  32. package/package.json +1 -1
  33. package/types/api/ApiTypes.d.ts +5 -1
  34. package/types/api/ApiTypes.d.ts.map +1 -1
  35. package/types/api/ThemeApi.d.ts +28 -26
  36. package/types/api/ThemeApi.d.ts.map +1 -1
  37. package/types/index.d.ts +1 -0
  38. package/types/index.d.ts.map +1 -1
  39. package/types/ops/JourneyOps.d.ts.map +1 -1
  40. package/types/ops/ThemeOps.d.ts +5 -0
  41. package/types/ops/ThemeOps.d.ts.map +1 -1
  42. package/types/ops/utils/Console.d.ts +11 -4
  43. package/types/ops/utils/Console.d.ts.map +1 -1
  44. package/types/storage/SessionStorage.d.ts +6 -0
  45. package/types/storage/SessionStorage.d.ts.map +1 -1
  46. package/types/test/mocks/ForgeRockApiMockEngine.d.ts +1 -1
  47. package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
@@ -32,6 +32,6 @@ export declare function mockPutSocialProviderByTypeAndId(mock: MockAdapter, call
32
32
  * IDM Mocks and Utils
33
33
  */
34
34
  export declare function mockListAllConfigEntities(mock: MockAdapter): void;
35
- export declare function mockGetConfigEntity(mock: MockAdapter): void;
35
+ export declare function mockGetConfigEntity(mock: MockAdapter, variation?: string): void;
36
36
  export declare function mockPutConfigEntity(mock: MockAdapter, callback: (mockEntityId: string, mockEntityObj: any) => void): void;
37
37
  export declare function mockGetConfigEntitiesByType(mock: MockAdapter): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/test/mocks/ForgeRockApiMockEngine.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAS7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,OAKxC;AAED;;GAEG;AAEH,wBAAgB,QAAQ,QAQvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,QAW7C;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,OAQrC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,QAa5C;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,KAAA,KAAK,IAAI,QAcpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,QAsB5C;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,KAAA,KAAK,IAAI,QAcpD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,OAQzC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,QAW9C;AAGD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,KAAA,KAAK,IAAI,QAYxD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,OAQjD;AAiBD,wBAAgB,iBAAiB,QAQhC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,QAWtD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,QAkBvD;AAED,wBAAgB,iBAAiB,QAWhC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,QAWtD;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,KAAA,KAAK,IAAI,QAalD;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,KAAA,KAAK,IAAI,QAclD;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,WAAW,QAsBpE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CACR,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,EACjC,oBAAoB,KAAA,KACjB,IAAI,QA8BV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CACR,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,EACjC,oBAAoB,KAAA,KACjB,IAAI,QAmBV;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,WAAW,QAqB7D;AAED,wBAAgB,kBAAkB,QAWjC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,QAWvD;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CACR,oBAAoB,EAAE,MAAM,EAC5B,sBAAsB,EAAE,MAAM,EAC9B,qBAAqB,KAAA,KAClB,IAAI,QAmBV;AAED;;GAEG;AAEH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,QAc1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,QAkBpD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,KAAA,KAAK,IAAI,QAWxD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,QAuB5D","file":"ForgeRockApiMockEngine.d.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\nexport function mockGetConfigEntitiesByType(mock: MockAdapter) {\n mock\n .onGet(/.*?\\/openidm\\/config\\?_queryFilter=_id%20sw%20'.+?'/)\n .reply(function (config) {\n console.log('config.url=' + config.url);\n const entityType = config.url\n ? config.url.match(\n /.*?\\/openidm\\/config\\?_queryFilter=_id%20sw%20'(.+?)'/\n )[1]\n : '';\n const mockStatus = 200;\n console.log('entityType=' + entityType);\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./IdmConfigApi/getConfigEntitiesByType/${entityType}.json`\n ),\n 'utf8'\n )\n );\n return [mockStatus, mockResponse];\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/test/mocks/ForgeRockApiMockEngine.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAS7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,OAKxC;AAED;;GAEG;AAEH,wBAAgB,QAAQ,QAQvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,QAW7C;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,OAQrC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,QAa5C;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,KAAA,KAAK,IAAI,QAcpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,QAsB5C;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,KAAA,KAAK,IAAI,QAcpD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,OAQzC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,QAW9C;AAGD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,KAAA,KAAK,IAAI,QAYxD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,OAQjD;AAiBD,wBAAgB,iBAAiB,QAQhC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,QAWtD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,QAkBvD;AAED,wBAAgB,iBAAiB,QAWhC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,QAWtD;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,KAAA,KAAK,IAAI,QAalD;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,KAAA,KAAK,IAAI,QAclD;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,WAAW,QAsBpE;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CACR,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,EACjC,oBAAoB,KAAA,KACjB,IAAI,QA8BV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CACR,qBAAqB,EAAE,MAAM,EAC7B,yBAAyB,EAAE,MAAM,EACjC,oBAAoB,KAAA,KACjB,IAAI,QAmBV;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,WAAW,QAqB7D;AAED,wBAAgB,kBAAkB,QAWjC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,QAWvD;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CACR,oBAAoB,EAAE,MAAM,EAC5B,sBAAsB,EAAE,MAAM,EAC9B,qBAAqB,KAAA,KAClB,IAAI,QAmBV;AAED;;GAEG;AAEH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,QAc1D;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,SAAS,GAAE,MAAa,QAqBzB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,KAAA,KAAK,IAAI,QAWxD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,QAuB5D","file":"ForgeRockApiMockEngine.d.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(\n mock: MockAdapter,\n variation: string = null\n) {\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/${\n variation ? entityId + '-' + variation : entityId\n }.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\nexport function mockGetConfigEntitiesByType(mock: MockAdapter) {\n mock\n .onGet(/.*?\\/openidm\\/config\\?_queryFilter=_id%20sw%20'.+?'/)\n .reply(function (config) {\n console.log('config.url=' + config.url);\n const entityType = config.url\n ? config.url.match(\n /.*?\\/openidm\\/config\\?_queryFilter=_id%20sw%20'(.+?)'/\n )[1]\n : '';\n const mockStatus = 200;\n console.log('entityType=' + entityType);\n const mockResponse = JSON.parse(\n fs.readFileSync(\n path.resolve(\n __dirname,\n `./IdmConfigApi/getConfigEntitiesByType/${entityType}.json`\n ),\n 'utf8'\n )\n );\n return [mockStatus, mockResponse];\n });\n}\n"]}