@rockcarver/frodo-lib 0.17.5 → 0.17.7

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 (161) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/cjs/api/AgentApi.test.js.map +1 -1
  3. package/cjs/api/AuthenticateApi.js +11 -1
  4. package/cjs/api/AuthenticateApi.js.map +1 -1
  5. package/cjs/api/BaseApi.js +7 -10
  6. package/cjs/api/BaseApi.js.map +1 -1
  7. package/cjs/api/IdmConfigApi.js +4 -2
  8. package/cjs/api/IdmConfigApi.js.map +1 -1
  9. package/cjs/api/NodeApi.test.js.map +1 -1
  10. package/cjs/api/ServerInfoApi.js +8 -2
  11. package/cjs/api/ServerInfoApi.js.map +1 -1
  12. package/cjs/api/cloud/EnvInfoApi.js +41 -0
  13. package/cjs/api/cloud/EnvInfoApi.js.map +1 -0
  14. package/cjs/api/cloud/FeatureApi.js +39 -0
  15. package/cjs/api/cloud/FeatureApi.js.map +1 -0
  16. package/cjs/api/{LogApi.js → cloud/LogApi.js} +3 -3
  17. package/cjs/api/cloud/LogApi.js.map +1 -0
  18. package/cjs/api/{SecretsApi.js → cloud/SecretsApi.js} +14 -14
  19. package/cjs/api/cloud/SecretsApi.js.map +1 -0
  20. package/cjs/api/cloud/SecretsApi.test.js.map +1 -0
  21. package/cjs/api/{StartupApi.js → cloud/StartupApi.js} +5 -5
  22. package/cjs/api/cloud/StartupApi.js.map +1 -0
  23. package/cjs/api/cloud/StartupApi.test.js.map +1 -0
  24. package/cjs/api/{VariablesApi.js → cloud/VariablesApi.js} +9 -9
  25. package/cjs/api/cloud/VariablesApi.js.map +1 -0
  26. package/cjs/api/cloud/VariablesApi.test.js.map +1 -0
  27. package/cjs/index.js +11 -19
  28. package/cjs/index.js.map +1 -1
  29. package/cjs/ops/AdminOps.js +1 -1
  30. package/cjs/ops/AdminOps.js.map +1 -1
  31. package/cjs/ops/AgentOps.test.js.map +1 -1
  32. package/cjs/ops/AuthenticateOps.js +3 -5
  33. package/cjs/ops/AuthenticateOps.js.map +1 -1
  34. package/cjs/ops/AuthenticateOps.test.js.map +1 -1
  35. package/cjs/ops/ConnectionProfileOps.js +1 -1
  36. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  37. package/cjs/ops/IdmOps.js +7 -5
  38. package/cjs/ops/IdmOps.js.map +1 -1
  39. package/cjs/ops/InfoOps.js +90 -0
  40. package/cjs/ops/InfoOps.js.map +1 -0
  41. package/cjs/ops/JoseOps.test.js.map +1 -1
  42. package/cjs/ops/JourneyOps.test.js.map +1 -1
  43. package/cjs/ops/Saml2Ops.test.js.map +1 -1
  44. package/cjs/ops/ScriptOps.test.js.map +1 -1
  45. package/cjs/ops/cloud/FeatureOps.js +54 -0
  46. package/cjs/ops/cloud/FeatureOps.js.map +1 -0
  47. package/cjs/ops/{LogOps.js → cloud/LogOps.js} +4 -4
  48. package/cjs/ops/cloud/LogOps.js.map +1 -0
  49. package/cjs/ops/{SecretsOps.js → cloud/SecretsOps.js} +4 -4
  50. package/cjs/ops/cloud/SecretsOps.js.map +1 -0
  51. package/cjs/ops/{ServiceAccountOps.js → cloud/ServiceAccountOps.js} +20 -14
  52. package/cjs/ops/cloud/ServiceAccountOps.js.map +1 -0
  53. package/cjs/ops/cloud/ServiceAccountOps.test.js.map +1 -0
  54. package/cjs/ops/{StartupOps.js → cloud/StartupOps.js} +4 -4
  55. package/cjs/ops/cloud/StartupOps.js.map +1 -0
  56. package/cjs/ops/{VariablesOps.js → cloud/VariablesOps.js} +5 -5
  57. package/cjs/ops/cloud/VariablesOps.js.map +1 -0
  58. package/cjs/utils/SetupPollyForFrodoLib.js +137 -0
  59. package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -0
  60. package/esm/api/AgentApi.test.mjs +0 -5
  61. package/esm/api/AuthenticateApi.mjs +11 -2
  62. package/esm/api/BaseApi.mjs +6 -8
  63. package/esm/api/IdmConfigApi.mjs +1 -1
  64. package/esm/api/NodeApi.test.mjs +0 -5
  65. package/esm/api/ServerInfoApi.mjs +8 -2
  66. package/esm/api/cloud/EnvInfoApi.mjs +24 -0
  67. package/esm/api/cloud/FeatureApi.mjs +22 -0
  68. package/esm/api/{LogApi.mjs → cloud/LogApi.mjs} +3 -3
  69. package/esm/api/{SecretsApi.mjs → cloud/SecretsApi.mjs} +14 -14
  70. package/esm/api/{SecretsApi.test.mjs → cloud/SecretsApi.test.mjs} +2 -7
  71. package/esm/api/{StartupApi.mjs → cloud/StartupApi.mjs} +5 -5
  72. package/esm/api/{StartupApi.test.mjs → cloud/StartupApi.test.mjs} +7 -7
  73. package/esm/api/{VariablesApi.mjs → cloud/VariablesApi.mjs} +9 -9
  74. package/esm/api/{VariablesApi.test.mjs → cloud/VariablesApi.test.mjs} +2 -7
  75. package/esm/index.mjs +9 -12
  76. package/esm/ops/AdminOps.mjs +1 -1
  77. package/esm/ops/AgentOps.test.mjs +0 -5
  78. package/esm/ops/AuthenticateOps.mjs +3 -5
  79. package/esm/ops/AuthenticateOps.test.mjs +0 -5
  80. package/esm/ops/ConnectionProfileOps.mjs +1 -1
  81. package/esm/ops/IdmOps.mjs +4 -4
  82. package/esm/ops/InfoOps.mjs +58 -0
  83. package/esm/ops/JoseOps.test.mjs +0 -5
  84. package/esm/ops/JourneyOps.test.mjs +0 -5
  85. package/esm/ops/Saml2Ops.test.mjs +0 -5
  86. package/esm/ops/ScriptOps.test.mjs +0 -4
  87. package/esm/ops/cloud/FeatureOps.mjs +34 -0
  88. package/esm/ops/{LogOps.mjs → cloud/LogOps.mjs} +5 -5
  89. package/esm/ops/{SecretsOps.mjs → cloud/SecretsOps.mjs} +4 -4
  90. package/esm/ops/{ServiceAccountOps.mjs → cloud/ServiceAccountOps.mjs} +20 -14
  91. package/esm/ops/cloud/ServiceAccountOps.test.mjs +83 -0
  92. package/esm/ops/{StartupOps.mjs → cloud/StartupOps.mjs} +4 -4
  93. package/esm/ops/{VariablesOps.mjs → cloud/VariablesOps.mjs} +5 -5
  94. package/esm/utils/SetupPollyForFrodoLib.mjs +108 -0
  95. package/package.json +2 -1
  96. package/types/api/AuthenticateApi.d.ts +9 -1
  97. package/types/api/AuthenticateApi.d.ts.map +1 -1
  98. package/types/api/BaseApi.d.ts +2 -4
  99. package/types/api/BaseApi.d.ts.map +1 -1
  100. package/types/api/IdmConfigApi.d.ts +1 -1
  101. package/types/api/IdmConfigApi.d.ts.map +1 -1
  102. package/types/api/ServerInfoApi.d.ts +2 -2
  103. package/types/api/ServerInfoApi.d.ts.map +1 -1
  104. package/types/api/cloud/EnvInfoApi.d.ts +18 -0
  105. package/types/api/cloud/EnvInfoApi.d.ts.map +1 -0
  106. package/types/api/cloud/FeatureApi.d.ts +12 -0
  107. package/types/api/cloud/FeatureApi.d.ts.map +1 -0
  108. package/types/api/{LogApi.d.ts → cloud/LogApi.d.ts} +0 -0
  109. package/types/api/cloud/LogApi.d.ts.map +1 -0
  110. package/types/api/{SecretsApi.d.ts → cloud/SecretsApi.d.ts} +0 -0
  111. package/types/api/cloud/SecretsApi.d.ts.map +1 -0
  112. package/types/api/{StartupApi.d.ts → cloud/StartupApi.d.ts} +0 -0
  113. package/types/api/cloud/StartupApi.d.ts.map +1 -0
  114. package/types/api/{VariablesApi.d.ts → cloud/VariablesApi.d.ts} +0 -0
  115. package/types/api/cloud/VariablesApi.d.ts.map +1 -0
  116. package/types/index.d.ts +9 -10
  117. package/types/index.d.ts.map +1 -1
  118. package/types/ops/AdminOps.d.ts.map +1 -1
  119. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  120. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  121. package/types/ops/IdmOps.d.ts +4 -4
  122. package/types/ops/IdmOps.d.ts.map +1 -1
  123. package/types/ops/InfoOps.d.ts +16 -0
  124. package/types/ops/InfoOps.d.ts.map +1 -0
  125. package/types/ops/cloud/FeatureOps.d.ts +12 -0
  126. package/types/ops/cloud/FeatureOps.d.ts.map +1 -0
  127. package/types/ops/{LogOps.d.ts → cloud/LogOps.d.ts} +0 -0
  128. package/types/ops/cloud/LogOps.d.ts.map +1 -0
  129. package/types/ops/{SecretsOps.d.ts → cloud/SecretsOps.d.ts} +0 -0
  130. package/types/ops/cloud/SecretsOps.d.ts.map +1 -0
  131. package/types/ops/{ServiceAccountOps.d.ts → cloud/ServiceAccountOps.d.ts} +7 -3
  132. package/types/ops/cloud/ServiceAccountOps.d.ts.map +1 -0
  133. package/types/ops/{StartupOps.d.ts → cloud/StartupOps.d.ts} +0 -0
  134. package/types/ops/cloud/StartupOps.d.ts.map +1 -0
  135. package/types/ops/{VariablesOps.d.ts → cloud/VariablesOps.d.ts} +0 -0
  136. package/types/ops/cloud/VariablesOps.d.ts.map +1 -0
  137. package/types/utils/SetupPollyForFrodoLib.d.ts +2 -0
  138. package/types/utils/SetupPollyForFrodoLib.d.ts.map +1 -0
  139. package/cjs/api/LogApi.js.map +0 -1
  140. package/cjs/api/SecretsApi.js.map +0 -1
  141. package/cjs/api/SecretsApi.test.js.map +0 -1
  142. package/cjs/api/StartupApi.js.map +0 -1
  143. package/cjs/api/StartupApi.test.js.map +0 -1
  144. package/cjs/api/VariablesApi.js.map +0 -1
  145. package/cjs/api/VariablesApi.test.js.map +0 -1
  146. package/cjs/ops/LogOps.js.map +0 -1
  147. package/cjs/ops/SecretsOps.js.map +0 -1
  148. package/cjs/ops/ServiceAccountOps.js.map +0 -1
  149. package/cjs/ops/ServiceAccountOps.test.js.map +0 -1
  150. package/cjs/ops/StartupOps.js.map +0 -1
  151. package/cjs/ops/VariablesOps.js.map +0 -1
  152. package/esm/ops/ServiceAccountOps.test.mjs +0 -56
  153. package/types/api/LogApi.d.ts.map +0 -1
  154. package/types/api/SecretsApi.d.ts.map +0 -1
  155. package/types/api/StartupApi.d.ts.map +0 -1
  156. package/types/api/VariablesApi.d.ts.map +0 -1
  157. package/types/ops/LogOps.d.ts.map +0 -1
  158. package/types/ops/SecretsOps.d.ts.map +0 -1
  159. package/types/ops/ServiceAccountOps.d.ts.map +0 -1
  160. package/types/ops/StartupOps.d.ts.map +0 -1
  161. package/types/ops/VariablesOps.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"JourneyOps.test.js","names":["jest","setTimeout","autoSetupPolly","state","setDeploymentType","globalConfig","CLOUD_DEPLOYMENT_TYPE_KEY","stageJourney","journey","create","Journey","getJourney","id","deleteJourney","deep","verbose","progress","error","importJourney","reUuid","deps","describe","journey1","journey2","journey3","journey4","journey5","journey6","journey7","journey8","journey9","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","FRODO_RECORD_PHASE","test","expect","getJourneys","toBeDefined","journeys","toMatchSnapshot","exportJourney","response","useStringArrays","meta","any","Object","journeyExport","assertions","toBeTruthy","enableJourney","result","disableJourney"],"sources":["ops/JourneyOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * This step breaks down into 4 phases:\n *\n * Phase 1: Record Non-destructive tests\n * Phase 2: Record Group 1 of DESTRUCTIVE tests - Deletes by ID\n * Phase 3: Record Group 2 of DESTRUCTIVE tests - Deletes by tag\n * Phase 4: Record Group 3 of DESTRUCTIVE tests - Delete all\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE AGENTS!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update JourneyOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only JourneyOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { jest } from '@jest/globals';\nimport { Journey, state } from '../index';\nimport { getJourney } from '../test/mocks/ForgeRockApiMockEngine';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport * as globalConfig from '../storage/StaticStorage';\n\n// Increase timeout for this test as pipeline keeps failing with error:\n// Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.\njest.setTimeout(30000);\n\nautoSetupPolly();\n\nstate.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);\n\nasync function stageJourney(journey: { id: string }, create = true) {\n // delete if exists, then create\n try {\n await Journey.getJourney(journey.id);\n await Journey.deleteJourney(journey.id, {\n deep: true,\n verbose: false,\n progress: false,\n });\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await Journey.importJourney(getJourney(journey.id), {\n reUuid: false,\n deps: true,\n });\n }\n }\n}\n\ndescribe('JourneyOps', () => {\n const journey1 = {\n id: 'FrodoTestJourney1',\n };\n const journey2 = {\n id: 'FrodoTestJourney2',\n };\n const journey3 = {\n id: 'FrodoTestJourney3',\n };\n const journey4 = {\n id: 'FrodoTestJourney4',\n };\n const journey5 = {\n id: 'FrodoTestJourney5',\n };\n const journey6 = {\n id: 'FrodoTestJourney6',\n };\n const journey7 = {\n id: 'FrodoTestJourney7',\n };\n const journey8 = {\n id: 'FrodoTestJourney8',\n };\n const journey9 = {\n id: 'FrodoTestJourney9',\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageJourney(journey1);\n await stageJourney(journey2);\n await stageJourney(journey3);\n await stageJourney(journey4, false);\n await stageJourney(journey5, false);\n await stageJourney(journey6);\n await stageJourney(journey7);\n await stageJourney(journey8);\n await stageJourney(journey9);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageJourney(journey1, false);\n await stageJourney(journey2, false);\n await stageJourney(journey3, false);\n await stageJourney(journey4, false);\n await stageJourney(journey5, false);\n await stageJourney(journey6, false);\n await stageJourney(journey7, false);\n await stageJourney(journey8, false);\n await stageJourney(journey9, false);\n }\n });\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('getJourneys()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.getJourneys).toBeDefined();\n });\n\n test('1: Get all journeys', async () => {\n const journeys = await Journey.getJourneys();\n expect(journeys).toMatchSnapshot();\n });\n });\n\n describe('exportJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.exportJourney).toBeDefined();\n });\n\n test(`1: Export journey '${journey3.id}' w/o dependencies`, async () => {\n const response = await Journey.exportJourney(journey3.id, {\n useStringArrays: false,\n deps: false,\n });\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n\n test(`2: Export journey '${journey3.id}' w/ dependencies`, async () => {\n const response = await Journey.exportJourney(journey3.id, {\n useStringArrays: false,\n deps: true,\n });\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.importJourney).toBeDefined();\n });\n\n test(`1: Import journey '${journey4.id}' w/o dependencies`, async () => {\n const journeyExport = getJourney(journey4.id);\n expect.assertions(1);\n const response = await Journey.importJourney(journeyExport, {\n reUuid: false,\n deps: false,\n });\n expect(response).toBeTruthy();\n });\n\n test(`2: Import journey '${journey5.id}' w/ dependencies`, async () => {\n const journeyExport = getJourney(journey5.id);\n expect.assertions(1);\n const response = await Journey.importJourney(journeyExport, {\n reUuid: false,\n deps: true,\n });\n expect(response).toBeTruthy();\n });\n });\n\n describe('enableJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.enableJourney).toBeDefined();\n });\n\n test(`1: Enable disabled journey '${journey6.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.enableJourney(journey6.id);\n expect(result).toBeTruthy();\n });\n\n test(`2: Enable already enabled journey '${journey7.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.enableJourney(journey7.id);\n expect(result).toBeTruthy();\n });\n });\n\n describe('disableJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.disableJourney).toBeDefined();\n });\n\n test(`1: Disable enabled journey '${journey8.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.disableJourney(journey8.id);\n expect(result).toBeTruthy();\n });\n\n test(`2: Disable already disabled journey '${journey9.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.disableJourney(journey9.id);\n expect(result).toBeTruthy();\n });\n });\n }\n});\n"],"mappings":";;AAgDA;AACA;AACA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA;AAEzD;AACA;AACAA,aAAI,CAACC,UAAU,CAAC,KAAK,CAAC;AAEtB,IAAAC,8BAAc,GAAE;AAEhBC,YAAK,CAACC,iBAAiB,CAACC,YAAY,CAACC,yBAAyB,CAAC;AAAC,SAEjDC,YAAY;EAAA;AAAA;AAAA;EAAA,kCAA3B,WAA4BC,OAAuB,EAAiB;IAAA,IAAfC,MAAM,uEAAG,IAAI;IAChE;IACA,IAAI;MACF,MAAMC,cAAO,CAACC,UAAU,CAACH,OAAO,CAACI,EAAE,CAAC;MACpC,MAAMF,cAAO,CAACG,aAAa,CAACL,OAAO,CAACI,EAAE,EAAE;QACtCE,IAAI,EAAE,IAAI;QACVC,OAAO,EAAE,KAAK;QACdC,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd;IAAA,CACD,SAAS;MACR,IAAIR,MAAM,EAAE;QACV,MAAMC,cAAO,CAACQ,aAAa,CAAC,IAAAP,kCAAU,EAACH,OAAO,CAACI,EAAE,CAAC,EAAE;UAClDO,MAAM,EAAE,KAAK;UACbC,IAAI,EAAE;QACR,CAAC,CAAC;MACJ;IACF;EACF,CAAC;EAAA;AAAA;AAEDC,QAAQ,CAAC,YAAY,EAAE,MAAM;EAC3B,IAAMC,QAAQ,GAAG;IACfV,EAAE,EAAE;EACN,CAAC;EACD,IAAMW,QAAQ,GAAG;IACfX,EAAE,EAAE;EACN,CAAC;EACD,IAAMY,QAAQ,GAAG;IACfZ,EAAE,EAAE;EACN,CAAC;EACD,IAAMa,QAAQ,GAAG;IACfb,EAAE,EAAE;EACN,CAAC;EACD,IAAMc,QAAQ,GAAG;IACfd,EAAE,EAAE;EACN,CAAC;EACD,IAAMe,QAAQ,GAAG;IACff,EAAE,EAAE;EACN,CAAC;EACD,IAAMgB,QAAQ,GAAG;IACfhB,EAAE,EAAE;EACN,CAAC;EACD,IAAMiB,QAAQ,GAAG;IACfjB,EAAE,EAAE;EACN,CAAC;EACD,IAAMkB,QAAQ,GAAG;IACflB,EAAE,EAAE;EACN,CAAC;EACD;EACAmB,SAAS,iCAAC,aAAY;IACpB,IAAIC,OAAO,CAACC,GAAG,CAACC,gBAAgB,KAAK,QAAQ,EAAE;MAC7C,MAAM3B,YAAY,CAACe,QAAQ,CAAC;MAC5B,MAAMf,YAAY,CAACgB,QAAQ,CAAC;MAC5B,MAAMhB,YAAY,CAACiB,QAAQ,CAAC;MAC5B,MAAMjB,YAAY,CAACkB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMlB,YAAY,CAACmB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMnB,YAAY,CAACoB,QAAQ,CAAC;MAC5B,MAAMpB,YAAY,CAACqB,QAAQ,CAAC;MAC5B,MAAMrB,YAAY,CAACsB,QAAQ,CAAC;MAC5B,MAAMtB,YAAY,CAACuB,QAAQ,CAAC;IAC9B;EACF,CAAC,EAAC;EACF;EACAK,QAAQ,iCAAC,aAAY;IACnB,IAAIH,OAAO,CAACC,GAAG,CAACC,gBAAgB,KAAK,QAAQ,EAAE;MAC7C,MAAM3B,YAAY,CAACe,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMf,YAAY,CAACgB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMhB,YAAY,CAACiB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMjB,YAAY,CAACkB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMlB,YAAY,CAACmB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMnB,YAAY,CAACoB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMpB,YAAY,CAACqB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMrB,YAAY,CAACsB,QAAQ,EAAE,KAAK,CAAC;MACnC,MAAMtB,YAAY,CAACuB,QAAQ,EAAE,KAAK,CAAC;IACrC;EACF,CAAC,EAAC;EACF;EACA,IACE,CAACE,OAAO,CAACC,GAAG,CAACC,gBAAgB,IAC5BF,OAAO,CAACC,GAAG,CAACC,gBAAgB,KAAK,QAAQ,IACxCF,OAAO,CAACC,GAAG,CAACG,kBAAkB,KAAK,GAAI,EACzC;IACAf,QAAQ,CAAC,eAAe,EAAE,MAAM;MAC9BgB,IAAI,CAAC,0BAA0B,iCAAE,aAAY;QAC3CC,MAAM,CAAC5B,cAAO,CAAC6B,WAAW,CAAC,CAACC,WAAW,EAAE;MAC3C,CAAC,EAAC;MAEFH,IAAI,CAAC,qBAAqB,iCAAE,aAAY;QACtC,IAAMI,QAAQ,SAAS/B,cAAO,CAAC6B,WAAW,EAAE;QAC5CD,MAAM,CAACG,QAAQ,CAAC,CAACC,eAAe,EAAE;MACpC,CAAC,EAAC;IACJ,CAAC,CAAC;IAEFrB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;MAChCgB,IAAI,CAAC,0BAA0B,iCAAE,aAAY;QAC3CC,MAAM,CAAC5B,cAAO,CAACiC,aAAa,CAAC,CAACH,WAAW,EAAE;MAC7C,CAAC,EAAC;MAEFH,IAAI,8BAAuBb,QAAQ,CAACZ,EAAE,wDAAsB,aAAY;QACtE,IAAMgC,QAAQ,SAASlC,cAAO,CAACiC,aAAa,CAACnB,QAAQ,CAACZ,EAAE,EAAE;UACxDiC,eAAe,EAAE,KAAK;UACtBzB,IAAI,EAAE;QACR,CAAC,CAAC;QACFkB,MAAM,CAACM,QAAQ,CAAC,CAACF,eAAe,CAAC;UAC/BI,IAAI,EAAER,MAAM,CAACS,GAAG,CAACC,MAAM;QACzB,CAAC,CAAC;MACJ,CAAC,EAAC;MAEFX,IAAI,8BAAuBb,QAAQ,CAACZ,EAAE,uDAAqB,aAAY;QACrE,IAAMgC,QAAQ,SAASlC,cAAO,CAACiC,aAAa,CAACnB,QAAQ,CAACZ,EAAE,EAAE;UACxDiC,eAAe,EAAE,KAAK;UACtBzB,IAAI,EAAE;QACR,CAAC,CAAC;QACFkB,MAAM,CAACM,QAAQ,CAAC,CAACF,eAAe,CAAC;UAC/BI,IAAI,EAAER,MAAM,CAACS,GAAG,CAACC,MAAM;QACzB,CAAC,CAAC;MACJ,CAAC,EAAC;IACJ,CAAC,CAAC;IAEF3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM;MAChCgB,IAAI,CAAC,0BAA0B,iCAAE,aAAY;QAC3CC,MAAM,CAAC5B,cAAO,CAACQ,aAAa,CAAC,CAACsB,WAAW,EAAE;MAC7C,CAAC,EAAC;MAEFH,IAAI,8BAAuBZ,QAAQ,CAACb,EAAE,wDAAsB,aAAY;QACtE,IAAMqC,aAAa,GAAG,IAAAtC,kCAAU,EAACc,QAAQ,CAACb,EAAE,CAAC;QAC7C0B,MAAM,CAACY,UAAU,CAAC,CAAC,CAAC;QACpB,IAAMN,QAAQ,SAASlC,cAAO,CAACQ,aAAa,CAAC+B,aAAa,EAAE;UAC1D9B,MAAM,EAAE,KAAK;UACbC,IAAI,EAAE;QACR,CAAC,CAAC;QACFkB,MAAM,CAACM,QAAQ,CAAC,CAACO,UAAU,EAAE;MAC/B,CAAC,EAAC;MAEFd,IAAI,8BAAuBX,QAAQ,CAACd,EAAE,uDAAqB,aAAY;QACrE,IAAMqC,aAAa,GAAG,IAAAtC,kCAAU,EAACe,QAAQ,CAACd,EAAE,CAAC;QAC7C0B,MAAM,CAACY,UAAU,CAAC,CAAC,CAAC;QACpB,IAAMN,QAAQ,SAASlC,cAAO,CAACQ,aAAa,CAAC+B,aAAa,EAAE;UAC1D9B,MAAM,EAAE,KAAK;UACbC,IAAI,EAAE;QACR,CAAC,CAAC;QACFkB,MAAM,CAACM,QAAQ,CAAC,CAACO,UAAU,EAAE;MAC/B,CAAC,EAAC;IACJ,CAAC,CAAC;IAEF9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM;MAChCgB,IAAI,CAAC,0BAA0B,iCAAE,aAAY;QAC3CC,MAAM,CAAC5B,cAAO,CAAC0C,aAAa,CAAC,CAACZ,WAAW,EAAE;MAC7C,CAAC,EAAC;MAEFH,IAAI,uCAAgCV,QAAQ,CAACf,EAAE,uCAAK,aAAY;QAC9D0B,MAAM,CAACY,UAAU,CAAC,CAAC,CAAC;QACpB,IAAMG,MAAM,SAAS3C,cAAO,CAAC0C,aAAa,CAACzB,QAAQ,CAACf,EAAE,CAAC;QACvD0B,MAAM,CAACe,MAAM,CAAC,CAACF,UAAU,EAAE;MAC7B,CAAC,EAAC;MAEFd,IAAI,8CAAuCT,QAAQ,CAAChB,EAAE,uCAAK,aAAY;QACrE0B,MAAM,CAACY,UAAU,CAAC,CAAC,CAAC;QACpB,IAAMG,MAAM,SAAS3C,cAAO,CAAC0C,aAAa,CAACxB,QAAQ,CAAChB,EAAE,CAAC;QACvD0B,MAAM,CAACe,MAAM,CAAC,CAACF,UAAU,EAAE;MAC7B,CAAC,EAAC;IACJ,CAAC,CAAC;IAEF9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM;MACjCgB,IAAI,CAAC,0BAA0B,iCAAE,aAAY;QAC3CC,MAAM,CAAC5B,cAAO,CAAC4C,cAAc,CAAC,CAACd,WAAW,EAAE;MAC9C,CAAC,EAAC;MAEFH,IAAI,uCAAgCR,QAAQ,CAACjB,EAAE,uCAAK,aAAY;QAC9D0B,MAAM,CAACY,UAAU,CAAC,CAAC,CAAC;QACpB,IAAMG,MAAM,SAAS3C,cAAO,CAAC4C,cAAc,CAACzB,QAAQ,CAACjB,EAAE,CAAC;QACxD0B,MAAM,CAACe,MAAM,CAAC,CAACF,UAAU,EAAE;MAC7B,CAAC,EAAC;MAEFd,IAAI,gDAAyCP,QAAQ,CAAClB,EAAE,uCAAK,aAAY;QACvE0B,MAAM,CAACY,UAAU,CAAC,CAAC,CAAC;QACpB,IAAMG,MAAM,SAAS3C,cAAO,CAAC4C,cAAc,CAACxB,QAAQ,CAAClB,EAAE,CAAC;QACxD0B,MAAM,CAACe,MAAM,CAAC,CAACF,UAAU,EAAE;MAC7B,CAAC,EAAC;IACJ,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"JourneyOps.test.js","names":["autoSetupPolly","state","setDeploymentType","globalConfig","CLOUD_DEPLOYMENT_TYPE_KEY","stageJourney","journey","create","Journey","getJourney","id","deleteJourney","deep","verbose","progress","error","importJourney","reUuid","deps","describe","journey1","journey2","journey3","journey4","journey5","journey6","journey7","journey8","journey9","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","FRODO_RECORD_PHASE","test","expect","getJourneys","toBeDefined","journeys","toMatchSnapshot","exportJourney","response","useStringArrays","meta","any","Object","journeyExport","assertions","toBeTruthy","enableJourney","result","disableJourney"],"sources":["ops/JourneyOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * This step breaks down into 4 phases:\n *\n * Phase 1: Record Non-destructive tests\n * Phase 2: Record Group 1 of DESTRUCTIVE tests - Deletes by ID\n * Phase 3: Record Group 2 of DESTRUCTIVE tests - Deletes by tag\n * Phase 4: Record Group 3 of DESTRUCTIVE tests - Delete all\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE AGENTS!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record JourneyOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update JourneyOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only JourneyOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Journey, state } from '../index';\nimport { getJourney } from '../test/mocks/ForgeRockApiMockEngine';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport * as globalConfig from '../storage/StaticStorage';\n\nautoSetupPolly();\n\nstate.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);\n\nasync function stageJourney(journey: { id: string }, create = true) {\n // delete if exists, then create\n try {\n await Journey.getJourney(journey.id);\n await Journey.deleteJourney(journey.id, {\n deep: true,\n verbose: false,\n progress: false,\n });\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await Journey.importJourney(getJourney(journey.id), {\n reUuid: false,\n deps: true,\n });\n }\n }\n}\n\ndescribe('JourneyOps', () => {\n const journey1 = {\n id: 'FrodoTestJourney1',\n };\n const journey2 = {\n id: 'FrodoTestJourney2',\n };\n const journey3 = {\n id: 'FrodoTestJourney3',\n };\n const journey4 = {\n id: 'FrodoTestJourney4',\n };\n const journey5 = {\n id: 'FrodoTestJourney5',\n };\n const journey6 = {\n id: 'FrodoTestJourney6',\n };\n const journey7 = {\n id: 'FrodoTestJourney7',\n };\n const journey8 = {\n id: 'FrodoTestJourney8',\n };\n const journey9 = {\n id: 'FrodoTestJourney9',\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageJourney(journey1);\n await stageJourney(journey2);\n await stageJourney(journey3);\n await stageJourney(journey4, false);\n await stageJourney(journey5, false);\n await stageJourney(journey6);\n await stageJourney(journey7);\n await stageJourney(journey8);\n await stageJourney(journey9);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageJourney(journey1, false);\n await stageJourney(journey2, false);\n await stageJourney(journey3, false);\n await stageJourney(journey4, false);\n await stageJourney(journey5, false);\n await stageJourney(journey6, false);\n await stageJourney(journey7, false);\n await stageJourney(journey8, false);\n await stageJourney(journey9, false);\n }\n });\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('getJourneys()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.getJourneys).toBeDefined();\n });\n\n test('1: Get all journeys', async () => {\n const journeys = await Journey.getJourneys();\n expect(journeys).toMatchSnapshot();\n });\n });\n\n describe('exportJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.exportJourney).toBeDefined();\n });\n\n test(`1: Export journey '${journey3.id}' w/o dependencies`, async () => {\n const response = await Journey.exportJourney(journey3.id, {\n useStringArrays: false,\n deps: false,\n });\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n\n test(`2: Export journey '${journey3.id}' w/ dependencies`, async () => {\n const response = await Journey.exportJourney(journey3.id, {\n useStringArrays: false,\n deps: true,\n });\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.importJourney).toBeDefined();\n });\n\n test(`1: Import journey '${journey4.id}' w/o dependencies`, async () => {\n const journeyExport = getJourney(journey4.id);\n expect.assertions(1);\n const response = await Journey.importJourney(journeyExport, {\n reUuid: false,\n deps: false,\n });\n expect(response).toBeTruthy();\n });\n\n test(`2: Import journey '${journey5.id}' w/ dependencies`, async () => {\n const journeyExport = getJourney(journey5.id);\n expect.assertions(1);\n const response = await Journey.importJourney(journeyExport, {\n reUuid: false,\n deps: true,\n });\n expect(response).toBeTruthy();\n });\n });\n\n describe('enableJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.enableJourney).toBeDefined();\n });\n\n test(`1: Enable disabled journey '${journey6.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.enableJourney(journey6.id);\n expect(result).toBeTruthy();\n });\n\n test(`2: Enable already enabled journey '${journey7.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.enableJourney(journey7.id);\n expect(result).toBeTruthy();\n });\n });\n\n describe('disableJourney()', () => {\n test('0: Method is implemented', async () => {\n expect(Journey.disableJourney).toBeDefined();\n });\n\n test(`1: Disable enabled journey '${journey8.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.disableJourney(journey8.id);\n expect(result).toBeTruthy();\n });\n\n test(`2: Disable already disabled journey '${journey9.id}'`, async () => {\n expect.assertions(1);\n const result = await Journey.disableJourney(journey9.id);\n expect(result).toBeTruthy();\n });\n });\n }\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Saml2Ops.test.js","names":["jest","setTimeout","autoSetupPolly","state","setDeploymentType","globalConfig","CLOUD_DEPLOYMENT_TYPE_KEY","stageProvider","provider","create","Saml2","getSaml2Provider","entityId","deleteSaml2Provider","error","isAxiosError","console","log","message","dir","response","data","importSaml2Provider","getSaml2ProviderImportData","describe","provider1","location","Saml2ProiderLocation","HOSTED","entityId64","encodeBase64Url","provider2","REMOTE","provider3","provider4","provider5","provider6","provider7","provider8","provider9","provider10","beforeAll","process","env","FRODO_POLLY_MODE","FRODO_RECORD_PHASE","afterAll","test","expect","createSaml2ExportTemplate","toBeDefined","toMatchSnapshot","meta","any","Object","getSaml2ProviderStubs","getProviderByLocationAndId","getProviderMetadataUrl","getProviderMetadata","getSaml2ProviderStub","exportSaml2Provider","exportSaml2Providers","assertions","toBeTruthy","getRawSaml2Providers","getRawSaml2Provider","putRawSaml2Provider","importSaml2Providers","getSaml2ProvidersImportData","failures","toBe","warnings","deleteRawSaml2Provider","deleteSaml2Providers","deleteRawSaml2Providers"],"sources":["ops/Saml2Ops.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses\n *\n * This step breaks down into 5 phases:\n *\n * Phase 1: Record Group 1 of non-destructive tests\n * Phase 2: Record Group 2 of non-destructive tests - Import all\n * Phase 3: Record Group 1 of DESTRUCTIVE tests - Deletes by entity id\n * Phase 4: Record Group 2 of DESTRUCTIVE tests - Delete all\n * Phase 5: Record Group 3 of DESTRUCTIVE tests - Delete all raw (legacy API - pre 7.0)\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record API responses, you must call the test:record script and\n * override all the connection state variables required to connect to the\n * env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE CONFIGURATION!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=5 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update snapshots\n *\n * After recording API responses, you must manually update/create snapshots\n * by running:\n *\n * FRODO_DEBUG=1 npm run test:update Saml2Ops\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only Saml2Ops\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { jest } from '@jest/globals';\nimport { Saml2, state } from '../index';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { Saml2ProiderLocation } from '../api/ApiTypes';\nimport {\n getSaml2ProviderImportData,\n getSaml2ProvidersImportData,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\n// Increase timeout for this test as pipeline keeps failing with error:\n// Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.\njest.setTimeout(30000);\n\nautoSetupPolly();\n\nstate.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);\n\nasync function stageProvider(provider: { entityId: string }, create = true) {\n // delete if exists, then create\n try {\n await Saml2.getSaml2Provider(provider.entityId);\n await Saml2.deleteSaml2Provider(provider.entityId);\n } catch (error) {\n if (error.isAxiosError) {\n console.log(\n `Error deleting provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n } finally {\n if (create) {\n try {\n await Saml2.importSaml2Provider(\n provider.entityId,\n getSaml2ProviderImportData(provider.entityId)\n );\n } catch (error) {\n console.log(\n `Error importing provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n }\n }\n}\n\ndescribe('Saml2Ops', () => {\n const provider1 = {\n entityId: 'iSPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('iSPAzure'),\n };\n const provider2 = {\n entityId: 'urn:federation:MicrosoftOnline',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('urn:federation:MicrosoftOnline'),\n };\n const provider3 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPFedlet',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPFedlet'),\n };\n const provider4 = {\n entityId: 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url(\n 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/'\n ),\n };\n const provider5 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPAzure'),\n };\n const provider6 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPBroadcom',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPBroadcom'),\n };\n const provider7 = {\n entityId: 'idp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('idp'),\n };\n const provider8 = {\n entityId: 'SPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('SPAzure'),\n };\n const provider9 = {\n entityId: 'volkerDevSP',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('volkerDevSP'),\n };\n const provider10 = {\n entityId: 'https://saml.mytestrun.com/sp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('https://saml.mytestrun.com/sp'),\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1'\n ) {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n }\n // Pahses 3 + 4\n else if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5);\n await stageProvider(provider6);\n await stageProvider(provider7);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n }\n });\n\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('createSaml2ExportTemplate()', () => {\n test('0: Method is implemented', () => {\n expect(Saml2.createSaml2ExportTemplate).toBeDefined();\n });\n\n test('1: Create saml2 export template', () => {\n const response = Saml2.createSaml2ExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getSaml2ProviderStubs()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStubs).toBeDefined();\n });\n\n test('1: Get saml2 provider stubs', async () => {\n const response = await Saml2.getSaml2ProviderStubs();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderByLocationAndId()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderByLocationAndId).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider1.location,\n provider1.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider2.location,\n provider2.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderMetadataUrl()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadataUrl).toBeDefined();\n });\n\n test(`1: Get metadata url for hosted provider '${provider3.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider3.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get metadata url for remote provider '${provider4.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderMetadata()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadata).toBeDefined();\n });\n\n test(`1: Get metadata for hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get metadata for remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2ProviderStub()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStub).toBeDefined();\n });\n\n test(`1: Get stub of hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get stub of remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2Provider).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Provider).toBeDefined();\n });\n\n test(`1: Export hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n\n test(`2: Export remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Providers).toBeDefined();\n });\n\n test('1: Export saml2 entity providers', async () => {\n const response = await Saml2.exportSaml2Providers();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Provider).toBeDefined();\n });\n\n test(`1: Import hosted provider '${provider5.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider5.entityId,\n getSaml2ProviderImportData(provider5.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`2: Import hosted provider '${provider6.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider6.entityId,\n getSaml2ProviderImportData(provider6.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`3: Import remote provider '${provider7.entityId}' with metadata`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider7.entityId,\n getSaml2ProviderImportData(provider7.entityId)\n );\n expect(response).toBeTruthy();\n });\n });\n\n describe('getRawProviders()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Providers).toBeDefined();\n });\n });\n\n describe('getRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Provider).toBeDefined();\n });\n });\n\n describe('putRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.putRawSaml2Provider).toBeDefined();\n });\n });\n }\n\n // Phase 2\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2')\n ) {\n describe('importSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Providers).toBeDefined();\n });\n\n test('1: Import providers', async () => {\n expect.assertions(2);\n const response = await Saml2.importSaml2Providers(\n getSaml2ProvidersImportData()\n );\n expect(response.failures).toBe(0);\n expect(response.warnings).toBe(0);\n });\n });\n }\n\n // Phase 3\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '3')\n ) {\n describe('deleteSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete hosted provider '${provider3.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider3.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('deleteRawSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete raw hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete raw remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider2.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 4\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '4')\n ) {\n describe('deleteSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all providers`, async () => {\n const response = await Saml2.deleteSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 5\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5')\n ) {\n describe('deleteRawSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all raw providers`, async () => {\n const response = await Saml2.deleteRawSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Saml2Ops.test.js","names":["autoSetupPolly","state","setDeploymentType","globalConfig","CLOUD_DEPLOYMENT_TYPE_KEY","stageProvider","provider","create","Saml2","getSaml2Provider","entityId","deleteSaml2Provider","error","isAxiosError","console","log","message","dir","response","data","importSaml2Provider","getSaml2ProviderImportData","describe","provider1","location","Saml2ProiderLocation","HOSTED","entityId64","encodeBase64Url","provider2","REMOTE","provider3","provider4","provider5","provider6","provider7","provider8","provider9","provider10","beforeAll","process","env","FRODO_POLLY_MODE","FRODO_RECORD_PHASE","afterAll","test","expect","createSaml2ExportTemplate","toBeDefined","toMatchSnapshot","meta","any","Object","getSaml2ProviderStubs","getProviderByLocationAndId","getProviderMetadataUrl","getProviderMetadata","getSaml2ProviderStub","exportSaml2Provider","exportSaml2Providers","assertions","toBeTruthy","getRawSaml2Providers","getRawSaml2Provider","putRawSaml2Provider","importSaml2Providers","getSaml2ProvidersImportData","failures","toBe","warnings","deleteRawSaml2Provider","deleteSaml2Providers","deleteRawSaml2Providers"],"sources":["ops/Saml2Ops.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses\n *\n * This step breaks down into 5 phases:\n *\n * Phase 1: Record Group 1 of non-destructive tests\n * Phase 2: Record Group 2 of non-destructive tests - Import all\n * Phase 3: Record Group 1 of DESTRUCTIVE tests - Deletes by entity id\n * Phase 4: Record Group 2 of DESTRUCTIVE tests - Delete all\n * Phase 5: Record Group 3 of DESTRUCTIVE tests - Delete all raw (legacy API - pre 7.0)\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record API responses, you must call the test:record script and\n * override all the connection state variables required to connect to the\n * env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE CONFIGURATION!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=5 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update snapshots\n *\n * After recording API responses, you must manually update/create snapshots\n * by running:\n *\n * FRODO_DEBUG=1 npm run test:update Saml2Ops\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only Saml2Ops\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Saml2, state } from '../index';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { Saml2ProiderLocation } from '../api/ApiTypes';\nimport {\n getSaml2ProviderImportData,\n getSaml2ProvidersImportData,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\nstate.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);\n\nasync function stageProvider(provider: { entityId: string }, create = true) {\n // delete if exists, then create\n try {\n await Saml2.getSaml2Provider(provider.entityId);\n await Saml2.deleteSaml2Provider(provider.entityId);\n } catch (error) {\n if (error.isAxiosError) {\n console.log(\n `Error deleting provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n } finally {\n if (create) {\n try {\n await Saml2.importSaml2Provider(\n provider.entityId,\n getSaml2ProviderImportData(provider.entityId)\n );\n } catch (error) {\n console.log(\n `Error importing provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n }\n }\n}\n\ndescribe('Saml2Ops', () => {\n const provider1 = {\n entityId: 'iSPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('iSPAzure'),\n };\n const provider2 = {\n entityId: 'urn:federation:MicrosoftOnline',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('urn:federation:MicrosoftOnline'),\n };\n const provider3 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPFedlet',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPFedlet'),\n };\n const provider4 = {\n entityId: 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url(\n 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/'\n ),\n };\n const provider5 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPAzure'),\n };\n const provider6 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPBroadcom',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPBroadcom'),\n };\n const provider7 = {\n entityId: 'idp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('idp'),\n };\n const provider8 = {\n entityId: 'SPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('SPAzure'),\n };\n const provider9 = {\n entityId: 'volkerDevSP',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('volkerDevSP'),\n };\n const provider10 = {\n entityId: 'https://saml.mytestrun.com/sp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('https://saml.mytestrun.com/sp'),\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1'\n ) {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n }\n // Pahses 3 + 4\n else if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5);\n await stageProvider(provider6);\n await stageProvider(provider7);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n }\n });\n\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('createSaml2ExportTemplate()', () => {\n test('0: Method is implemented', () => {\n expect(Saml2.createSaml2ExportTemplate).toBeDefined();\n });\n\n test('1: Create saml2 export template', () => {\n const response = Saml2.createSaml2ExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getSaml2ProviderStubs()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStubs).toBeDefined();\n });\n\n test('1: Get saml2 provider stubs', async () => {\n const response = await Saml2.getSaml2ProviderStubs();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderByLocationAndId()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderByLocationAndId).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider1.location,\n provider1.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider2.location,\n provider2.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderMetadataUrl()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadataUrl).toBeDefined();\n });\n\n test(`1: Get metadata url for hosted provider '${provider3.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider3.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get metadata url for remote provider '${provider4.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderMetadata()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadata).toBeDefined();\n });\n\n test(`1: Get metadata for hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get metadata for remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2ProviderStub()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStub).toBeDefined();\n });\n\n test(`1: Get stub of hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get stub of remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2Provider).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Provider).toBeDefined();\n });\n\n test(`1: Export hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n\n test(`2: Export remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Providers).toBeDefined();\n });\n\n test('1: Export saml2 entity providers', async () => {\n const response = await Saml2.exportSaml2Providers();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Provider).toBeDefined();\n });\n\n test(`1: Import hosted provider '${provider5.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider5.entityId,\n getSaml2ProviderImportData(provider5.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`2: Import hosted provider '${provider6.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider6.entityId,\n getSaml2ProviderImportData(provider6.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`3: Import remote provider '${provider7.entityId}' with metadata`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider7.entityId,\n getSaml2ProviderImportData(provider7.entityId)\n );\n expect(response).toBeTruthy();\n });\n });\n\n describe('getRawProviders()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Providers).toBeDefined();\n });\n });\n\n describe('getRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Provider).toBeDefined();\n });\n });\n\n describe('putRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.putRawSaml2Provider).toBeDefined();\n });\n });\n }\n\n // Phase 2\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2')\n ) {\n describe('importSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Providers).toBeDefined();\n });\n\n test('1: Import providers', async () => {\n expect.assertions(2);\n const response = await Saml2.importSaml2Providers(\n getSaml2ProvidersImportData()\n );\n expect(response.failures).toBe(0);\n expect(response.warnings).toBe(0);\n });\n });\n }\n\n // Phase 3\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '3')\n ) {\n describe('deleteSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete hosted provider '${provider3.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider3.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('deleteRawSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete raw hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete raw remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider2.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 4\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '4')\n ) {\n describe('deleteSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all providers`, async () => {\n const response = await Saml2.deleteSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 5\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5')\n ) {\n describe('deleteRawSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all raw providers`, async () => {\n const response = await Saml2.deleteRawSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptOps.test.js","names":["jest","setTimeout","autoSetupPolly","stageScript","script","create","Script","getScript","id","deleteScript","error","putScript","data","describe","script1","name","_id","description","default","language","context","createdBy","creationDate","lastModifiedBy","lastModifiedDate","script2","script3","script4","script5","import1","meta","origin","originAmVersion","exportedBy","exportDate","exportTool","exportToolVersion","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","createScriptExportTemplate","toBeDefined","response","toMatchSnapshot","any","Object","getScripts","getScriptByName","exportScript","exportScriptByName","exportScripts","importScripts","assertions","outcome","toBeTruthy"],"sources":["ops/ScriptOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record ScriptOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you musty manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update ScriptOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only ScriptOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { jest } from '@jest/globals';\nimport { Script } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { ScriptSkeleton } from '../../types/api/ApiTypes';\n\n// Increase timeout for this test as pipeline keeps failing with error:\n// Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.\njest.setTimeout(30000);\n\nautoSetupPolly();\n\nasync function stageScript(\n script: { id: string; name: string; data: ScriptSkeleton },\n create = true\n) {\n // delete if exists, then create\n try {\n await Script.getScript(script.id);\n await Script.deleteScript(script.id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await Script.putScript(script.id, script.data);\n }\n }\n}\n\ndescribe('ScriptOps', () => {\n const script1 = {\n id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n data: {\n _id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script2 = {\n id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n data: {\n _id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script3 = {\n id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n data: {\n _id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script4 = {\n id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n data: {\n _id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script5 = {\n id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n data: {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const import1: { name: string; data: Script.ScriptExportInterface } = {\n name: 'FrodoTestScript5',\n data: {\n meta: {\n origin: 'https://openam-frodo-dev.forgeblocks.com/am',\n originAmVersion: '7.3.0',\n exportedBy: 'volker.scheuber@forgerock.com',\n exportDate: '2023-01-02T20:04:41.662Z',\n exportTool: 'frodo',\n exportToolVersion: 'v0.17.1 [v18.5.0]',\n },\n script: {\n '5b3e4dd2-8060-4029-9ec1-6867932ab939': {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n },\n },\n },\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1);\n await stageScript(script2);\n await stageScript(script3, false);\n await stageScript(script4);\n await stageScript(script5, false);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1, false);\n await stageScript(script2, false);\n await stageScript(script3, false);\n await stageScript(script4, false);\n await stageScript(script5, false);\n }\n });\n\n describe('createScriptExportTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.createScriptExportTemplate).toBeDefined();\n });\n\n test(`1: Create script export template`, async () => {\n const response = Script.createScriptExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScripts).toBeDefined();\n });\n\n test(`1: Get scripts`, async () => {\n const response = await Script.getScripts();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScript).toBeDefined();\n });\n\n test(`1: Get script by id '${script1.id}'`, async () => {\n const response = await Script.getScript(script1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScriptByName).toBeDefined();\n });\n\n test(`1: Get script by name '${script1.name}'`, async () => {\n const response = await Script.getScriptByName(script1.name);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.putScript).toBeDefined();\n });\n\n test(`1: Put script '${script3.id}'`, async () => {\n const response = await Script.putScript(script3.id, script3.data);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScript).toBeDefined();\n });\n\n test(`1: Export script by id ${script1.id}`, async () => {\n const response = await Script.exportScript(script1.id);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScriptByName).toBeDefined();\n });\n\n test(`1: Export script by name ${script1.name}`, async () => {\n const response = await Script.exportScriptByName(script1.name);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScripts).toBeDefined();\n });\n\n test('1: Export all scripts', async () => {\n const response = await Script.exportScripts();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.importScripts).toBeDefined();\n });\n\n test(`1: Import all scripts`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts('', import1.data);\n expect(outcome).toBeTruthy();\n });\n\n test(`2: Import script by name`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts(import1.name, import1.data);\n expect(outcome).toBeTruthy();\n });\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScriptOps.test.js","names":["autoSetupPolly","stageScript","script","create","Script","getScript","id","deleteScript","error","putScript","data","describe","script1","name","_id","description","default","language","context","createdBy","creationDate","lastModifiedBy","lastModifiedDate","script2","script3","script4","script5","import1","meta","origin","originAmVersion","exportedBy","exportDate","exportTool","exportToolVersion","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","createScriptExportTemplate","toBeDefined","response","toMatchSnapshot","any","Object","getScripts","getScriptByName","exportScript","exportScriptByName","exportScripts","importScripts","assertions","outcome","toBeTruthy"],"sources":["ops/ScriptOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record ScriptOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you musty manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update ScriptOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only ScriptOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Script } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { ScriptSkeleton } from '../../types/api/ApiTypes';\n\nautoSetupPolly();\n\nasync function stageScript(\n script: { id: string; name: string; data: ScriptSkeleton },\n create = true\n) {\n // delete if exists, then create\n try {\n await Script.getScript(script.id);\n await Script.deleteScript(script.id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await Script.putScript(script.id, script.data);\n }\n }\n}\n\ndescribe('ScriptOps', () => {\n const script1 = {\n id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n data: {\n _id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script2 = {\n id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n data: {\n _id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script3 = {\n id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n data: {\n _id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script4 = {\n id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n data: {\n _id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script5 = {\n id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n data: {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const import1: { name: string; data: Script.ScriptExportInterface } = {\n name: 'FrodoTestScript5',\n data: {\n meta: {\n origin: 'https://openam-frodo-dev.forgeblocks.com/am',\n originAmVersion: '7.3.0',\n exportedBy: 'volker.scheuber@forgerock.com',\n exportDate: '2023-01-02T20:04:41.662Z',\n exportTool: 'frodo',\n exportToolVersion: 'v0.17.1 [v18.5.0]',\n },\n script: {\n '5b3e4dd2-8060-4029-9ec1-6867932ab939': {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n },\n },\n },\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1);\n await stageScript(script2);\n await stageScript(script3, false);\n await stageScript(script4);\n await stageScript(script5, false);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1, false);\n await stageScript(script2, false);\n await stageScript(script3, false);\n await stageScript(script4, false);\n await stageScript(script5, false);\n }\n });\n\n describe('createScriptExportTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.createScriptExportTemplate).toBeDefined();\n });\n\n test(`1: Create script export template`, async () => {\n const response = Script.createScriptExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScripts).toBeDefined();\n });\n\n test(`1: Get scripts`, async () => {\n const response = await Script.getScripts();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScript).toBeDefined();\n });\n\n test(`1: Get script by id '${script1.id}'`, async () => {\n const response = await Script.getScript(script1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScriptByName).toBeDefined();\n });\n\n test(`1: Get script by name '${script1.name}'`, async () => {\n const response = await Script.getScriptByName(script1.name);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.putScript).toBeDefined();\n });\n\n test(`1: Put script '${script3.id}'`, async () => {\n const response = await Script.putScript(script3.id, script3.data);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScript).toBeDefined();\n });\n\n test(`1: Export script by id ${script1.id}`, async () => {\n const response = await Script.exportScript(script1.id);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScriptByName).toBeDefined();\n });\n\n test(`1: Export script by name ${script1.name}`, async () => {\n const response = await Script.exportScriptByName(script1.name);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScripts).toBeDefined();\n });\n\n test('1: Export all scripts', async () => {\n const response = await Script.exportScripts();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.importScripts).toBeDefined();\n });\n\n test(`1: Import all scripts`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts('', import1.data);\n expect(outcome).toBeTruthy();\n });\n\n test(`2: Import script by name`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts(import1.name, import1.data);\n expect(outcome).toBeTruthy();\n });\n });\n});\n"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getFeatures = getFeatures;
7
+ exports.hasFeature = hasFeature;
8
+ var _FeatureApi = require("../../api/cloud/FeatureApi");
9
+ var _Console = require("../utils/Console");
10
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
11
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
12
+ var _features = undefined;
13
+
14
+ /**
15
+ * Get all features
16
+ * @returns {Promise<FeatureInterface[]>} a promise that resolves to an array of feature objects
17
+ */
18
+ function getFeatures() {
19
+ return _getFeatures2.apply(this, arguments);
20
+ }
21
+ /**
22
+ * Check if feature is available
23
+ * @param {string} featureId feature id (e.g. 'service-accounts')
24
+ * @returns {Promise<boolean>} a promise that resolves to true if the feature is available and to false otherwise
25
+ */
26
+ function _getFeatures2() {
27
+ _getFeatures2 = _asyncToGenerator(function* () {
28
+ if (typeof _features !== 'undefined') return _features;
29
+ try {
30
+ var {
31
+ result
32
+ } = yield (0, _FeatureApi.getFeatures)();
33
+ _features = JSON.parse(JSON.stringify(result));
34
+ } catch (error) {
35
+ var _error$response;
36
+ (0, _Console.debugMessage)((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data);
37
+ _features = [];
38
+ }
39
+ return _features;
40
+ });
41
+ return _getFeatures2.apply(this, arguments);
42
+ }
43
+ function hasFeature(_x) {
44
+ return _hasFeature.apply(this, arguments);
45
+ }
46
+ function _hasFeature() {
47
+ _hasFeature = _asyncToGenerator(function* (featureId) {
48
+ if (typeof _features === 'undefined') yield getFeatures();
49
+ var featureIds = _features.map(feature => feature._id);
50
+ return featureIds.includes(featureId);
51
+ });
52
+ return _hasFeature.apply(this, arguments);
53
+ }
54
+ //# sourceMappingURL=FeatureOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureOps.js","names":["_features","undefined","getFeatures","result","_getFeatures","JSON","parse","stringify","error","debugMessage","response","data","hasFeature","featureId","featureIds","map","feature","_id","includes"],"sources":["ops/cloud/FeatureOps.ts"],"sourcesContent":["import {\n getFeatures as _getFeatures,\n FeatureInterface,\n} from '../../api/cloud/FeatureApi';\nimport { debugMessage } from '../utils/Console';\n\nlet _features: FeatureInterface[] = undefined;\n\n/**\n * Get all features\n * @returns {Promise<FeatureInterface[]>} a promise that resolves to an array of feature objects\n */\nexport async function getFeatures(): Promise<FeatureInterface[]> {\n if (typeof _features !== 'undefined') return _features;\n try {\n const { result } = await _getFeatures();\n _features = JSON.parse(JSON.stringify(result));\n } catch (error) {\n debugMessage(error.response?.data);\n _features = [];\n }\n return _features;\n}\n\n/**\n * Check if feature is available\n * @param {string} featureId feature id (e.g. 'service-accounts')\n * @returns {Promise<boolean>} a promise that resolves to true if the feature is available and to false otherwise\n */\nexport async function hasFeature(featureId: string): Promise<boolean> {\n if (typeof _features === 'undefined') await getFeatures();\n const featureIds = _features.map((feature) => feature._id);\n return featureIds.includes(featureId);\n}\n"],"mappings":";;;;;;;AAAA;AAIA;AAAgD;AAAA;AAEhD,IAAIA,SAA6B,GAAGC,SAAS;;AAE7C;AACA;AACA;AACA;AAHA,SAIsBC,WAAW;EAAA;AAAA;AAYjC;AACA;AACA;AACA;AACA;AAJA;EAAA,kCAZO,aAA0D;IAC/D,IAAI,OAAOF,SAAS,KAAK,WAAW,EAAE,OAAOA,SAAS;IACtD,IAAI;MACF,IAAM;QAAEG;MAAO,CAAC,SAAS,IAAAC,uBAAY,GAAE;MACvCJ,SAAS,GAAGK,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,OAAOK,KAAK,EAAE;MAAA;MACd,IAAAC,qBAAY,qBAACD,KAAK,CAACE,QAAQ,oDAAd,gBAAgBC,IAAI,CAAC;MAClCX,SAAS,GAAG,EAAE;IAChB;IACA,OAAOA,SAAS;EAClB,CAAC;EAAA;AAAA;AAAA,SAOqBY,UAAU;EAAA;AAAA;AAAA;EAAA,gCAAzB,WAA0BC,SAAiB,EAAoB;IACpE,IAAI,OAAOb,SAAS,KAAK,WAAW,EAAE,MAAME,WAAW,EAAE;IACzD,IAAMY,UAAU,GAAGd,SAAS,CAACe,GAAG,CAAEC,OAAO,IAAKA,OAAO,CAACC,GAAG,CAAC;IAC1D,OAAOH,UAAU,CAACI,QAAQ,CAACL,SAAS,CAAC;EACvC,CAAC;EAAA;AAAA"}
@@ -10,10 +10,10 @@ exports.provisionCreds = provisionCreds;
10
10
  exports.resolveLevel = resolveLevel;
11
11
  exports.resolvePayloadLevel = resolvePayloadLevel;
12
12
  exports.tailLogs = tailLogs;
13
- var _Console = require("./utils/Console");
14
- var _ExportImportUtils = require("./utils/ExportImportUtils");
15
- var LogApi = _interopRequireWildcard(require("../api/LogApi"));
16
- var state = _interopRequireWildcard(require("../shared/State"));
13
+ var _Console = require("../utils/Console");
14
+ var _ExportImportUtils = require("../utils/ExportImportUtils");
15
+ var LogApi = _interopRequireWildcard(require("../../api/cloud/LogApi"));
16
+ var state = _interopRequireWildcard(require("../../shared/State"));
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogOps.js","names":["unfilterableNoise","miscNoise","journeysNoise","journeys","samlNoise","saml","noise","concat","numLogLevelMap","logLevelMap","SEVERE","ERROR","FATAL","WARN","WARNING","CONFIG","INFO","INFORMATION","DEBUG","FINE","FINER","FINEST","ALL","defaultNoiseFilter","resolveLevel","level","Number","isNaN","parseInt","resolvePayloadLevel","log","type","payload","match","e","getLogSources","sources","getSources","then","response","data","result","forEach","item","push","catch","error","printMessage","tailLogs","source","levels","txid","cookie","nf","LogApi","tail","status","logsObject","filteredLogs","noiseFilter","Array","isArray","filter","el","includes","logger","transactionId","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","state","getUsername","getAPIKeys","k","name","getCurrentTimestamp","createAPIKeyAndSecret","resp","getHost","fetchLogs","startTs","endTs","ffString","fetch"],"sources":["ops/cloud/LogOps.ts"],"sourcesContent":["import { printMessage } from '../utils/Console';\nimport { getCurrentTimestamp } from '../utils/ExportImportUtils';\nimport {\n createAPIKeyAndSecret,\n getAPIKeys,\n getSources,\n} from '../../api/cloud/LogApi';\n\nimport * as state from '../../shared/State';\n\nimport * as LogApi from '../../api/cloud/LogApi';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unfilterableNoise = [\n 'text/plain', // Unfortunately, it is impossible to filter out those without excluding IDM script logging as well\n];\n\nconst miscNoise = [\n 'com.iplanet.dpro.session.operations.ServerSessionOperationStrategy',\n 'com.iplanet.dpro.session.SessionIDFactory',\n 'com.iplanet.dpro.session.share.SessionEncodeURL',\n 'com.iplanet.services.naming.WebtopNaming',\n 'com.iplanet.sso.providers.dpro.SSOProviderImpl',\n 'com.sun.identity.authentication.AuthContext',\n 'com.sun.identity.authentication.client.AuthClientUtils',\n 'com.sun.identity.authentication.config.AMAuthConfigType',\n 'com.sun.identity.authentication.config.AMAuthenticationManager',\n 'com.sun.identity.authentication.config.AMAuthLevelManager',\n 'com.sun.identity.authentication.config.AMConfiguration',\n 'com.sun.identity.authentication.jaas.LoginContext',\n 'com.sun.identity.authentication.modules.application.Application',\n 'com.sun.identity.authentication.server.AuthContextLocal',\n 'com.sun.identity.authentication.service.AMLoginContext',\n 'com.sun.identity.authentication.service.AuthContextLookup',\n 'com.sun.identity.authentication.service.AuthD',\n 'com.sun.identity.authentication.service.AuthUtils',\n 'com.sun.identity.authentication.service.DSAMECallbackHandler',\n 'com.sun.identity.authentication.service.LoginState',\n 'com.sun.identity.authentication.spi.AMLoginModule',\n 'com.sun.identity.delegation.DelegationEvaluatorImpl',\n 'com.sun.identity.idm.plugins.internal.AgentsRepo',\n 'com.sun.identity.idm.server.IdCachedServicesImpl',\n 'com.sun.identity.idm.server.IdRepoPluginsCache',\n 'com.sun.identity.idm.server.IdServicesImpl',\n 'com.sun.identity.log.spi.ISDebug',\n 'com.sun.identity.shared.encode.CookieUtils',\n 'com.sun.identity.sm.ldap.SMSLdapObject',\n 'com.sun.identity.sm.CachedSMSEntry',\n 'com.sun.identity.sm.CachedSubEntries',\n 'com.sun.identity.sm.DNMapper',\n 'com.sun.identity.sm.ServiceConfigImpl',\n 'com.sun.identity.sm.ServiceConfigManagerImpl',\n 'com.sun.identity.sm.SMSEntry',\n 'com.sun.identity.sm.SMSUtils',\n 'com.sun.identity.sm.SmsWrapperObject',\n 'oauth2',\n 'org.apache.http.client.protocol.RequestAuthCache',\n 'org.apache.http.impl.conn.PoolingHttpClientConnectionManager',\n 'org.apache.http.impl.nio.client.InternalHttpAsyncClient',\n 'org.apache.http.impl.nio.client.InternalIODispatch',\n 'org.apache.http.impl.nio.client.MainClientExec',\n 'org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionImpl',\n 'org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager',\n 'org.forgerock.audit.AuditServiceImpl',\n 'org.forgerock.oauth2.core.RealmOAuth2ProviderSettings',\n 'org.forgerock.openam.authentication.service.JAASModuleDetector',\n 'org.forgerock.openam.authentication.service.LoginContextFactory',\n 'org.forgerock.openam.blacklist.BloomFilterBlacklist',\n 'org.forgerock.openam.blacklist.CTSBlacklist',\n 'org.forgerock.openam.core.realms.impl.CachingRealmLookup',\n 'org.forgerock.openam.core.rest.authn.RestAuthCallbackHandlerManager',\n 'org.forgerock.openam.core.rest.authn.trees.AuthTrees',\n 'org.forgerock.openam.cors.CorsFilter',\n 'org.forgerock.openam.cts.CTSPersistentStoreImpl',\n 'org.forgerock.openam.cts.impl.CoreTokenAdapter',\n 'org.forgerock.openam.cts.impl.queue.AsyncResultHandler',\n 'org.forgerock.openam.cts.reaper.ReaperDeleteOnQueryResultHandler',\n 'org.forgerock.openam.headers.DisableSameSiteCookiesFilter',\n 'org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo',\n 'org.forgerock.openam.rest.CsrfFilter',\n 'org.forgerock.openam.rest.restAuthenticationFilter',\n 'org.forgerock.openam.rest.fluent.CrestLoggingFilter',\n 'org.forgerock.openam.session.cts.CtsOperations',\n 'org.forgerock.openam.session.stateless.StatelessSessionManager',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.ExternalLdapConfig',\n 'org.forgerock.openam.sm.datalayer.impl.ldap.LdapQueryBuilder',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutor',\n 'org.forgerock.openam.sm.datalayer.impl.SeriesTaskExecutorThread',\n 'org.forgerock.openam.sm.datalayer.providers.LdapConnectionFactoryProvider',\n 'org.forgerock.openam.sm.file.ConfigFileSystemHandler',\n 'org.forgerock.openam.social.idp.SocialIdentityProviders',\n 'org.forgerock.openam.utils.ClientUtils',\n 'org.forgerock.opendj.ldap.CachedConnectionPool',\n 'org.forgerock.opendj.ldap.LoadBalancer',\n 'org.forgerock.secrets.keystore.KeyStoreSecretStore',\n 'org.forgerock.secrets.propertyresolver.PropertyResolverSecretStore',\n 'org.forgerock.secrets.SecretsProvider',\n];\n\nconst journeysNoise = [\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst journeys = [\n 'org.forgerock.openam.auth.nodes.SelectIdPNode',\n 'org.forgerock.openam.auth.nodes.ValidatedPasswordNode',\n 'org.forgerock.openam.auth.nodes.ValidatedUsernameNode',\n 'org.forgerock.openam.auth.trees.engine.AuthTreeExecutor',\n];\n\nconst samlNoise = [\n 'com.sun.identity.cot.COTCache',\n 'com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl',\n 'com.sun.identity.saml2.meta.SAML2MetaCache',\n 'com.sun.identity.saml2.profile.CacheCleanUpRunnable',\n 'org.apache.xml.security.keys.KeyInfo',\n 'org.apache.xml.security.signature.XMLSignature',\n 'org.apache.xml.security.utils.SignerOutputStream',\n 'org.apache.xml.security.utils.resolver.ResourceResolver',\n 'org.apache.xml.security.utils.resolver.implementations.ResolverFragment',\n 'org.apache.xml.security.algorithms.JCEMapper',\n 'org.apache.xml.security.algorithms.implementations.SignatureBaseRSA',\n 'org.apache.xml.security.algorithms.SignatureAlgorithm',\n 'org.apache.xml.security.utils.ElementProxy',\n 'org.apache.xml.security.transforms.Transforms',\n 'org.apache.xml.security.utils.DigesterOutputStream',\n 'org.apache.xml.security.signature.Reference',\n 'org.apache.xml.security.signature.Manifest',\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst saml = [\n 'jsp.saml2.spAssertionConsumer',\n 'com.sun.identity.saml.common.SAMLUtils',\n 'com.sun.identity.saml2.common.SAML2Utils',\n 'com.sun.identity.saml2.meta.SAML2MetaManager',\n 'com.sun.identity.saml2.xmlsig.FMSigProvider',\n];\n\nconst noise = miscNoise.concat(samlNoise).concat(journeysNoise);\n\nconst numLogLevelMap = {\n 0: ['SEVERE', 'ERROR', 'FATAL'],\n 1: ['WARNING', 'WARN', 'CONFIG'],\n 2: ['INFO', 'INFORMATION'],\n 3: ['DEBUG', 'FINE', 'FINER', 'FINEST'],\n 4: ['ALL'],\n};\n\nconst logLevelMap = {\n SEVERE: ['SEVERE', 'ERROR', 'FATAL'],\n ERROR: ['SEVERE', 'ERROR', 'FATAL'],\n FATAL: ['SEVERE', 'ERROR', 'FATAL'],\n WARN: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n WARNING: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n CONFIG: ['SEVERE', 'ERROR', 'FATAL', 'WARNING', 'WARN', 'CONFIG'],\n INFO: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n INFORMATION: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n ],\n DEBUG: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINE: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINER: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n FINEST: [\n 'SEVERE',\n 'ERROR',\n 'FATAL',\n 'WARNING',\n 'WARN',\n 'CONFIG',\n 'INFO',\n 'INFORMATION',\n 'DEBUG',\n 'FINE',\n 'FINER',\n 'FINEST',\n ],\n ALL: ['ALL'],\n};\n\nexport function defaultNoiseFilter() {\n return noise;\n}\n\nexport function resolveLevel(level) {\n // const levels = ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'TRACE', 'ALL'];\n // levels.splice(levels.indexOf(levelName) + 1, levels.length);\n if (Number.isNaN(parseInt(level, 10))) {\n return logLevelMap[level];\n }\n return logLevelMap[numLogLevelMap[level][0]];\n}\n\n// It seems that the undesirable 'text/plain' logs start with a date, not a LEVEL\n// Therefore, for those, this function returns null, and thus filters out the undesirable\nexport function resolvePayloadLevel(log) {\n try {\n return log.type !== 'text/plain'\n ? log.payload.level\n : log.payload.match(/^([^:]*):/)[1];\n } catch (e) {\n // Fail-safe for no group match\n return null;\n }\n}\n\nexport async function getLogSources() {\n const sources = [];\n await getSources()\n .then((response) => {\n response.data.result.forEach((item) => {\n sources.push(item);\n });\n })\n .catch((error) => {\n printMessage(\n `getSources ERROR: get log sources call returned ${error}}`,\n 'error'\n );\n return [];\n });\n return sources;\n}\n\nexport async function tailLogs(source, levels, txid, cookie, nf) {\n try {\n const response = await LogApi.tail(source, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `tail ERROR: tail call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n // if (!cookie) {\n // await saveConnection();\n // }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId?.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e.payload), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.result.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${state.getUsername()}`;\n return getAPIKeys()\n .then((response) => {\n response.data.result.forEach((k) => {\n if (k.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${getCurrentTimestamp()}`;\n }\n });\n return createAPIKeyAndSecret(keyName)\n .then((resp) => {\n if (resp.data.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n printMessage(\n `Created a new log API key [${keyName}] in ${state.getHost()}`\n );\n return resp.data;\n })\n .catch((error) => {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n });\n })\n .catch((error) => {\n printMessage(\n `get keys ERROR: get keys call returned ${error}`,\n 'error'\n );\n });\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n cookie,\n nf\n) {\n try {\n // console.log(`startTs: ${startTs} endTs : ${endTs}`);\n const response = await LogApi.fetch(source, startTs, endTs, cookie);\n if (response.status < 200 || response.status > 399) {\n printMessage(\n `fetch ERROR: fetch call returned ${response.status}`,\n 'error'\n );\n return null;\n }\n const logsObject = response.data;\n let filteredLogs = [];\n const noiseFilter = nf == null ? noise : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(el.payload.logger) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n el.payload.transactionId?.includes(txid))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"],"mappings":"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"}
@@ -14,10 +14,10 @@ exports.describeSecret = describeSecret;
14
14
  exports.listSecretVersionsCmd = listSecretVersionsCmd;
15
15
  exports.listSecrets = listSecrets;
16
16
  exports.setDescriptionOfSecret = setDescriptionOfSecret;
17
- var _Console = require("./utils/Console");
18
- var _SecretsApi = require("../api/SecretsApi");
19
- var _Wordwrap = _interopRequireDefault(require("./utils/Wordwrap"));
20
- var _ManagedObjectOps = require("./ManagedObjectOps");
17
+ var _Console = require("../utils/Console");
18
+ var _SecretsApi = require("../../api/cloud/SecretsApi");
19
+ var _Wordwrap = _interopRequireDefault(require("../utils/Wordwrap"));
20
+ var _ManagedObjectOps = require("../ManagedObjectOps");
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
22
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
23
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretsOps.js","names":["listSecrets","long","secrets","getSecrets","result","sort","a","b","_id","localeCompare","error","printMessage","message","response","data","table","createTable","hAlign","content","secret","push","activeVersion","loadedVersion","loaded","wordwrap","description","resolveUserName","lastChangedBy","Date","lastChangeDate","toLocaleString","toString","forEach","createSecret","id","value","encoding","useInPlaceholders","createProgressIndicator","undefined","putSecret","stopProgressIndicator","code","setDescriptionOfSecret","secretId","setSecretDescription","deleteSecretCmd","deleteSecret","deleteSecretsCmd","length","updateProgressIndicator","listSecretVersionsCmd","versions","getSecretVersions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","describeSecret","getSecret","createKeyValueTable","createNewVersionOfSecretCmd","createNewVersionOfSecret","activateVersionOfSecret","setStatusOfVersionOfSecret","VersionOfSecretStatus","deactivateVersionOfSecret","deleteVersionOfSecretCmd","deleteVersionOfSecret"],"sources":["ops/cloud/SecretsOps.ts"],"sourcesContent":["import {\n createKeyValueTable,\n createProgressIndicator,\n createTable,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\nimport {\n createNewVersionOfSecret,\n deleteSecret,\n deleteVersionOfSecret,\n getSecret,\n getSecrets,\n getSecretVersions,\n putSecret,\n setSecretDescription,\n setStatusOfVersionOfSecret,\n VersionOfSecretStatus,\n} from '../../api/cloud/SecretsApi';\nimport wordwrap from '../utils/Wordwrap';\nimport { resolveUserName } from '../ManagedObjectOps';\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = (await getSecrets()).result;\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n // eslint-disable-next-line no-await-in-loop\n await resolveUserName('teammember', secret.lastChangedBy),\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n createProgressIndicator(\n undefined,\n `Creating secret ${id}...`,\n 'indeterminate'\n );\n try {\n await putSecret(id, value, description, encoding, useInPlaceholders);\n stopProgressIndicator(`Created secret ${id}`, 'success');\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setDescriptionOfSecret(secretId, description) {\n createProgressIndicator(\n undefined,\n `Setting description of secret ${secretId}...`,\n 'indeterminate'\n );\n try {\n await setSecretDescription(secretId, description);\n stopProgressIndicator(`Set description of secret ${secretId}`, 'success');\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecretCmd(secretId) {\n createProgressIndicator(\n undefined,\n `Deleting secret ${secretId}...`,\n 'indeterminate'\n );\n try {\n await deleteSecret(secretId);\n stopProgressIndicator(`Deleted secret ${secretId}`, 'success');\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecretsCmd() {\n try {\n const secrets = (await getSecrets()).result;\n createProgressIndicator(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await deleteSecret(secret._id);\n updateProgressIndicator(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressIndicator(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersionsCmd(secretId) {\n let versions = [];\n try {\n versions = await getSecretVersions(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString());\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await getSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString());\n printMessage('\\nSecret Versions:');\n await listSecretVersionsCmd(secretId);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createNewVersionOfSecretCmd(secretId, value) {\n createProgressIndicator(\n undefined,\n `Creating new version of secret ${secretId}...`,\n 'indeterminate'\n );\n try {\n const version = await createNewVersionOfSecret(secretId, value);\n stopProgressIndicator(\n `Created version ${version.version} of secret ${secretId}`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n createProgressIndicator(\n undefined,\n `Activating version ${version} of secret ${secretId}...`,\n 'indeterminate'\n );\n try {\n await setStatusOfVersionOfSecret(\n secretId,\n version,\n VersionOfSecretStatus.ENABLED\n );\n stopProgressIndicator(\n `Activated version ${version} of secret ${secretId}`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n createProgressIndicator(\n undefined,\n `Deactivating version ${version} of secret ${secretId}...`,\n 'indeterminate'\n );\n try {\n await setStatusOfVersionOfSecret(\n secretId,\n version,\n VersionOfSecretStatus.DISABLED\n );\n stopProgressIndicator(\n `Deactivated version ${version} of secret ${secretId}`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecretCmd(secretId, version) {\n createProgressIndicator(\n undefined,\n `Deleting version ${version} of secret ${secretId}...`,\n 'indeterminate'\n );\n try {\n await deleteVersionOfSecret(secretId, version);\n stopProgressIndicator(\n `Deleted version ${version} of secret ${secretId}`,\n 'success'\n );\n } catch (error) {\n stopProgressIndicator(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'fail'\n );\n }\n}\n"],"mappings":"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"}