@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
@@ -3,8 +3,9 @@ import { getSocialIdentityProviders, putProviderByTypeAndId } from '../api/Socia
3
3
  import { getScript } from '../api/ScriptApi';
4
4
  import { createOrUpdateScript } from './ScriptOps';
5
5
  import { convertBase64TextToArray, convertTextArrayToBase64, getRealmString, getTypedFilename, saveJsonToFile, validateImport } from './utils/ExportImportUtils';
6
- import { printMessage, createProgressIndicator, updateProgressIndicator, stopProgressIndicator } from './utils/Console'; // use a function vs a template variable to avoid problems in loops
6
+ import { printMessage, createProgressIndicator, updateProgressIndicator, stopProgressIndicator } from './utils/Console';
7
7
 
8
+ // use a function vs a template variable to avoid problems in loops
8
9
  function getFileDataTemplate() {
9
10
  return {
10
11
  meta: {},
@@ -12,11 +13,10 @@ function getFileDataTemplate() {
12
13
  idp: {}
13
14
  };
14
15
  }
16
+
15
17
  /**
16
18
  * List providers
17
19
  */
18
-
19
-
20
20
  export async function listSocialProviders() {
21
21
  try {
22
22
  const providers = await getSocialIdentityProviders();
@@ -29,55 +29,47 @@ export async function listSocialProviders() {
29
29
  printMessage(err, 'error');
30
30
  }
31
31
  }
32
+
32
33
  /**
33
34
  * Get social identity provider by id
34
35
  * @param {String} providerId social identity provider id/name
35
36
  * @returns {Promise} a promise that resolves a social identity provider object
36
37
  */
37
-
38
38
  export async function getSocialProvider(providerId) {
39
39
  return getSocialIdentityProviders().then(response => {
40
40
  const foundProviders = response.result.filter(provider => provider._id === providerId);
41
-
42
41
  switch (foundProviders.length) {
43
42
  case 1:
44
43
  return foundProviders[0];
45
-
46
44
  case 0:
47
45
  throw new Error(`Provider '${providerId}' not found`);
48
-
49
46
  default:
50
47
  throw new Error(`${foundProviders.length} providers '${providerId}' found`);
51
48
  }
52
49
  });
53
50
  }
51
+
54
52
  /**
55
53
  * Export provider by id
56
54
  * @param {String} providerId provider id/name
57
55
  * @param {String} file optional export file name
58
56
  */
59
-
60
57
  export async function exportSocialProviderToFile(providerId, file = '') {
61
58
  let fileName = file;
62
-
63
59
  if (!fileName) {
64
60
  fileName = getTypedFilename(providerId, 'idp');
65
61
  }
66
-
67
62
  createProgressIndicator(1, `Exporting ${providerId}`);
68
-
69
63
  try {
70
64
  const idpData = await getSocialProvider(providerId);
71
65
  updateProgressIndicator(`Writing file ${fileName}`);
72
66
  const fileData = getFileDataTemplate();
73
67
  fileData.idp[idpData._id] = idpData;
74
-
75
68
  if (idpData.transform) {
76
69
  const scriptData = await getScript(idpData.transform);
77
70
  scriptData.script = convertBase64TextToArray(scriptData.script);
78
71
  fileData.script[idpData.transform] = scriptData;
79
72
  }
80
-
81
73
  saveJsonToFile(fileData, fileName);
82
74
  stopProgressIndicator(`Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`);
83
75
  } catch (err) {
@@ -85,26 +77,22 @@ export async function exportSocialProviderToFile(providerId, file = '') {
85
77
  printMessage(`${err}`, 'error');
86
78
  }
87
79
  }
80
+
88
81
  /**
89
82
  * Export all providers
90
83
  * @param {String} file optional export file name
91
84
  */
92
-
93
85
  export async function exportSocialProvidersToFile(file) {
94
86
  let fileName = file;
95
-
96
87
  if (!fileName) {
97
88
  fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');
98
89
  }
99
-
100
90
  const fileData = getFileDataTemplate();
101
91
  const allIdpsData = (await getSocialIdentityProviders()).result;
102
92
  createProgressIndicator(allIdpsData.length, 'Exporting providers');
103
-
104
93
  for (const idpData of allIdpsData) {
105
94
  updateProgressIndicator(`Exporting provider ${idpData._id}`);
106
95
  fileData.idp[idpData._id] = idpData;
107
-
108
96
  if (idpData.transform) {
109
97
  // eslint-disable-next-line no-await-in-loop
110
98
  const scriptData = await getScript(idpData.transform);
@@ -112,52 +100,45 @@ export async function exportSocialProvidersToFile(file) {
112
100
  fileData.script[idpData.transform] = scriptData;
113
101
  }
114
102
  }
115
-
116
103
  saveJsonToFile(fileData, fileName);
117
104
  stopProgressIndicator(`${allIdpsData.length} providers exported to ${fileName}.`);
118
105
  }
106
+
119
107
  /**
120
108
  * Export all providers to individual files
121
109
  */
122
-
123
110
  export async function exportSocialProvidersToFiles() {
124
- const allIdpsData = await (await getSocialIdentityProviders()).result; // printMessage(allIdpsData, 'data');
125
-
111
+ const allIdpsData = await (await getSocialIdentityProviders()).result;
112
+ // printMessage(allIdpsData, 'data');
126
113
  createProgressIndicator(allIdpsData.length, 'Exporting providers');
127
-
128
114
  for (const idpData of allIdpsData) {
129
115
  updateProgressIndicator(`Writing provider ${idpData._id}`);
130
116
  const fileName = getTypedFilename(idpData._id, 'idp');
131
117
  const fileData = getFileDataTemplate();
132
118
  fileData.idp[idpData._id] = idpData;
133
-
134
119
  if (idpData.transform) {
135
120
  // eslint-disable-next-line no-await-in-loop
136
121
  const scriptData = await getScript(idpData.transform);
137
122
  scriptData.script = convertBase64TextToArray(scriptData.script);
138
123
  fileData.script[idpData.transform] = scriptData;
139
124
  }
140
-
141
125
  saveJsonToFile(fileData, fileName);
142
126
  }
143
-
144
127
  stopProgressIndicator(`${allIdpsData.length} providers exported.`);
145
128
  }
129
+
146
130
  /**
147
131
  * Import provider by id/name
148
132
  * @param {String} providerId provider id/name
149
133
  * @param {String} file import file name
150
134
  */
151
-
152
135
  export async function importSocialProviderFromFile(providerId, file) {
153
136
  fs.readFile(file, 'utf8', async (err, data) => {
154
137
  if (err) throw err;
155
138
  const fileData = JSON.parse(data);
156
-
157
139
  if (validateImport(fileData.meta)) {
158
140
  createProgressIndicator(1, 'Importing provider...');
159
141
  let found = false;
160
-
161
142
  for (const idpId in fileData.idp) {
162
143
  if ({}.hasOwnProperty.call(fileData.idp, idpId)) {
163
144
  if (idpId === providerId) {
@@ -165,13 +146,11 @@ export async function importSocialProviderFromFile(providerId, file) {
165
146
  updateProgressIndicator(`Importing ${fileData.idp[idpId]._id}`);
166
147
  const scriptId = fileData.idp[idpId].transform;
167
148
  const scriptData = fileData.script[scriptId];
168
-
169
149
  if (scriptId && scriptData) {
170
- scriptData.script = convertTextArrayToBase64(scriptData.script); // eslint-disable-next-line no-await-in-loop
171
-
150
+ scriptData.script = convertTextArrayToBase64(scriptData.script);
151
+ // eslint-disable-next-line no-await-in-loop
172
152
  await createOrUpdateScript(fileData.idp[idpId].transform, fileData.script[fileData.idp[idpId].transform]);
173
153
  }
174
-
175
154
  putProviderByTypeAndId(fileData.idp[idpId]._type._id, idpId, fileData.idp[idpId]).then(() => {
176
155
  stopProgressIndicator(`Successfully imported provider ${providerId}.`);
177
156
  }).catch(importProviderErr => {
@@ -183,7 +162,6 @@ export async function importSocialProviderFromFile(providerId, file) {
183
162
  }
184
163
  }
185
164
  }
186
-
187
165
  if (!found) {
188
166
  stopProgressIndicator(`Provider ${providerId.brightCyan} not found in ${file.brightCyan}!`);
189
167
  }
@@ -192,31 +170,27 @@ export async function importSocialProviderFromFile(providerId, file) {
192
170
  }
193
171
  });
194
172
  }
173
+
195
174
  /**
196
175
  * Import first provider from file
197
176
  * @param {String} file import file name
198
177
  */
199
-
200
178
  export async function importFirstSocialProviderFromFile(file) {
201
179
  fs.readFile(file, 'utf8', async (err, data) => {
202
180
  if (err) throw err;
203
181
  const fileData = JSON.parse(data);
204
-
205
182
  if (validateImport(fileData.meta)) {
206
183
  createProgressIndicator(1, 'Importing provider...');
207
-
208
184
  for (const idpId in fileData.idp) {
209
185
  if ({}.hasOwnProperty.call(fileData.idp, idpId)) {
210
186
  updateProgressIndicator(`Importing ${fileData.idp[idpId]._id}`);
211
187
  const scriptId = fileData.idp[idpId].transform;
212
188
  const scriptData = fileData.script[scriptId];
213
-
214
189
  if (scriptId && scriptData) {
215
- scriptData.script = convertTextArrayToBase64(scriptData.script); // eslint-disable-next-line no-await-in-loop
216
-
190
+ scriptData.script = convertTextArrayToBase64(scriptData.script);
191
+ // eslint-disable-next-line no-await-in-loop
217
192
  await createOrUpdateScript(fileData.idp[idpId].transform, fileData.script[fileData.idp[idpId].transform]);
218
193
  }
219
-
220
194
  putProviderByTypeAndId(fileData.idp[idpId]._type._id, idpId, fileData.idp[idpId]).then(result => {
221
195
  if (result == null) {
222
196
  stopProgressIndicator(`Error importing provider ${fileData.idp[idpId]._id}`);
@@ -233,80 +207,68 @@ export async function importFirstSocialProviderFromFile(file) {
233
207
  }
234
208
  });
235
209
  }
210
+
236
211
  /**
237
212
  * Import all providers from file
238
213
  * @param {String} file import file name
239
214
  */
240
-
241
215
  export async function importSocialProvidersFromFile(file) {
242
216
  fs.readFile(file, 'utf8', async (err, data) => {
243
217
  if (err) throw err;
244
218
  const fileData = JSON.parse(data);
245
-
246
219
  if (validateImport(fileData.meta)) {
247
220
  createProgressIndicator(Object.keys(fileData.idp).length, 'Importing providers...');
248
-
249
221
  for (const idpId in fileData.idp) {
250
222
  if ({}.hasOwnProperty.call(fileData.idp, idpId)) {
251
223
  const scriptId = fileData.idp[idpId].transform;
252
224
  const scriptData = fileData.script[scriptId];
253
-
254
225
  if (scriptId && scriptData) {
255
- scriptData.script = convertTextArrayToBase64(scriptData.script); // eslint-disable-next-line no-await-in-loop
256
-
226
+ scriptData.script = convertTextArrayToBase64(scriptData.script);
227
+ // eslint-disable-next-line no-await-in-loop
257
228
  await createOrUpdateScript(fileData.idp[idpId].transform, fileData.script[fileData.idp[idpId].transform]);
258
- } // eslint-disable-next-line no-await-in-loop
259
-
260
-
229
+ }
230
+ // eslint-disable-next-line no-await-in-loop
261
231
  const result = await putProviderByTypeAndId(fileData.idp[idpId]._type._id, idpId, fileData.idp[idpId]);
262
-
263
232
  if (!result) {
264
233
  updateProgressIndicator(`Successfully imported ${fileData.idp[idpId].name}`);
265
234
  }
266
235
  }
267
236
  }
268
-
269
237
  stopProgressIndicator(`Providers imported.`);
270
238
  } else {
271
239
  printMessage('Import validation failed...', 'error');
272
240
  }
273
241
  });
274
242
  }
243
+
275
244
  /**
276
245
  * Import providers from *.idp.json files in current working directory
277
246
  */
278
-
279
247
  export async function importSocialProvidersFromFiles() {
280
248
  const names = fs.readdirSync('.');
281
249
  const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.idp.json'));
282
250
  createProgressIndicator(jsonFiles.length, 'Importing providers...');
283
251
  let total = 0;
284
-
285
252
  for (const file of jsonFiles) {
286
253
  const data = fs.readFileSync(file, 'utf8');
287
254
  const fileData = JSON.parse(data);
288
-
289
255
  if (validateImport(fileData.meta)) {
290
256
  const count = Object.keys(fileData.idp).length;
291
257
  total += count;
292
-
293
258
  for (const idpId in fileData.idp) {
294
259
  if ({}.hasOwnProperty.call(fileData.idp, idpId)) {
295
260
  // eslint-disable-next-line no-await-in-loop
296
261
  const result = await putProviderByTypeAndId(fileData.idp[idpId]._type._id, idpId, fileData.idp[idpId]);
297
-
298
262
  if (result == null) {
299
263
  printMessage(`Error importing ${count} providers from ${file}`, 'error');
300
264
  }
301
265
  }
302
266
  }
303
-
304
267
  updateProgressIndicator(`Imported ${count} provider(s) from ${file}`);
305
268
  } else {
306
269
  printMessage(`Validation of ${file} failed!`, 'error');
307
270
  }
308
271
  }
309
-
310
272
  stopProgressIndicator(`Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`);
311
273
  }
312
274
  //# sourceMappingURL=IdpOps.js.map
@@ -4,11 +4,11 @@ import { Idp, state } from '../index';
4
4
  import * as global from '../storage/StaticStorage';
5
5
  import { mockGetSocialProviders } from '../test/mocks/ForgeRockApiMockEngine';
6
6
  const mock = new MockAdapter(axios);
7
- state.default.session.setTenant('https://openam-frodo-dev.forgeblocks.com/am');
8
- state.default.session.setRealm('alpha');
9
- state.default.session.setCookieName('cookieName');
10
- state.default.session.setCookieValue('cookieValue');
11
- state.default.session.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);
7
+ state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
8
+ state.setRealm('alpha');
9
+ state.setCookieName('cookieName');
10
+ state.setCookieValue('cookieValue');
11
+ state.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);
12
12
  describe('IdpOps - exportSocialProviderToFile()', () => {
13
13
  test('exportSocialProviderToFile() 0: Method is implemented', async () => {
14
14
  expect(Idp.exportSocialProviderToFile).toBeDefined();
@@ -0,0 +1,41 @@
1
+ import jose from 'node-jose';
2
+ export async function createJwkRsa() {
3
+ const jwk = await jose.JWK.createKey('RSA', 4096, {
4
+ alg: 'RS256'
5
+ });
6
+ // include the private key
7
+ return jwk.toJSON(true);
8
+ }
9
+ export async function getJwkRsaPublic(jwkJson) {
10
+ const jwk = await jose.JWK.asKey(jwkJson);
11
+ // do not include the private key
12
+ return jwk.toJSON(false);
13
+ }
14
+ export function createJwks(...keys) {
15
+ return {
16
+ keys
17
+ };
18
+ }
19
+ export async function createSignedJwtToken(payload, jwkJson) {
20
+ const key = await jose.JWK.asKey(jwkJson);
21
+ if (typeof payload === 'object') {
22
+ payload = JSON.stringify(payload);
23
+ }
24
+ const jwt = await jose.JWS.createSign({
25
+ alg: 'RS256',
26
+ compact: true,
27
+ fields: {}
28
+ },
29
+ // https://github.com/cisco/node-jose/issues/253
30
+ {
31
+ key,
32
+ reference: false
33
+ }).update(payload).final();
34
+ return jwt;
35
+ }
36
+ export async function verifySignedJwtToken(jwt, jwkJson) {
37
+ const jwk = await jose.JWK.asKey(jwkJson);
38
+ const verifyResult = await jose.JWS.createVerify(jwk).verify(jwt);
39
+ return verifyResult;
40
+ }
41
+ //# sourceMappingURL=JoseOps.js.map
@@ -0,0 +1,137 @@
1
+ import { jest } from '@jest/globals';
2
+ import * as Jose from './JoseOps';
3
+ import { parseUrl } from '../api/utils/ApiUtils';
4
+ import { v4 } from 'uuid';
5
+ import { isEqualJson } from './utils/OpsUtils';
6
+ import { decode } from '../api/utils/Base64';
7
+
8
+ // Increase timeout for this test as pipeline keeps failing with error:
9
+ // Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.
10
+ jest.setTimeout(30000);
11
+ describe('JoseOps - createJWK()', () => {
12
+ test('createJWK() 0: Method is implemented', async () => {
13
+ expect(Jose.createJwkRsa).toBeDefined();
14
+ });
15
+ test('createJWK() 1: Create JWK with RSA key', async () => {
16
+ const jwk = await Jose.createJwkRsa();
17
+ expect(jwk).toBeTruthy();
18
+ expect(jwk.kty).toBe('RSA');
19
+ expect(jwk.alg).toBe('RS256');
20
+ expect(jwk.kid).toBeTruthy();
21
+ expect(jwk.d).toBeTruthy();
22
+ expect(jwk.dp).toBeTruthy();
23
+ expect(jwk.dq).toBeTruthy();
24
+ expect(jwk.e).toBe('AQAB');
25
+ expect(jwk.n).toBeTruthy();
26
+ expect(jwk.p).toBeTruthy();
27
+ expect(jwk.q).toBeTruthy();
28
+ expect(jwk.qi).toBeTruthy();
29
+ });
30
+ });
31
+ describe('JoseOps - getJwkRsaPublic()', () => {
32
+ test('getJwkRsaPublic() 0: Method is implemented', async () => {
33
+ expect(Jose.getJwkRsaPublic).toBeDefined();
34
+ });
35
+ test('getJwkRsaPublic() 1: Get JWK with RSA public key, only', async () => {
36
+ const jwk = await Jose.createJwkRsa();
37
+ const jwkPublic = await Jose.getJwkRsaPublic(jwk);
38
+ expect(jwkPublic).toBeTruthy();
39
+ expect(jwkPublic.kty).toBe('RSA');
40
+ expect(jwkPublic.alg).toBe('RS256');
41
+ expect(jwkPublic.kid).toBeTruthy();
42
+ expect(jwkPublic['d']).toBeFalsy();
43
+ expect(jwkPublic['dp']).toBeFalsy();
44
+ expect(jwkPublic['dq']).toBeFalsy();
45
+ expect(jwkPublic.e).toBe('AQAB');
46
+ expect(jwkPublic.n).toBeTruthy();
47
+ expect(jwkPublic['p']).toBeFalsy();
48
+ expect(jwkPublic['q']).toBeFalsy();
49
+ expect(jwkPublic['qi']).toBeFalsy();
50
+ });
51
+ });
52
+ describe('JoseOps - createJwks()', () => {
53
+ test('createJwks() 0: Method is implemented', async () => {
54
+ expect(Jose.createJwks).toBeDefined();
55
+ });
56
+ test('createJwks() 1: Create JWKS with 1 key', async () => {
57
+ const jwk = await Jose.createJwkRsa();
58
+ const jwks = await Jose.createJwks(jwk);
59
+ expect(jwks).toBeTruthy();
60
+ expect(jwks.keys).toBeTruthy();
61
+ expect(jwks.keys.length).toBe(1);
62
+ });
63
+ test('createJwks() 2: Create JWKS with 2 keys', async () => {
64
+ const jwk1 = await Jose.createJwkRsa();
65
+ const jwk2 = await Jose.createJwkRsa();
66
+ const jwks = await Jose.createJwks(jwk1, jwk2);
67
+ expect(jwks).toBeTruthy();
68
+ expect(jwks.keys).toBeTruthy();
69
+ expect(jwks.keys.length).toBe(2);
70
+ });
71
+ });
72
+ describe('JoseOps - createSignedJwtToken()', () => {
73
+ test('createSignedJwtToken() 0: Method is implemented', async () => {
74
+ expect(Jose.createSignedJwtToken).toBeDefined();
75
+ });
76
+ test('createSignedJwtToken() 1: Create signed JWT', async () => {
77
+ // The audience is the URL of the access token in the realm for client, and must include the port number
78
+ const u = parseUrl('https://openam-svcaccts-final.forgeblocks.com/am');
79
+ const aud = `${u.origin}:${u.port ? u.port : u.protocol === 'https' ? '443' : '80'}${u.pathname}/oauth2/access_token`;
80
+
81
+ // Cross platform way of setting JWT expiry time 3 minutes in the future, expressed as number of seconds since EPOCH
82
+ const exp = Math.floor(new Date().getTime() / 1000 + 180);
83
+
84
+ // A unique ID for the JWT which is required when requesting the openid scope
85
+ const jti = v4();
86
+ const iss = '0de8d0d8-e423-41e8-9034-73883af90917';
87
+ const sub = iss;
88
+
89
+ // Create the payload for our bearer token
90
+ const payload = {
91
+ iss,
92
+ sub,
93
+ aud,
94
+ exp,
95
+ jti
96
+ };
97
+ const jwk = await Jose.createJwkRsa();
98
+ const jwt = await Jose.createSignedJwtToken(payload, jwk);
99
+ expect(jwt).toBeTruthy();
100
+ expect(jwt.split('.').length).toBe(3);
101
+ expect(isEqualJson(JSON.parse(decode(jwt.split('.')[1])), payload)).toBeTruthy();
102
+ });
103
+ });
104
+ describe('JoseOps - verifySignedJwtToken()', () => {
105
+ test('verifySignedJwtToken() 0: Method is implemented', async () => {
106
+ expect(Jose.verifySignedJwtToken).toBeDefined();
107
+ });
108
+ test('verifySignedJwtToken() 1: Verify signed JWT', async () => {
109
+ // The audience is the URL of the access token in the realm for client, and must include the port number
110
+ const u = parseUrl('https://openam-svcaccts-final.forgeblocks.com/am');
111
+ const aud = `${u.origin}:${u.port ? u.port : u.protocol === 'https' ? '443' : '80'}${u.pathname}/oauth2/access_token`;
112
+
113
+ // Cross platform way of setting JWT expiry time 3 minutes in the future, expressed as number of seconds since EPOCH
114
+ const exp = Math.floor(new Date().getTime() / 1000 + 180);
115
+
116
+ // A unique ID for the JWT which is required when requesting the openid scope
117
+ const jti = v4();
118
+ const iss = '0de8d0d8-e423-41e8-9034-73883af90917';
119
+ const sub = iss;
120
+
121
+ // Create the payload for our bearer token
122
+ const payload = {
123
+ iss,
124
+ sub,
125
+ aud,
126
+ exp,
127
+ jti
128
+ };
129
+ const jwk = await Jose.createJwkRsa();
130
+ const jwt = await Jose.createSignedJwtToken(payload, jwk);
131
+ expect(jwt).toBeTruthy();
132
+ const jwkPublic = await Jose.getJwkRsaPublic(jwk);
133
+ const verifyResult = await Jose.verifySignedJwtToken(jwt, jwkPublic);
134
+ expect(isEqualJson(JSON.parse(verifyResult.payload.toString()), payload)).toBeTruthy();
135
+ });
136
+ });
137
+ //# sourceMappingURL=JoseOps.test.js.map