@rockcarver/frodo-lib 0.16.2-8 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/CHANGELOG.md +221 -1
  2. package/cjs/api/AgentApi.js +14 -61
  3. package/cjs/api/AgentApi.js.map +1 -1
  4. package/cjs/api/AgentApi.test.js.map +1 -1
  5. package/cjs/api/ApiTypes.js +0 -5
  6. package/cjs/api/ApiTypes.js.map +1 -1
  7. package/cjs/api/AuthenticateApi.js +9 -20
  8. package/cjs/api/AuthenticateApi.js.map +1 -1
  9. package/cjs/api/AuthenticateApi.test.js.map +1 -0
  10. package/cjs/api/BaseApi.js +82 -124
  11. package/cjs/api/BaseApi.js.map +1 -1
  12. package/cjs/api/CirclesOfTrustApi.js +8 -32
  13. package/cjs/api/CirclesOfTrustApi.js.map +1 -1
  14. package/cjs/api/IdmConfigApi.js +9 -34
  15. package/cjs/api/IdmConfigApi.js.map +1 -1
  16. package/cjs/api/LogApi.js +8 -31
  17. package/cjs/api/LogApi.js.map +1 -1
  18. package/cjs/api/ManagedObjectApi.js +34 -31
  19. package/cjs/api/ManagedObjectApi.js.map +1 -1
  20. package/cjs/api/NodeApi.js +10 -41
  21. package/cjs/api/NodeApi.js.map +1 -1
  22. package/cjs/api/NodeApi.test.js.map +1 -1
  23. package/cjs/api/OAuth2ClientApi.js +7 -26
  24. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  25. package/cjs/api/OAuth2OIDCApi.js +28 -34
  26. package/cjs/api/OAuth2OIDCApi.js.map +1 -1
  27. package/cjs/api/OAuth2OIDCApi.test.js.map +1 -0
  28. package/cjs/api/OAuth2ProviderApi.js +5 -15
  29. package/cjs/api/OAuth2ProviderApi.js.map +1 -1
  30. package/cjs/api/RealmApi.js +8 -34
  31. package/cjs/api/RealmApi.js.map +1 -1
  32. package/cjs/api/Saml2Api.js +32 -118
  33. package/cjs/api/Saml2Api.js.map +1 -1
  34. package/cjs/api/ScriptApi.js +8 -30
  35. package/cjs/api/ScriptApi.js.map +1 -1
  36. package/cjs/api/SecretsApi.js +14 -64
  37. package/cjs/api/SecretsApi.js.map +1 -1
  38. package/cjs/api/SecretsApi.test.js.map +1 -1
  39. package/cjs/api/ServerInfoApi.js +6 -21
  40. package/cjs/api/ServerInfoApi.js.map +1 -1
  41. package/cjs/api/ServiceApi.js +49 -47
  42. package/cjs/api/ServiceApi.js.map +1 -1
  43. package/cjs/api/SocialIdentityProvidersApi.js +9 -36
  44. package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
  45. package/cjs/api/StartupApi.js +5 -24
  46. package/cjs/api/StartupApi.js.map +1 -1
  47. package/cjs/api/StartupApi.test.js.map +1 -1
  48. package/cjs/api/TreeApi.js +8 -30
  49. package/cjs/api/TreeApi.js.map +1 -1
  50. package/cjs/api/TreeApi.test.js.map +1 -1
  51. package/cjs/api/VariablesApi.js +9 -37
  52. package/cjs/api/VariablesApi.js.map +1 -1
  53. package/cjs/api/VariablesApi.test.js.map +1 -1
  54. package/cjs/api/utils/ApiUtils.js +47 -57
  55. package/cjs/api/utils/ApiUtils.js.map +1 -1
  56. package/cjs/api/utils/ApiUtils.test.js.map +1 -1
  57. package/cjs/api/utils/Base64.js +6 -15
  58. package/cjs/api/utils/Base64.js.map +1 -1
  59. package/cjs/ext/axios-curlirize/curlirize.js +2 -9
  60. package/cjs/ext/axios-curlirize/curlirize.js.map +1 -1
  61. package/cjs/ext/axios-curlirize/lib/CurlHelper.js +7 -22
  62. package/cjs/ext/axios-curlirize/lib/CurlHelper.js.map +1 -1
  63. package/cjs/index.js +30 -89
  64. package/cjs/index.js.map +1 -1
  65. package/cjs/ops/AdminOps.js +27 -165
  66. package/cjs/ops/AdminOps.js.map +1 -1
  67. package/cjs/ops/AgentOps.js +3 -160
  68. package/cjs/ops/AgentOps.js.map +1 -1
  69. package/cjs/ops/AgentOps.test.js.map +1 -1
  70. package/cjs/ops/AuthenticateOps.js +265 -226
  71. package/cjs/ops/AuthenticateOps.js.map +1 -1
  72. package/cjs/ops/AuthenticateOps.test.js.map +1 -1
  73. package/cjs/ops/CirclesOfTrustOps.js +13 -91
  74. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  75. package/cjs/ops/ConnectionProfileOps.js +220 -136
  76. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  77. package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
  78. package/cjs/ops/EmailTemplateOps.js +35 -379
  79. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  80. package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
  81. package/cjs/ops/IdmOps.js +52 -426
  82. package/cjs/ops/IdmOps.js.map +1 -1
  83. package/cjs/ops/IdmOps.test.js.map +1 -1
  84. package/cjs/ops/IdpOps.js +11 -94
  85. package/cjs/ops/IdpOps.js.map +1 -1
  86. package/cjs/ops/IdpOps.test.js.map +1 -1
  87. package/cjs/ops/JoseOps.js +81 -0
  88. package/cjs/ops/JoseOps.js.map +1 -0
  89. package/cjs/ops/JoseOps.test.js.map +1 -0
  90. package/cjs/ops/JourneyOps.js +140 -371
  91. package/cjs/ops/JourneyOps.js.map +1 -1
  92. package/cjs/ops/JourneyOps.test.js.map +1 -1
  93. package/cjs/ops/LogOps.js +14 -47
  94. package/cjs/ops/LogOps.js.map +1 -1
  95. package/cjs/ops/ManagedObjectOps.js +4 -12
  96. package/cjs/ops/ManagedObjectOps.js.map +1 -1
  97. package/cjs/ops/NodeOps.js +9 -67
  98. package/cjs/ops/NodeOps.js.map +1 -1
  99. package/cjs/ops/OAuth2ClientOps.js +10 -40
  100. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  101. package/cjs/ops/OpsTypes.js +0 -5
  102. package/cjs/ops/OpsTypes.js.map +1 -1
  103. package/cjs/ops/OrganizationOps.js +6 -25
  104. package/cjs/ops/OrganizationOps.js.map +1 -1
  105. package/cjs/ops/RealmOps.js +0 -19
  106. package/cjs/ops/RealmOps.js.map +1 -1
  107. package/cjs/ops/Saml2Ops.js +258 -802
  108. package/cjs/ops/Saml2Ops.js.map +1 -1
  109. package/cjs/ops/Saml2Ops.test.js.map +1 -1
  110. package/cjs/ops/ScriptOps.js +28 -73
  111. package/cjs/ops/ScriptOps.js.map +1 -1
  112. package/cjs/ops/SecretsOps.js +2 -58
  113. package/cjs/ops/SecretsOps.js.map +1 -1
  114. package/cjs/ops/ServiceAccountOps.js +61 -0
  115. package/cjs/ops/ServiceAccountOps.js.map +1 -0
  116. package/cjs/ops/ServiceAccountOps.test.js.map +1 -0
  117. package/cjs/ops/ServiceOps.js +55 -101
  118. package/cjs/ops/ServiceOps.js.map +1 -1
  119. package/cjs/ops/StartupOps.js +2 -23
  120. package/cjs/ops/StartupOps.js.map +1 -1
  121. package/cjs/ops/ThemeOps.js +230 -436
  122. package/cjs/ops/ThemeOps.js.map +1 -1
  123. package/cjs/ops/ThemeOps.test.js.map +1 -0
  124. package/cjs/ops/VariablesOps.js +0 -38
  125. package/cjs/ops/VariablesOps.js.map +1 -1
  126. package/cjs/ops/utils/Console.js +29 -62
  127. package/cjs/ops/utils/Console.js.map +1 -1
  128. package/cjs/ops/utils/DataProtection.js +13 -47
  129. package/cjs/ops/utils/DataProtection.js.map +1 -1
  130. package/cjs/ops/utils/DataProtection.test.js.map +1 -1
  131. package/cjs/ops/utils/ExportImportUtils.js +36 -74
  132. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  133. package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
  134. package/cjs/ops/utils/OpsUtils.js +27 -43
  135. package/cjs/ops/utils/OpsUtils.js.map +1 -1
  136. package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
  137. package/cjs/ops/utils/ValidationUtils.js +0 -13
  138. package/cjs/ops/utils/ValidationUtils.js.map +1 -1
  139. package/cjs/ops/utils/ValidationUtils.test.js.map +1 -1
  140. package/cjs/ops/utils/Version.js +2 -12
  141. package/cjs/ops/utils/Version.js.map +1 -1
  142. package/cjs/ops/utils/Version.test.js.map +1 -1
  143. package/cjs/ops/utils/Wordwrap.js +1 -2
  144. package/cjs/ops/utils/Wordwrap.js.map +1 -1
  145. package/cjs/ops/utils/Wordwrap.test.js.map +1 -0
  146. package/cjs/shared/State.js +239 -0
  147. package/cjs/shared/State.js.map +1 -0
  148. package/cjs/shared/State.test.js.map +1 -0
  149. package/cjs/storage/StaticStorage.js.map +1 -1
  150. package/cjs/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  151. package/cjs/test/mocks/ForgeRockApiMockEngine.js +184 -80
  152. package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
  153. package/cjs/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  154. package/cjs/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  155. package/cjs/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  156. package/cjs/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  157. package/cjs/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
  158. package/cjs/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
  159. package/cjs/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
  160. package/cjs/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  161. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
  162. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
  163. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
  164. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
  165. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
  166. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
  167. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
  168. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
  169. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
  170. package/cjs/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  171. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
  172. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
  173. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
  174. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
  175. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
  176. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
  177. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
  178. package/cjs/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
  179. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
  180. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
  181. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
  182. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
  183. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
  184. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
  185. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
  186. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
  187. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
  188. package/cjs/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
  189. package/cjs/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
  190. package/cjs/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
  191. package/cjs/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
  192. package/cjs/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
  193. package/cjs/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  194. package/cjs/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  195. package/cjs/utils/AutoSetupPolly.js +79 -0
  196. package/cjs/utils/AutoSetupPolly.js.map +1 -0
  197. package/cjs/utils/SetupJest.js +6 -0
  198. package/cjs/utils/SetupJest.js.map +1 -0
  199. package/cjs/{test/mocks → utils}/snapshotResolve.js +10 -12
  200. package/cjs/utils/snapshotResolve.js.map +1 -0
  201. package/esm/api/AgentApi.mjs +19 -21
  202. package/esm/api/AgentApi.test.mjs +6 -15
  203. package/esm/api/ApiTypes.mjs +0 -5
  204. package/esm/api/AuthenticateApi.mjs +7 -10
  205. package/esm/api/AuthenticateApi.test.mjs +39 -0
  206. package/esm/api/BaseApi.mjs +96 -81
  207. package/esm/api/CirclesOfTrustApi.mjs +9 -12
  208. package/esm/api/IdmConfigApi.mjs +11 -12
  209. package/esm/api/LogApi.mjs +6 -10
  210. package/esm/api/ManagedObjectApi.mjs +23 -8
  211. package/esm/api/NodeApi.mjs +13 -15
  212. package/esm/api/NodeApi.test.mjs +13 -17
  213. package/esm/api/OAuth2ClientApi.mjs +7 -9
  214. package/esm/api/OAuth2OIDCApi.mjs +15 -9
  215. package/esm/api/OAuth2OIDCApi.test.mjs +53 -0
  216. package/esm/api/OAuth2ProviderApi.mjs +3 -5
  217. package/esm/api/RealmApi.mjs +10 -13
  218. package/esm/api/Saml2Api.mjs +31 -61
  219. package/esm/api/ScriptApi.mjs +9 -11
  220. package/esm/api/SecretsApi.mjs +21 -24
  221. package/esm/api/SecretsApi.test.mjs +9 -31
  222. package/esm/api/ServerInfoApi.mjs +5 -9
  223. package/esm/api/ServiceApi.mjs +53 -26
  224. package/esm/api/SocialIdentityProvidersApi.mjs +11 -13
  225. package/esm/api/StartupApi.mjs +5 -10
  226. package/esm/api/StartupApi.test.mjs +4 -7
  227. package/esm/api/TreeApi.mjs +9 -11
  228. package/esm/api/TreeApi.test.mjs +24 -61
  229. package/esm/api/VariablesApi.mjs +11 -13
  230. package/esm/api/VariablesApi.test.mjs +80 -222
  231. package/esm/api/utils/ApiUtils.mjs +45 -48
  232. package/esm/api/utils/ApiUtils.test.mjs +33 -32
  233. package/esm/api/utils/Base64.mjs +6 -9
  234. package/esm/ext/axios-curlirize/curlirize.mjs +2 -7
  235. package/esm/ext/axios-curlirize/lib/CurlHelper.mjs +7 -20
  236. package/esm/index.mjs +23 -13
  237. package/esm/ops/AdminOps.mjs +33 -119
  238. package/esm/ops/AgentOps.mjs +38 -81
  239. package/esm/ops/AgentOps.test.mjs +5 -45
  240. package/esm/ops/AuthenticateOps.mjs +241 -175
  241. package/esm/ops/AuthenticateOps.test.mjs +7 -9
  242. package/esm/ops/CirclesOfTrustOps.mjs +24 -61
  243. package/esm/ops/ConnectionProfileOps.mjs +192 -82
  244. package/esm/ops/ConnectionProfileOps.test.mjs +19 -19
  245. package/esm/ops/EmailTemplateOps.mjs +18 -276
  246. package/esm/ops/EmailTemplateOps.test.mjs +19 -44
  247. package/esm/ops/IdmOps.mjs +30 -327
  248. package/esm/ops/IdmOps.test.mjs +47 -54
  249. package/esm/ops/IdpOps.mjs +21 -59
  250. package/esm/ops/IdpOps.test.mjs +5 -5
  251. package/esm/ops/JoseOps.mjs +41 -0
  252. package/esm/ops/JoseOps.test.mjs +137 -0
  253. package/esm/ops/JourneyOps.mjs +147 -290
  254. package/esm/ops/JourneyOps.test.mjs +30 -28
  255. package/esm/ops/LogOps.mjs +15 -25
  256. package/esm/ops/ManagedObjectOps.mjs +6 -6
  257. package/esm/ops/NodeOps.mjs +9 -47
  258. package/esm/ops/OAuth2ClientOps.mjs +13 -19
  259. package/esm/ops/OpsTypes.mjs +1 -3
  260. package/esm/ops/OrganizationOps.mjs +7 -14
  261. package/esm/ops/RealmOps.mjs +4 -7
  262. package/esm/ops/Saml2Ops.mjs +199 -587
  263. package/esm/ops/Saml2Ops.test.mjs +303 -84
  264. package/esm/ops/ScriptOps.mjs +31 -47
  265. package/esm/ops/SecretsOps.mjs +15 -31
  266. package/esm/ops/ServiceAccountOps.mjs +41 -0
  267. package/esm/ops/ServiceAccountOps.test.mjs +51 -0
  268. package/esm/ops/ServiceOps.mjs +66 -83
  269. package/esm/ops/StartupOps.mjs +4 -13
  270. package/esm/ops/ThemeOps.mjs +189 -298
  271. package/esm/{api/ThemeApi.test.mjs → ops/ThemeOps.test.mjs} +91 -96
  272. package/esm/ops/VariablesOps.mjs +9 -18
  273. package/esm/ops/utils/Console.mjs +28 -46
  274. package/esm/ops/utils/DataProtection.mjs +15 -28
  275. package/esm/ops/utils/DataProtection.test.mjs +8 -8
  276. package/esm/ops/utils/ExportImportUtils.mjs +34 -43
  277. package/esm/ops/utils/ExportImportUtils.test.mjs +20 -18
  278. package/esm/ops/utils/OpsUtils.mjs +27 -21
  279. package/esm/ops/utils/OpsUtils.test.mjs +155 -27
  280. package/esm/ops/utils/ValidationUtils.mjs +0 -9
  281. package/esm/ops/utils/Version.mjs +2 -3
  282. package/esm/ops/utils/Version.test.mjs +0 -2
  283. package/esm/ops/utils/Wordwrap.mjs +1 -1
  284. package/esm/ops/utils/Wordwrap.test.mjs +19 -0
  285. package/esm/shared/State.mjs +164 -0
  286. package/esm/shared/State.test.mjs +249 -0
  287. package/esm/test/mocks/AuthenticateApi/step/default_steps.json +88 -0
  288. package/esm/test/mocks/ForgeRockApiMockEngine.mjs +169 -33
  289. package/esm/test/mocks/IdmConfigApi/getConfigEntity/managed.json +4420 -0
  290. package/esm/test/mocks/OAuth2OIDCApi/accessToken/body.json +6 -0
  291. package/esm/test/mocks/OAuth2OIDCApi/accessToken/headers.json +19 -0
  292. package/esm/test/mocks/OAuth2OIDCApi/authorize/headers.json +38 -0
  293. package/esm/test/mocks/Saml2Api/findSaml2Providers/https:sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a_stub.json +18 -0
  294. package/esm/test/mocks/Saml2Api/findSaml2Providers/iSPAzure_stub.json +18 -0
  295. package/esm/test/mocks/Saml2Api/getProvider/aVNQQXp1cmU.json +1 -2
  296. package/esm/test/mocks/Saml2Api/getProvider/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  297. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/U1BBenVyZQ.json +147 -0
  298. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQXp1cmU.json +182 -0
  299. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQQnJvYWRjb20.json +149 -0
  300. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aHR0cHM6Ly9pZGMuc2NoZXViZXIuaW8vYW0vc2FtbDIvSURQRmVkbGV0.json +141 -0
  301. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/aVNQQXp1cmU.json +1 -2
  302. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/hosted/dm9sa2VyRGV2U1A.json +118 -0
  303. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zYW1sLm15dGVzdHJ1bi5jb20vc3A.json +66 -0
  304. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNzExZmZhOWMtNTk3Mi00NzEzLWFjZTMtNjg4Yzk3MzI2MTRhLw.json +35 -0
  305. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/aWRw.json +83 -0
  306. package/esm/test/mocks/Saml2Api/getProviderByLocationAndId/remote/dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.json +1 -3
  307. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/SPAzure.xml +74 -0
  308. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPAzure.xml +78 -0
  309. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPBroadcom.xml +78 -0
  310. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fidc.scheuber.io%2Fam%2Fsaml2%2FIDPFedlet.xml +78 -0
  311. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/https%3A%2F%2Fsaml.mytestrun.com%2Fsp.xml +13 -0
  312. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{dXJuOmZlZGVyYXRpb246TWljcm9zb2Z0T25saW5l.xml → https%3A%2F%2Fsts.windows.net%2F711ffa9c-5972-4713-ace3-688c9732614a%2F.xml} +0 -0
  313. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/{aVNQQXp1cmU.xml → iSPAzure.xml} +0 -0
  314. package/esm/test/mocks/Saml2Api/getProviderMetadata/alpha/urn%3Afederation%3AMicrosoftOnline.xml +84 -0
  315. package/esm/test/mocks/Saml2Ops/importSaml2Provider/SPAzure.saml.json +243 -0
  316. package/esm/test/mocks/Saml2Ops/importSaml2Provider/iSPAzure.saml.json +242 -0
  317. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPAzure.saml.json +454 -0
  318. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPBroadcom.saml.json +586 -0
  319. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idc.scheuber.ioamsaml2IDPFedlet.saml.json +241 -0
  320. package/esm/test/mocks/Saml2Ops/importSaml2Provider/idp.saml.json +185 -0
  321. package/esm/test/mocks/Saml2Ops/importSaml2Provider/saml.mytestrun.comsp.saml.json +101 -0
  322. package/esm/test/mocks/Saml2Ops/importSaml2Provider/sts.windows.net711ffa9c-5972-4713-ace3-688c9732614a.saml.json +113 -0
  323. package/esm/test/mocks/Saml2Ops/importSaml2Provider/urn:federation:MicrosoftOnline.saml.json +199 -0
  324. package/esm/test/mocks/Saml2Ops/importSaml2Provider/volkerDevSP.saml.json +212 -0
  325. package/esm/test/mocks/Saml2Ops/importSaml2Providers/allAlphaProviders.saml.json +2414 -0
  326. package/esm/test/mocks/ScriptApi/getScript/5b29c5b7-b161-4a42-a41f-d6c85316b951.json +13 -0
  327. package/esm/test/mocks/ScriptApi/getScript/85523e71-2d77-4577-b078-6f9674cc54e2.json +13 -0
  328. package/esm/test/mocks/ScriptApi/getScript/90c4eca5-05f0-42f5-b9bf-88b693eabbbd.json +13 -0
  329. package/esm/test/mocks/ServerInfoApi/getServerInfo/info.json +25 -0
  330. package/esm/test/mocks/ServerInfoApi/getServerVersionInfo/version.json +8 -0
  331. package/esm/utils/AutoSetupPolly.mjs +72 -0
  332. package/esm/utils/SetupJest.mjs +3 -0
  333. package/esm/{test/mocks → utils}/snapshotResolve.mjs +10 -12
  334. package/package.json +38 -27
  335. package/types/api/AgentApi.d.ts.map +1 -1
  336. package/types/api/ApiTypes.d.ts +19 -15
  337. package/types/api/ApiTypes.d.ts.map +1 -1
  338. package/types/api/AuthenticateApi.d.ts +1 -1
  339. package/types/api/AuthenticateApi.d.ts.map +1 -1
  340. package/types/api/BaseApi.d.ts +2 -0
  341. package/types/api/BaseApi.d.ts.map +1 -1
  342. package/types/api/CirclesOfTrustApi.d.ts.map +1 -1
  343. package/types/api/IdmConfigApi.d.ts.map +1 -1
  344. package/types/api/LogApi.d.ts.map +1 -1
  345. package/types/api/ManagedObjectApi.d.ts +9 -1
  346. package/types/api/ManagedObjectApi.d.ts.map +1 -1
  347. package/types/api/NodeApi.d.ts.map +1 -1
  348. package/types/api/OAuth2ClientApi.d.ts.map +1 -1
  349. package/types/api/OAuth2OIDCApi.d.ts +4 -2
  350. package/types/api/OAuth2OIDCApi.d.ts.map +1 -1
  351. package/types/api/OAuth2ProviderApi.d.ts.map +1 -1
  352. package/types/api/RealmApi.d.ts.map +1 -1
  353. package/types/api/Saml2Api.d.ts +7 -13
  354. package/types/api/Saml2Api.d.ts.map +1 -1
  355. package/types/api/ScriptApi.d.ts.map +1 -1
  356. package/types/api/SecretsApi.d.ts.map +1 -1
  357. package/types/api/ServerInfoApi.d.ts.map +1 -1
  358. package/types/api/ServiceApi.d.ts +14 -7
  359. package/types/api/ServiceApi.d.ts.map +1 -1
  360. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -1
  361. package/types/api/StartupApi.d.ts.map +1 -1
  362. package/types/api/TreeApi.d.ts.map +1 -1
  363. package/types/api/VariablesApi.d.ts.map +1 -1
  364. package/types/api/utils/ApiUtils.d.ts +1 -0
  365. package/types/api/utils/ApiUtils.d.ts.map +1 -1
  366. package/types/api/utils/Base64.d.ts +1 -0
  367. package/types/api/utils/Base64.d.ts.map +1 -1
  368. package/types/index.d.ts +11 -5
  369. package/types/index.d.ts.map +1 -1
  370. package/types/ops/AgentOps.d.ts +1 -1
  371. package/types/ops/AgentOps.d.ts.map +1 -1
  372. package/types/ops/AuthenticateOps.d.ts +10 -2
  373. package/types/ops/AuthenticateOps.d.ts.map +1 -1
  374. package/types/ops/ConnectionProfileOps.d.ts +49 -21
  375. package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
  376. package/types/ops/EmailTemplateOps.d.ts +14 -33
  377. package/types/ops/EmailTemplateOps.d.ts.map +1 -1
  378. package/types/ops/IdmOps.d.ts +29 -37
  379. package/types/ops/IdmOps.d.ts.map +1 -1
  380. package/types/ops/JoseOps.d.ts +33 -0
  381. package/types/ops/JoseOps.d.ts.map +1 -0
  382. package/types/ops/JourneyOps.d.ts.map +1 -1
  383. package/types/ops/LogOps.d.ts.map +1 -1
  384. package/types/ops/NodeOps.d.ts.map +1 -1
  385. package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
  386. package/types/ops/OpsTypes.d.ts +17 -1
  387. package/types/ops/OpsTypes.d.ts.map +1 -1
  388. package/types/ops/OrganizationOps.d.ts.map +1 -1
  389. package/types/ops/Saml2Ops.d.ts +52 -55
  390. package/types/ops/Saml2Ops.d.ts.map +1 -1
  391. package/types/ops/ScriptOps.d.ts.map +1 -1
  392. package/types/ops/ServiceAccountOps.d.ts +20 -0
  393. package/types/ops/ServiceAccountOps.d.ts.map +1 -0
  394. package/types/ops/ServiceOps.d.ts +18 -10
  395. package/types/ops/ServiceOps.d.ts.map +1 -1
  396. package/types/ops/ThemeOps.d.ts +35 -50
  397. package/types/ops/ThemeOps.d.ts.map +1 -1
  398. package/types/ops/utils/Console.d.ts +1 -1
  399. package/types/ops/utils/Console.d.ts.map +1 -1
  400. package/types/ops/utils/DataProtection.d.ts.map +1 -1
  401. package/types/ops/utils/ExportImportUtils.d.ts +5 -2
  402. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
  403. package/types/ops/utils/OpsUtils.d.ts +6 -0
  404. package/types/ops/utils/OpsUtils.d.ts.map +1 -1
  405. package/types/ops/utils/Wordwrap.d.ts.map +1 -1
  406. package/types/shared/State.d.ts +223 -0
  407. package/types/shared/State.d.ts.map +1 -0
  408. package/types/test/mocks/ForgeRockApiMockEngine.d.ts +21 -1
  409. package/types/test/mocks/ForgeRockApiMockEngine.d.ts.map +1 -1
  410. package/types/utils/AutoSetupPolly.d.ts +1 -0
  411. package/types/utils/AutoSetupPolly.d.ts.map +1 -0
  412. package/types/utils/SetupJest.d.ts +1 -0
  413. package/types/utils/SetupJest.d.ts.map +1 -0
  414. package/types/utils/snapshotResolve.d.ts +1 -0
  415. package/types/utils/snapshotResolve.d.ts.map +1 -0
  416. package/cjs/api/EmailTemplateApi.js +0 -73
  417. package/cjs/api/EmailTemplateApi.js.map +0 -1
  418. package/cjs/api/ThemeApi.js +0 -367
  419. package/cjs/api/ThemeApi.js.map +0 -1
  420. package/cjs/api/ThemeApi.test.js.map +0 -1
  421. package/cjs/storage/SessionStorage.js +0 -91
  422. package/cjs/storage/SessionStorage.js.map +0 -1
  423. package/cjs/test/mocks/snapshotResolve.js.map +0 -1
  424. package/esm/api/EmailTemplateApi.mjs +0 -34
  425. package/esm/api/ThemeApi.mjs +0 -271
  426. package/esm/storage/SessionStorage.mjs +0 -79
  427. package/types/api/EmailTemplateApi.d.ts +0 -22
  428. package/types/api/EmailTemplateApi.d.ts.map +0 -1
  429. package/types/api/ThemeApi.d.ts +0 -56
  430. package/types/api/ThemeApi.d.ts.map +0 -1
  431. package/types/storage/SessionStorage.d.ts +0 -71
  432. package/types/storage/SessionStorage.d.ts.map +0 -1
  433. package/types/test/mocks/snapshotResolve.d.ts +0 -1
  434. package/types/test/mocks/snapshotResolve.d.ts.map +0 -1
@@ -1,32 +1,48 @@
1
1
  import util from 'util';
2
2
  import { generateIdmApi } from './BaseApi';
3
3
  import { getTenantURL } from './utils/ApiUtils';
4
- import storage from '../storage/SessionStorage';
4
+ import * as state from '../shared/State';
5
5
  const managedObjectURLTemplate = '%s/openidm/managed/%s';
6
+ const createManagedObjectURLTemplate = '%s/openidm/managed/%s?_action=create';
6
7
  const managedObjectByIdURLTemplate = '%s/openidm/managed/%s/%s';
7
8
  const managedObjectQueryAllURLTemplate = `${managedObjectURLTemplate}?_queryFilter=true&_pageSize=10000`;
9
+
8
10
  /**
9
11
  * Get managed object
10
12
  * @param {String} id managed object id
11
13
  * @returns {Promise} a promise that resolves to an object containing a managed object
12
14
  */
13
-
14
15
  export async function getManagedObject(type, id, fields) {
15
16
  const fieldsParam = fields.length > 0 ? `_fields=${fields.join(',')}` : '_fields=*';
16
- const urlString = util.format(`${managedObjectByIdURLTemplate}?${fieldsParam}`, getTenantURL(storage.session.getTenant()), type, id);
17
+ const urlString = util.format(`${managedObjectByIdURLTemplate}?${fieldsParam}`, getTenantURL(state.getHost()), type, id);
17
18
  return generateIdmApi().get(urlString);
18
19
  }
20
+
21
+ /**
22
+ * Create managed object with server-generated id
23
+ * @param {string} moType managed object type
24
+ * @param {any} moData managed object data
25
+ * @returns {Promise<ObjectSkeletonInterface>} a promise that resolves to an object containing a managed object
26
+ */
27
+ export async function createManagedObject(moType, moData) {
28
+ const urlString = util.format(createManagedObjectURLTemplate, getTenantURL(state.getHost()), moType);
29
+ const {
30
+ data
31
+ } = await generateIdmApi().post(urlString, moData);
32
+ return data;
33
+ }
34
+
19
35
  /**
20
- * Put managed object
36
+ * Create or update managed object
21
37
  * @param {String} id managed object id
22
38
  * @param {String} data managed object
23
39
  * @returns {Promise} a promise that resolves to an object containing a managed object
24
40
  */
25
-
26
41
  export async function putManagedObject(type, id, data) {
27
- const urlString = util.format(managedObjectByIdURLTemplate, getTenantURL(storage.session.getTenant()), type, id);
42
+ const urlString = util.format(managedObjectByIdURLTemplate, getTenantURL(state.getHost()), type, id);
28
43
  return generateIdmApi().put(urlString, data);
29
44
  }
45
+
30
46
  /**
31
47
  * Query managed objects
32
48
  * @param {String} type managed object type
@@ -34,11 +50,10 @@ export async function putManagedObject(type, id, data) {
34
50
  * @param {String} pageCookie paged results cookie
35
51
  * @returns {Promise} a promise that resolves to an object containing managed objects of the desired type
36
52
  */
37
-
38
53
  export async function queryAllManagedObjectsByType(type, fields, pageCookie) {
39
54
  const fieldsParam = fields.length > 0 ? `&_fields=${fields.join(',')}` : '&_fields=_id';
40
55
  const urlTemplate = pageCookie ? `${managedObjectQueryAllURLTemplate}${fieldsParam}&_pagedResultsCookie=${pageCookie}` : `${managedObjectQueryAllURLTemplate}${fieldsParam}`;
41
- const urlString = util.format(urlTemplate, getTenantURL(storage.session.getTenant()), type);
56
+ const urlString = util.format(urlTemplate, getTenantURL(state.getHost()), type);
42
57
  return generateIdmApi().get(urlString);
43
58
  }
44
59
  //# sourceMappingURL=ManagedObjectApi.js.map
@@ -1,13 +1,12 @@
1
1
  import util from 'util';
2
2
  import { deleteDeepByKey, getCurrentRealmPath } from './utils/ApiUtils';
3
3
  import { generateAmApi } from './BaseApi';
4
- import storage from '../storage/SessionStorage';
4
+ import * as state from '../shared/State';
5
5
  const queryAllNodeTypesURLTemplate = '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes';
6
6
  const queryAllNodesByTypeURLTemplate = '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_queryFilter=true';
7
7
  const queryAllNodesURLTemplate = '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=nextdescendents';
8
8
  const nodeURLTemplate = '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s/%s';
9
9
  const apiVersion = 'protocol=2.1,resource=1.0';
10
-
11
10
  const getNodeApiConfig = () => {
12
11
  const configPath = getCurrentRealmPath();
13
12
  return {
@@ -15,14 +14,13 @@ const getNodeApiConfig = () => {
15
14
  apiVersion
16
15
  };
17
16
  };
17
+
18
18
  /**
19
19
  * Get all node types
20
20
  * @returns {Promise} a promise that resolves to an array of node type objects
21
21
  */
22
-
23
-
24
22
  export async function getNodeTypes() {
25
- const urlString = util.format(queryAllNodeTypesURLTemplate, storage.session.getTenant(), getCurrentRealmPath());
23
+ const urlString = util.format(queryAllNodeTypesURLTemplate, state.getHost(), getCurrentRealmPath());
26
24
  const {
27
25
  data
28
26
  } = await generateAmApi(getNodeApiConfig()).post(urlString, {}, {
@@ -33,13 +31,13 @@ export async function getNodeTypes() {
33
31
  });
34
32
  return data;
35
33
  }
34
+
36
35
  /**
37
36
  * Get all nodes
38
37
  * @returns {Promise} a promise that resolves to an object containing an array of node objects
39
38
  */
40
-
41
39
  export async function getNodes() {
42
- const urlString = util.format(queryAllNodesURLTemplate, storage.session.getTenant(), getCurrentRealmPath());
40
+ const urlString = util.format(queryAllNodesURLTemplate, state.getHost(), getCurrentRealmPath());
43
41
  const {
44
42
  data
45
43
  } = await generateAmApi(getNodeApiConfig()).post(urlString, {}, {
@@ -50,14 +48,14 @@ export async function getNodes() {
50
48
  });
51
49
  return data;
52
50
  }
51
+
53
52
  /**
54
53
  * Get all nodes by type
55
54
  * @param {string} nodeType node type
56
55
  * @returns {Promise} a promise that resolves to an object containing an array of node objects of the requested type
57
56
  */
58
-
59
57
  export async function getNodesByType(nodeType) {
60
- const urlString = util.format(queryAllNodesByTypeURLTemplate, storage.session.getTenant(), getCurrentRealmPath(), nodeType);
58
+ const urlString = util.format(queryAllNodesByTypeURLTemplate, state.getHost(), getCurrentRealmPath(), nodeType);
61
59
  const {
62
60
  data
63
61
  } = await generateAmApi(getNodeApiConfig()).get(urlString, {
@@ -65,15 +63,15 @@ export async function getNodesByType(nodeType) {
65
63
  });
66
64
  return data;
67
65
  }
66
+
68
67
  /**
69
68
  * Get node by uuid and type
70
69
  * @param {String} nodeId node uuid
71
70
  * @param {String} nodeType node type
72
71
  * @returns {Promise} a promise that resolves to a node object
73
72
  */
74
-
75
73
  export async function getNode(nodeId, nodeType) {
76
- const urlString = util.format(nodeURLTemplate, storage.session.getTenant(), getCurrentRealmPath(), nodeType, nodeId);
74
+ const urlString = util.format(nodeURLTemplate, state.getHost(), getCurrentRealmPath(), nodeType, nodeId);
77
75
  const {
78
76
  data
79
77
  } = await generateAmApi(getNodeApiConfig()).get(urlString, {
@@ -81,6 +79,7 @@ export async function getNode(nodeId, nodeType) {
81
79
  });
82
80
  return data;
83
81
  }
82
+
84
83
  /**
85
84
  * Put node by uuid and type
86
85
  * @param {String} nodeId node uuid
@@ -88,12 +87,11 @@ export async function getNode(nodeId, nodeType) {
88
87
  * @param {Object} nodeData node object
89
88
  * @returns {Promise} a promise that resolves to an object containing a node object
90
89
  */
91
-
92
90
  export async function putNode(nodeId, nodeType, nodeData) {
93
91
  // until we figure out a way to use transport keys in Frodo,
94
92
  // we'll have to drop those encrypted attributes.
95
93
  const cleanData = deleteDeepByKey(nodeData, '-encrypted');
96
- const urlString = util.format(nodeURLTemplate, storage.session.getTenant(), getCurrentRealmPath(), nodeType, nodeId);
94
+ const urlString = util.format(nodeURLTemplate, state.getHost(), getCurrentRealmPath(), nodeType, nodeId);
97
95
  const {
98
96
  data
99
97
  } = await generateAmApi(getNodeApiConfig()).put(urlString, cleanData, {
@@ -101,15 +99,15 @@ export async function putNode(nodeId, nodeType, nodeData) {
101
99
  });
102
100
  return data;
103
101
  }
102
+
104
103
  /**
105
104
  * Delete node by uuid and type
106
105
  * @param {String} nodeId node uuid
107
106
  * @param {String} nodeType node type
108
107
  * @returns {Promise} a promise that resolves to an object containing a node object
109
108
  */
110
-
111
109
  export async function deleteNode(nodeId, nodeType) {
112
- const urlString = util.format(nodeURLTemplate, storage.session.getTenant(), getCurrentRealmPath(), nodeType, nodeId);
110
+ const urlString = util.format(nodeURLTemplate, state.getHost(), getCurrentRealmPath(), nodeType, nodeId);
113
111
  const {
114
112
  data
115
113
  } = await generateAmApi(getNodeApiConfig()).delete(urlString, {
@@ -4,21 +4,19 @@ import { NodeRaw, state } from '../index';
4
4
  import fs from 'fs';
5
5
  import path from 'path';
6
6
  import { fileURLToPath } from 'url';
7
-
8
7
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
-
10
8
  const mock = new MockAdapter(axios);
11
- state.default.session.setTenant('');
12
- state.default.session.setRealm('alpha');
13
- state.default.session.setCookieName('cookieName');
14
- state.default.session.setCookieValue('cookieValue');
9
+ state.setHost('');
10
+ state.setRealm('alpha');
11
+ state.setCookieName('cookieName');
12
+ state.setCookieValue('cookieValue');
15
13
  describe('NodeApi - getNodeTypes()', () => {
16
14
  test('getNodeTypes() 0: Method is implemented', async () => {
17
15
  expect(NodeRaw.getNodeTypes).toBeDefined();
18
16
  });
19
17
  test('getNodeTypes() 1: Get all node types', async () => {
20
18
  const response = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../test/mocks/NodeApi/getNodeTypes/types.json'), 'utf8'));
21
- mock.onPost('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes').reply(200, response);
19
+ mock.onPost(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes`).reply(200, response);
22
20
  const types = await NodeRaw.getNodeTypes();
23
21
  expect(types).toBeTruthy();
24
22
  expect(types.result.length).toBe(99);
@@ -829,7 +827,7 @@ describe('NodeApi - getNodes()', () => {
829
827
  }]
830
828
  }]
831
829
  };
832
- mock.onPost('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes?_action=nextdescendents').reply(200, response);
830
+ mock.onPost(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes?_action=nextdescendents`).reply(200, response);
833
831
  const nodes = await NodeRaw.getNodes();
834
832
  expect(nodes).toBeTruthy();
835
833
  expect(nodes.result.length).toBe(48);
@@ -841,7 +839,7 @@ describe('NodeApi - getNodesByType()', () => {
841
839
  });
842
840
  test('getNodesByType() 1: Get all page nodes', async () => {
843
841
  const response = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../test/mocks/NodeApi/getNodesByType/PageNode.json'), 'utf8'));
844
- mock.onGet('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode?_queryFilter=true').reply(200, response);
842
+ mock.onGet(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode?_queryFilter=true`).reply(200, response);
845
843
  const nodes = await NodeRaw.getNodesByType('PageNode');
846
844
  expect(nodes).toBeTruthy();
847
845
  expect(nodes.result.length).toBe(161);
@@ -853,19 +851,18 @@ describe('NodeApi - getNode()', () => {
853
851
  });
854
852
  test('getNode() 1: Get existing page node [1aea363f-d8d2-4711-b88d-d58fff92dbae]', async () => {
855
853
  const response = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../test/mocks/NodeApi/getNode/PageNode_1aea363f-d8d2-4711-b88d-d58fff92dbae.json'), 'utf8'));
856
- mock.onGet('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/1aea363f-d8d2-4711-b88d-d58fff92dbae').reply(200, response);
854
+ mock.onGet(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/1aea363f-d8d2-4711-b88d-d58fff92dbae`).reply(200, response);
857
855
  const node = await NodeRaw.getNode('1aea363f-d8d2-4711-b88d-d58fff92dbae', 'PageNode');
858
856
  expect(node).toBeTruthy();
859
857
  expect(node).toMatchObject(response);
860
858
  });
861
859
  test('getNode() 2: Get non-existing page node [00000000-0000-0000-0000-000000000000]', async () => {
862
- mock.onGet('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/00000000-0000-0000-0000-000000000000').reply(404, {
860
+ mock.onGet(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/00000000-0000-0000-0000-000000000000`).reply(404, {
863
861
  code: 404,
864
862
  reason: 'Not Found',
865
863
  message: 'Not Found'
866
864
  });
867
865
  expect.assertions(2);
868
-
869
866
  try {
870
867
  await NodeRaw.getNode('00000000-0000-0000-0000-000000000000', 'PageNode');
871
868
  } catch (error) {
@@ -884,14 +881,14 @@ describe('NodeApi - putNode()', () => {
884
881
  });
885
882
  test('putNode() 1: Create page node [0ad90971-d08a-4af3-86f3-01729572dc8f]', async () => {
886
883
  const nodeData = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../test/mocks/NodeApi/putNode/PageNode_0ad90971-d08a-4af3-86f3-01729572dc8f.json'), 'utf8'));
887
- mock.onPut('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/0ad90971-d08a-4af3-86f3-01729572dc8f').reply(201, nodeData);
884
+ mock.onPut(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/0ad90971-d08a-4af3-86f3-01729572dc8f`).reply(201, nodeData);
888
885
  const node = await NodeRaw.putNode('0ad90971-d08a-4af3-86f3-01729572dc8f', 'PageNode', nodeData);
889
886
  expect(node).toBeTruthy();
890
887
  expect(node).toMatchObject(nodeData);
891
888
  });
892
889
  test('putNode() 1: Update existing page node [1aea363f-d8d2-4711-b88d-d58fff92dbae]', async () => {
893
890
  const nodeData = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../test/mocks/NodeApi/putNode/PageNode_1aea363f-d8d2-4711-b88d-d58fff92dbae.json'), 'utf8'));
894
- mock.onPut('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/1aea363f-d8d2-4711-b88d-d58fff92dbae').reply(200, nodeData);
891
+ mock.onPut(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/1aea363f-d8d2-4711-b88d-d58fff92dbae`).reply(200, nodeData);
895
892
  const node = await NodeRaw.putNode('1aea363f-d8d2-4711-b88d-d58fff92dbae', 'PageNode', nodeData);
896
893
  expect(node).toBeTruthy();
897
894
  expect(node).toMatchObject(nodeData);
@@ -903,19 +900,18 @@ describe('NodeApi - deleteNode()', () => {
903
900
  });
904
901
  test('deleteNode() 1: Delete existing node [1aea363f-d8d2-4711-b88d-d58fff92dbae]', async () => {
905
902
  const response = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../test/mocks/NodeApi/deleteNode/PageNode_1aea363f-d8d2-4711-b88d-d58fff92dbae.json'), 'utf8'));
906
- mock.onDelete('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/1aea363f-d8d2-4711-b88d-d58fff92dbae').reply(200, response);
903
+ mock.onDelete(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/1aea363f-d8d2-4711-b88d-d58fff92dbae`).reply(200, response);
907
904
  const node = await NodeRaw.deleteNode('1aea363f-d8d2-4711-b88d-d58fff92dbae', 'PageNode');
908
905
  expect(node).toBeTruthy();
909
906
  expect(node._id).toEqual('1aea363f-d8d2-4711-b88d-d58fff92dbae');
910
907
  });
911
908
  test('deleteNode() 2: Delete non-existing node [00000000-0000-0000-0000-000000000000]', async () => {
912
- mock.onDelete('/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/00000000-0000-0000-0000-000000000000').reply(404, {
909
+ mock.onDelete(`${state.getHost()}/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/PageNode/00000000-0000-0000-0000-000000000000`).reply(404, {
913
910
  code: 404,
914
911
  reason: 'Not Found',
915
912
  message: 'Not Found'
916
913
  });
917
914
  expect.assertions(2);
918
-
919
915
  try {
920
916
  await NodeRaw.deleteNode('00000000-0000-0000-0000-000000000000', 'PageNode');
921
917
  } catch (error) {
@@ -1,11 +1,10 @@
1
1
  import util from 'util';
2
2
  import { generateAmApi } from './BaseApi';
3
3
  import { deleteDeepByKey, getCurrentRealmPath } from './utils/ApiUtils';
4
- import storage from '../storage/SessionStorage';
4
+ import * as state from '../shared/State';
5
5
  const oauth2ClientURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client/%s';
6
6
  const oauth2ClientListURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client?_queryFilter=true';
7
7
  const apiVersion = 'protocol=2.1,resource=1.0';
8
-
9
8
  const getApiConfig = () => {
10
9
  const configPath = getCurrentRealmPath();
11
10
  return {
@@ -13,44 +12,43 @@ const getApiConfig = () => {
13
12
  apiVersion
14
13
  };
15
14
  };
15
+
16
16
  /**
17
17
  * Get OAuth2 Clients
18
18
  * @returns {Promise} a promise that resolves to an object containing an array of oauth2client objects
19
19
  */
20
-
21
-
22
20
  export async function getOAuth2Clients() {
23
- const urlString = util.format(oauth2ClientListURLTemplate, storage.session.getTenant(), getCurrentRealmPath());
21
+ const urlString = util.format(oauth2ClientListURLTemplate, state.getHost(), getCurrentRealmPath());
24
22
  return generateAmApi(getApiConfig()).get(urlString, {
25
23
  withCredentials: true
26
24
  });
27
25
  }
26
+
28
27
  /**
29
28
  * Get OAuth2 Client
30
29
  * @param {String} id client id
31
30
  * @returns {Promise} a promise that resolves to an object containing an oauth2client object
32
31
  */
33
-
34
32
  export async function getOAuth2Client(id) {
35
- const urlString = util.format(oauth2ClientURLTemplate, storage.session.getTenant(), getCurrentRealmPath(), id);
33
+ const urlString = util.format(oauth2ClientURLTemplate, state.getHost(), getCurrentRealmPath(), id);
36
34
  return generateAmApi(getApiConfig()).get(urlString, {
37
35
  withCredentials: true
38
36
  });
39
37
  }
38
+
40
39
  /**
41
40
  * Put OAuth2 Client
42
41
  * @param {String} id client id
43
42
  * @param {Object} data oauth2client object
44
43
  * @returns {Promise} a promise that resolves to an object containing an oauth2client object
45
44
  */
46
-
47
45
  export async function putOAuth2Client(id, data) {
48
46
  // until we figure out a way to use transport keys in Frodo,
49
47
  // we'll have to drop those encrypted attributes.
50
48
  const client = deleteDeepByKey(data, '-encrypted');
51
49
  delete client._provider;
52
50
  delete client._rev;
53
- const urlString = util.format(oauth2ClientURLTemplate, storage.session.getTenant(), getCurrentRealmPath(), id);
51
+ const urlString = util.format(oauth2ClientURLTemplate, state.getHost(), getCurrentRealmPath(), id);
54
52
  return generateAmApi(getApiConfig()).put(urlString, client, {
55
53
  withCredentials: true
56
54
  });
@@ -2,38 +2,45 @@ import util from 'util';
2
2
  import qs from 'qs';
3
3
  import { generateOauth2Api } from './BaseApi';
4
4
  import { getCurrentRealmPath } from './utils/ApiUtils';
5
- import storage from '../storage/SessionStorage';
5
+ import * as state from '../shared/State';
6
6
  import { encode } from './utils/Base64';
7
7
  const authorizeUrlTemplate = '%s/oauth2%s/authorize';
8
8
  const accessTokenUrlTemplate = '%s/oauth2%s/access_token';
9
+ const tokenInfoUrlTemplate = '%s/oauth2%s/tokeninfo';
9
10
  const apiVersion = 'protocol=2.1,resource=1.0';
10
-
11
11
  const getApiConfig = () => ({
12
12
  apiVersion
13
13
  });
14
+
14
15
  /**
15
16
  * Perform the authorization step of the authorization code grant flow
16
17
  * @param {String} data body form data
17
18
  * @param {Object} config axios request config object
18
19
  * @returns {Promise} a promise resolving to an object containing the authorization server response object
19
20
  */
20
-
21
-
22
21
  export async function authorize(data, config = {}) {
23
- const authorizeURL = util.format(authorizeUrlTemplate, storage.session.getTenant(), '');
22
+ const authorizeURL = util.format(authorizeUrlTemplate, state.getHost(), '');
24
23
  return generateOauth2Api(getApiConfig()).post(authorizeURL, data, config);
25
24
  }
25
+
26
26
  /**
27
27
  * Perform access token request step of the authorization code grant flow
28
28
  * @param {*} data body form data
29
29
  * @param {*} config config axios request config object
30
30
  * @returns {Promise} a promise resolving to an object containing the authorization server response object containing the access token
31
31
  */
32
-
33
32
  export async function accessToken(data, config = {}) {
34
- const accessTokenURL = util.format(accessTokenUrlTemplate, storage.session.getTenant(), '');
33
+ const accessTokenURL = util.format(accessTokenUrlTemplate, state.getHost(), '');
35
34
  return generateOauth2Api(getApiConfig()).post(accessTokenURL, data, config);
36
35
  }
36
+ export async function getTokenInfo(config = {}) {
37
+ const accessTokenURL = util.format(tokenInfoUrlTemplate, state.getHost(), '');
38
+ const {
39
+ data
40
+ } = await generateOauth2Api(getApiConfig()).get(accessTokenURL, config);
41
+ return data;
42
+ }
43
+
37
44
  /**
38
45
  * Perform client credentials grant flow
39
46
  * @param {String} clientId client id
@@ -41,9 +48,8 @@ export async function accessToken(data, config = {}) {
41
48
  * @param {String} scope space-delimited scope list
42
49
  * @returns {Promise} a promise resolving to an object containing the authorization server response object
43
50
  */
44
-
45
51
  export async function clientCredentialsGrant(clientId, clientSecret, scope) {
46
- const urlString = util.format(accessTokenUrlTemplate, storage.session.getTenant(), getCurrentRealmPath());
52
+ const urlString = util.format(accessTokenUrlTemplate, state.getHost(), getCurrentRealmPath());
47
53
  const requestOverride = {
48
54
  headers: {
49
55
  Authorization: `Basic ${encode(`${clientId}:${clientSecret}`)}`,
@@ -0,0 +1,53 @@
1
+ import axios from 'axios';
2
+ import MockAdapter from 'axios-mock-adapter';
3
+ import { OAuth2OIDCApi, state } from '../index';
4
+ import * as global from '../storage/StaticStorage';
5
+ import { mockAuthorize, mockAccessToken } from '../test/mocks/ForgeRockApiMockEngine';
6
+ import { parseUrl } from './utils/ApiUtils';
7
+ const mock = new MockAdapter(axios);
8
+ state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
9
+ state.setRealm('alpha');
10
+ state.setCookieName('cookieName');
11
+ state.setCookieValue('cookieValue');
12
+ state.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);
13
+ describe.only('OAuth2OIDCApi - authorize()', () => {
14
+ test('authorize() 0: Method is implemented', async () => {
15
+ expect(OAuth2OIDCApi.authorize).toBeDefined();
16
+ });
17
+ test('authorize() 1: Get authorization code', async () => {
18
+ mockAuthorize(mock);
19
+ const bodyFormData = 'redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idmAdminClient&csrf=763l9tYj7oSimiLGWmlDWOXE0A0.*AAJTSQACMDIAAlNLABw1bXppOGZDVGwzblJnNkJlY08ydFZtWWtvbjQ9AAR0eXBlAANDVFMAAlMxAAIwMQ..*&decision=allow&code_challenge=l_UNfjLP_eRKwLtvM2M86PxhF2pZyYp629TfJUqDNHY&code_challenge_method=S256';
20
+ const config = {
21
+ headers: {
22
+ 'Content-Type': 'application/x-www-form-urlencoded'
23
+ },
24
+ validateStatus: function (status) {
25
+ // if this function returns true, no exception is thrown on a 302, which is the expected status code.
26
+ return status === 302;
27
+ }
28
+ };
29
+ const response = await OAuth2OIDCApi.authorize(bodyFormData, config);
30
+ const redirectLocationURL = response.headers['location'];
31
+ const parsed = parseUrl(redirectLocationURL);
32
+ expect(response.status).toBe(302);
33
+ expect(parsed.searchParam['code']).toBeTruthy();
34
+ });
35
+ });
36
+ describe.only('OAuth2OIDCApi - accessToken()', () => {
37
+ test('accessToken() 0: Method is implemented', async () => {
38
+ expect(OAuth2OIDCApi.accessToken).toBeDefined();
39
+ });
40
+ test('accessToken() 1: Get access token', async () => {
41
+ mockAccessToken(mock);
42
+ const bodyFormData = 'grant_type=authorization_code&code=PMA6VB9U_Ctiv6q8CAGphy_1vwQ&redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&code_verifier=QchYMz4ApoxmyZaFs0MJwZK9rmc8WU-kuoi3JM--CZq7-LmmtxB6_Lf0AtmumFFdOxY&client_id=idmAdminClient';
43
+ const config = {
44
+ headers: {
45
+ 'Content-Type': 'application/x-www-form-urlencoded'
46
+ }
47
+ };
48
+ const response = await OAuth2OIDCApi.accessToken(bodyFormData, config);
49
+ expect(response.status).toBe(200);
50
+ expect(response.data.access_token).toBeTruthy();
51
+ });
52
+ });
53
+ //# sourceMappingURL=OAuth2OIDCApi.test.js.map
@@ -1,10 +1,9 @@
1
1
  import util from 'util';
2
2
  import { generateAmApi } from './BaseApi';
3
3
  import { getCurrentRealmPath } from './utils/ApiUtils';
4
- import storage from '../storage/SessionStorage';
4
+ import * as state from '../shared/State';
5
5
  const oauthProviderServiceURLTemplate = '%s/json%s/realm-config/services/oauth-oidc';
6
6
  const apiVersion = 'protocol=2.1,resource=1.0';
7
-
8
7
  const getApiConfig = () => {
9
8
  const configPath = getCurrentRealmPath();
10
9
  return {
@@ -12,14 +11,13 @@ const getApiConfig = () => {
12
11
  apiVersion
13
12
  };
14
13
  };
14
+
15
15
  /**
16
16
  * Get OAuth2 Provider
17
17
  * @returns {Promise} a promise that resolves to an object containing an OAuth2Provider object
18
18
  */
19
-
20
-
21
19
  export async function getOAuth2Provider() {
22
- const urlString = util.format(oauthProviderServiceURLTemplate, storage.session.getTenant(), getCurrentRealmPath());
20
+ const urlString = util.format(oauthProviderServiceURLTemplate, state.getHost(), getCurrentRealmPath());
23
21
  return generateAmApi(getApiConfig()).get(urlString, {
24
22
  withCredentials: true
25
23
  });
@@ -1,11 +1,10 @@
1
1
  import util from 'util';
2
2
  import { getTenantURL, getCurrentRealmPath, getRealmName } from './utils/ApiUtils';
3
3
  import { generateAmApi } from './BaseApi';
4
- import storage from '../storage/SessionStorage';
4
+ import * as state from '../shared/State';
5
5
  const realmsListURLTemplate = '%s/json/global-config/realms/?_queryFilter=true';
6
6
  const realmURLTemplate = '%s/json/global-config/realms/%s';
7
7
  const apiVersion = 'protocol=2.0,resource=1.0';
8
-
9
8
  const getApiConfig = () => {
10
9
  const configPath = getCurrentRealmPath();
11
10
  return {
@@ -13,36 +12,35 @@ const getApiConfig = () => {
13
12
  apiVersion
14
13
  };
15
14
  };
15
+
16
16
  /**
17
17
  * Get all realms
18
18
  * @returns {Promise} a promise that resolves to an object containing an array of realm objects
19
19
  */
20
-
21
-
22
20
  export async function getRealms() {
23
- const urlString = util.format(realmsListURLTemplate, storage.session.getTenant());
21
+ const urlString = util.format(realmsListURLTemplate, state.getHost());
24
22
  return generateAmApi(getApiConfig()).get(urlString, {
25
23
  withCredentials: true
26
24
  });
27
25
  }
26
+
28
27
  /**
29
28
  * Get realm by id
30
29
  * @param {String} id realm id
31
30
  * @returns {Promise} a promise that resolves to an object containing a realm object
32
31
  */
33
-
34
32
  export async function getRealm(id) {
35
- const urlString = util.format(realmURLTemplate, storage.session.getTenant(), id);
33
+ const urlString = util.format(realmURLTemplate, state.getHost(), id);
36
34
  return generateAmApi(getApiConfig()).get(urlString, {
37
35
  withCredentials: true
38
36
  });
39
37
  }
38
+
40
39
  /**
41
40
  * Get realm by name
42
41
  * @param {String} name realm name
43
42
  * @returns {Promise} a promise that resolves to a realm object
44
43
  */
45
-
46
44
  export async function getRealmByName(name) {
47
45
  return getRealms().then(realms => {
48
46
  for (const realm of realms.data.result) {
@@ -50,31 +48,30 @@ export async function getRealmByName(name) {
50
48
  return realm;
51
49
  }
52
50
  }
53
-
54
51
  throw new Error(`Realm ${name} not found!`);
55
52
  });
56
53
  }
54
+
57
55
  /**
58
56
  * Put realm
59
57
  * @param {String} id realm id
60
58
  * @param {Object} data realm config object
61
59
  * @returns {Promise} a promise that resolves to an object containing a realm object
62
60
  */
63
-
64
61
  export async function putRealm(id, data) {
65
- const urlString = util.format(realmURLTemplate, storage.session.getTenant(), id);
62
+ const urlString = util.format(realmURLTemplate, state.getHost(), id);
66
63
  return generateAmApi(getApiConfig()).put(urlString, data, {
67
64
  withCredentials: true
68
65
  });
69
66
  }
67
+
70
68
  /**
71
69
  * Delete realm
72
70
  * @param {String} id realm id
73
71
  * @returns {Promise} a promise that resolves to an object containing a realm object
74
72
  */
75
-
76
73
  export async function deleteRealm(id) {
77
- const urlString = util.format(realmURLTemplate, getTenantURL(storage.session.getTenant()), id);
74
+ const urlString = util.format(realmURLTemplate, getTenantURL(state.getHost()), id);
78
75
  return generateAmApi(getApiConfig()).delete(urlString, {
79
76
  withCredentials: true
80
77
  });