@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
@@ -2,21 +2,19 @@ import { createKeyValueTable, createProgressIndicator, createTable, printMessage
2
2
  import { createNewVersionOfSecret, deleteSecret, deleteVersionOfSecret, getSecret, getSecrets, getSecretVersions, putSecret, setSecretDescription, setStatusOfVersionOfSecret, VersionOfSecretStatus } from '../api/SecretsApi';
3
3
  import wordwrap from './utils/Wordwrap';
4
4
  import { resolveUserName } from './ManagedObjectOps';
5
+
5
6
  /**
6
7
  * List secrets
7
8
  * @param {boolean} long Long version, all the fields
8
9
  */
9
-
10
10
  export async function listSecrets(long) {
11
11
  let secrets = [];
12
-
13
12
  try {
14
13
  secrets = (await getSecrets()).result;
15
14
  } catch (error) {
16
15
  printMessage(`${error.message}`, 'error');
17
16
  printMessage(error.response.data, 'error');
18
17
  }
19
-
20
18
  if (long) {
21
19
  const table = createTable(['Id'['brightCyan'], {
22
20
  hAlign: 'right',
@@ -26,7 +24,6 @@ export async function listSecrets(long) {
26
24
  content: 'Loaded\nVersion'['brightCyan']
27
25
  }, 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified'['brightCyan']]);
28
26
  secrets.sort((a, b) => a._id.localeCompare(b._id));
29
-
30
27
  for (const secret of secrets) {
31
28
  table.push([secret._id, {
32
29
  hAlign: 'right',
@@ -34,10 +31,10 @@ export async function listSecrets(long) {
34
31
  }, {
35
32
  hAlign: 'right',
36
33
  content: secret.loadedVersion
37
- }, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40), // eslint-disable-next-line no-await-in-loop
34
+ }, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40),
35
+ // eslint-disable-next-line no-await-in-loop
38
36
  await resolveUserName('teammember', secret.lastChangedBy), new Date(secret.lastChangeDate).toLocaleString()]);
39
37
  }
40
-
41
38
  printMessage(table.toString());
42
39
  } else {
43
40
  secrets.forEach(secret => {
@@ -45,6 +42,7 @@ export async function listSecrets(long) {
45
42
  });
46
43
  }
47
44
  }
45
+
48
46
  /**
49
47
  * Create secret
50
48
  * @param {String} id secret id
@@ -53,10 +51,8 @@ export async function listSecrets(long) {
53
51
  * @param {String} encoding secret encoding
54
52
  * @param {boolean} useInPlaceholders use secret in placeholders
55
53
  */
56
-
57
54
  export async function createSecret(id, value, description, encoding, useInPlaceholders) {
58
55
  createProgressIndicator(undefined, `Creating secret ${id}...`, 'indeterminate');
59
-
60
56
  try {
61
57
  await putSecret(id, value, description, encoding, useInPlaceholders);
62
58
  stopProgressIndicator(`Created secret ${id}`, 'success');
@@ -64,15 +60,14 @@ export async function createSecret(id, value, description, encoding, useInPlaceh
64
60
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
65
61
  }
66
62
  }
63
+
67
64
  /**
68
65
  * Set description of secret
69
66
  * @param {String} secretId secret id
70
67
  * @param {String} description secret description
71
68
  */
72
-
73
69
  export async function setDescriptionOfSecret(secretId, description) {
74
70
  createProgressIndicator(undefined, `Setting description of secret ${secretId}...`, 'indeterminate');
75
-
76
71
  try {
77
72
  await setSecretDescription(secretId, description);
78
73
  stopProgressIndicator(`Set description of secret ${secretId}`, 'success');
@@ -80,14 +75,13 @@ export async function setDescriptionOfSecret(secretId, description) {
80
75
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
81
76
  }
82
77
  }
78
+
83
79
  /**
84
80
  * Delete a secret
85
81
  * @param {String} secretId secret id
86
82
  */
87
-
88
83
  export async function deleteSecretCmd(secretId) {
89
84
  createProgressIndicator(undefined, `Deleting secret ${secretId}...`, 'indeterminate');
90
-
91
85
  try {
92
86
  await deleteSecret(secretId);
93
87
  stopProgressIndicator(`Deleted secret ${secretId}`, 'success');
@@ -95,15 +89,14 @@ export async function deleteSecretCmd(secretId) {
95
89
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
96
90
  }
97
91
  }
92
+
98
93
  /**
99
94
  * Delete all secrets
100
95
  */
101
-
102
96
  export async function deleteSecretsCmd() {
103
97
  try {
104
98
  const secrets = (await getSecrets()).result;
105
99
  createProgressIndicator(secrets.length, `Deleting secrets...`);
106
-
107
100
  for (const secret of secrets) {
108
101
  try {
109
102
  // eslint-disable-next-line no-await-in-loop
@@ -113,52 +106,47 @@ export async function deleteSecretsCmd() {
113
106
  printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
114
107
  }
115
108
  }
116
-
117
109
  stopProgressIndicator(`Secrets deleted.`);
118
110
  } catch (error) {
119
111
  printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
120
112
  }
121
113
  }
114
+
122
115
  /**
123
116
  * List all the versions of the secret
124
117
  * @param {String} secretId secret id
125
118
  */
126
-
127
119
  export async function listSecretVersionsCmd(secretId) {
128
120
  let versions = [];
129
-
130
121
  try {
131
122
  versions = await getSecretVersions(secretId);
132
123
  } catch (error) {
133
124
  printMessage(`${error.message}`, 'error');
134
125
  printMessage(error.response.data, 'error');
135
126
  }
136
-
137
127
  const table = createTable([{
138
128
  hAlign: 'right',
139
129
  content: 'Version'['brightCyan']
140
- }, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]); // versions.sort((a, b) => a._id.localeCompare(b._id));
141
-
130
+ }, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]);
131
+ // versions.sort((a, b) => a._id.localeCompare(b._id));
142
132
  const statusMap = {
143
133
  ENABLED: 'active'['brightGreen'],
144
134
  DISABLED: 'inactive'['brightRed'],
145
135
  DESTROYED: 'deleted'['brightRed']
146
136
  };
147
-
148
137
  for (const version of versions) {
149
138
  table.push([{
150
139
  hAlign: 'right',
151
140
  content: version.version
152
141
  }, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
153
142
  }
154
-
155
143
  printMessage(table.toString());
156
144
  }
145
+
157
146
  /**
158
147
  * Describe a secret
159
148
  * @param {String} secretId Secret id
160
149
  */
161
-
162
150
  export async function describeSecret(secretId) {
163
151
  const secret = await getSecret(secretId);
164
152
  const table = createKeyValueTable();
@@ -176,15 +164,14 @@ export async function describeSecret(secretId) {
176
164
  printMessage('\nSecret Versions:');
177
165
  await listSecretVersionsCmd(secretId);
178
166
  }
167
+
179
168
  /**
180
169
  * Create new version of secret
181
170
  * @param {String} secretId secret id
182
171
  * @param {String} value secret value
183
172
  */
184
-
185
173
  export async function createNewVersionOfSecretCmd(secretId, value) {
186
174
  createProgressIndicator(undefined, `Creating new version of secret ${secretId}...`, 'indeterminate');
187
-
188
175
  try {
189
176
  const version = await createNewVersionOfSecret(secretId, value);
190
177
  stopProgressIndicator(`Created version ${version.version} of secret ${secretId}`, 'success');
@@ -192,15 +179,14 @@ export async function createNewVersionOfSecretCmd(secretId, value) {
192
179
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
193
180
  }
194
181
  }
182
+
195
183
  /**
196
184
  * Activate a version of a secret
197
185
  * @param {String} secretId secret id
198
186
  * @param {Number} version version of secret
199
187
  */
200
-
201
188
  export async function activateVersionOfSecret(secretId, version) {
202
189
  createProgressIndicator(undefined, `Activating version ${version} of secret ${secretId}...`, 'indeterminate');
203
-
204
190
  try {
205
191
  await setStatusOfVersionOfSecret(secretId, version, VersionOfSecretStatus.ENABLED);
206
192
  stopProgressIndicator(`Activated version ${version} of secret ${secretId}`, 'success');
@@ -208,15 +194,14 @@ export async function activateVersionOfSecret(secretId, version) {
208
194
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
209
195
  }
210
196
  }
197
+
211
198
  /**
212
199
  * Deactivate a version of a secret
213
200
  * @param {String} secretId secret id
214
201
  * @param {Number} version version of secret
215
202
  */
216
-
217
203
  export async function deactivateVersionOfSecret(secretId, version) {
218
204
  createProgressIndicator(undefined, `Deactivating version ${version} of secret ${secretId}...`, 'indeterminate');
219
-
220
205
  try {
221
206
  await setStatusOfVersionOfSecret(secretId, version, VersionOfSecretStatus.DISABLED);
222
207
  stopProgressIndicator(`Deactivated version ${version} of secret ${secretId}`, 'success');
@@ -224,15 +209,14 @@ export async function deactivateVersionOfSecret(secretId, version) {
224
209
  stopProgressIndicator(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
225
210
  }
226
211
  }
212
+
227
213
  /**
228
214
  * Delete version of secret
229
215
  * @param {String} secretId secret id
230
216
  * @param {Number} version version of secret
231
217
  */
232
-
233
218
  export async function deleteVersionOfSecretCmd(secretId, version) {
234
219
  createProgressIndicator(undefined, `Deleting version ${version} of secret ${secretId}...`, 'indeterminate');
235
-
236
220
  try {
237
221
  await deleteVersionOfSecret(secretId, version);
238
222
  stopProgressIndicator(`Deleted version ${version} of secret ${secretId}`, 'success');
@@ -0,0 +1,41 @@
1
+ import { createManagedObject } from '../api/ManagedObjectApi';
2
+ import { debugMessage } from './utils/Console';
3
+ import { getConfigEntity } from './IdmOps';
4
+ const moType = 'svcacct';
5
+ let serviceAccountsFeatureAvailable = undefined;
6
+ export async function isServiceAccountsFeatureAvailable() {
7
+ debugMessage(`ServiceAccountOps.isServiceAccountsFeatureAvailable: start`);
8
+ // only look up the schema once
9
+ if (typeof serviceAccountsFeatureAvailable !== 'undefined') return serviceAccountsFeatureAvailable;
10
+ serviceAccountsFeatureAvailable = false;
11
+ const schema = await getConfigEntity('managed');
12
+ for (const object of schema['objects']) {
13
+ if (object['name'] === 'svcacct') serviceAccountsFeatureAvailable = true;
14
+ }
15
+ debugMessage(`ServiceAccountOps.isServiceAccountsFeatureAvailable: end, available=${serviceAccountsFeatureAvailable}`);
16
+ return serviceAccountsFeatureAvailable;
17
+ }
18
+
19
+ /**
20
+ * Create service account
21
+ * @param {string} name Human-readable name of service account
22
+ * @param {string} description Description of service account
23
+ * @param {'Active' | 'Inactive'} accountStatus Service account status
24
+ * @param {string[]} scopes Scopes.
25
+ * @param {JwksInterface} jwks Java Web Key Set
26
+ * @returns {Promise<ObjectSkeletonInterface>} A promise resolving to a service account object
27
+ */
28
+ export async function createServiceAccount(name, description, accountStatus, scopes, jwks) {
29
+ const payload = {
30
+ name,
31
+ description,
32
+ accountStatus,
33
+ scopes,
34
+ jwks: JSON.stringify(jwks)
35
+ };
36
+ debugMessage(`SvcacctOps: createSvcacct: payload:`);
37
+ debugMessage(payload);
38
+ const result = await createManagedObject(moType, payload);
39
+ return result;
40
+ }
41
+ //# sourceMappingURL=ServiceAccountOps.js.map
@@ -0,0 +1,51 @@
1
+ import axios from 'axios';
2
+ import MockAdapter from 'axios-mock-adapter';
3
+ import { state } from '../index';
4
+ import * as globalConfig from '../storage/StaticStorage';
5
+ import { createJwkRsa, createJwks, getJwkRsaPublic } from './JoseOps';
6
+ import * as ServiceAccount from './ServiceAccountOps';
7
+ import { mockCreateManagedObject } from '../test/mocks/ForgeRockApiMockEngine';
8
+ import { isEqualJson } from './utils/OpsUtils';
9
+ const mock = new MockAdapter(axios);
10
+ const outputHandler = message => {
11
+ console.log(message);
12
+ };
13
+ state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
14
+ state.setRealm('alpha');
15
+ state.setCookieName('cookieName');
16
+ state.setCookieValue('cookieValue');
17
+ state.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);
18
+ state.setDebug(true);
19
+ state.setDebugHandler(outputHandler);
20
+ state.setPrintHandler(outputHandler);
21
+ state.setCurlirize(true);
22
+ state.setCurlirizeHandler(outputHandler);
23
+ describe('SvcacctOps - createSvcacct()', () => {
24
+ test('createSvcacct() 0: Method is implemented', async () => {
25
+ expect(ServiceAccount.createServiceAccount).toBeDefined();
26
+ });
27
+ test('createSvcacct() 1: Create service account', async () => {
28
+ let moId = null;
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ let moData = null;
31
+ const name = 'sa';
32
+ const description = 'service account';
33
+ const accountStatus = 'Active';
34
+ const scopes = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];
35
+ const jwk = await createJwkRsa();
36
+ const publicJwk = await getJwkRsaPublic(jwk);
37
+ const jwks = await createJwks(publicJwk);
38
+ mockCreateManagedObject(mock, (mockManagedObjId, mockManagedObj) => {
39
+ moId = mockManagedObjId;
40
+ moData = mockManagedObj;
41
+ });
42
+ const payload = await ServiceAccount.createServiceAccount(name, description, accountStatus, scopes, jwks);
43
+ expect(isEqualJson(payload, moData)).toBeTruthy();
44
+ expect(payload).toBeTruthy();
45
+ expect(payload._id).toBe(moId);
46
+ expect(payload.name).toBe(name);
47
+ expect(payload.description).toBe(description);
48
+ expect(payload.scopes).toStrictEqual(scopes);
49
+ });
50
+ });
51
+ //# sourceMappingURL=ServiceAccountOps.test.js.map
@@ -1,6 +1,5 @@
1
1
  import { deleteService, deleteServiceNextDescendent, getService, getListOfServices as _getListOfServices, getServiceDescendents, putService, putServiceNextDescendent } from '../api/ServiceApi';
2
2
  import { debugMessage, printMessage } from './utils/Console';
3
-
4
3
  /**
5
4
  * Create an empty service export template
6
5
  * @returns {SingleTreeExportInterface} an empty service export template
@@ -11,36 +10,37 @@ export function createServiceExportTemplate() {
11
10
  service: {}
12
11
  };
13
12
  }
13
+
14
14
  /**
15
15
  * Get list of services
16
+ * @param {boolean} globalConfig true if the list of global services is requested, false otherwise. Default: false.
16
17
  */
17
-
18
- export async function getListOfServices() {
18
+ export async function getListOfServices(globalConfig = false) {
19
19
  debugMessage(`ServiceOps.getListOfServices: start`);
20
- const services = (await _getListOfServices()).result;
20
+ const services = (await _getListOfServices(globalConfig)).result;
21
21
  debugMessage(`ServiceOps.getListOfServices: end`);
22
22
  return services;
23
23
  }
24
+
24
25
  /**
25
26
  * Get all services including their descendents.
27
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
26
28
  * @returns Promise resolving to an array of services with their descendants
27
29
  */
28
-
29
- export async function getFullServices() {
30
- debugMessage(`ServiceOps.getFullServices: start`);
31
- const serviceList = (await _getListOfServices()).result;
30
+ export async function getFullServices(globalConfig = false) {
31
+ debugMessage(`ServiceOps.getFullServices: start, globalConfig=${globalConfig}`);
32
+ const serviceList = (await _getListOfServices(globalConfig)).result;
32
33
  const fullServiceData = await Promise.all(serviceList.map(async listItem => {
33
34
  try {
34
- const [service, nextDescendents] = await Promise.all([getService(listItem._id), getServiceDescendents(listItem._id)]);
35
- return { ...service,
35
+ const [service, nextDescendents] = await Promise.all([getService(listItem._id, globalConfig), getServiceDescendents(listItem._id, globalConfig)]);
36
+ return {
37
+ ...service,
36
38
  nextDescendents
37
39
  };
38
40
  } catch (error) {
39
41
  var _error$response, _error$response2, _error$response2$data;
40
-
41
42
  if (!(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 403 && ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) === 'This operation is not available in ForgeRock Identity Cloud.')) {
42
43
  var _error$response3, _error$response3$data;
43
-
44
44
  const message = (_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : (_error$response3$data = _error$response3.data) === null || _error$response3$data === void 0 ? void 0 : _error$response3$data.message;
45
45
  printMessage(`Unable to retrieve data for ${listItem._id} with error: ${message}`, 'error');
46
46
  }
@@ -49,126 +49,118 @@ export async function getFullServices() {
49
49
  debugMessage(`ServiceOps.getFullServices: end`);
50
50
  return fullServiceData.filter(data => !!data); // make sure to filter out any undefined objects
51
51
  }
52
+
52
53
  /**
53
54
  * Saves a service using the provide id and data, including descendents
54
55
  * @param {string} serviceId the service id / name
55
56
  * @param {string} fullServiceData service object including descendants
57
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
56
58
  * @returns promise resolving to a service object
57
59
  */
58
-
59
- async function putFullService(serviceId, fullServiceData, clean) {
60
- debugMessage(`ServiceOps.putFullService: start, serviceId=${serviceId}`);
60
+ async function putFullService(serviceId, fullServiceData, clean, globalConfig = false) {
61
+ debugMessage(`ServiceOps.putFullService: start, serviceId=${serviceId}, globalConfig=${globalConfig}`);
61
62
  const nextDescendents = fullServiceData.nextDescendents;
62
63
  delete fullServiceData.nextDescendents;
63
64
  delete fullServiceData._rev;
64
65
  delete fullServiceData.enabled;
65
-
66
66
  if (clean) {
67
67
  try {
68
68
  debugMessage(`ServiceOps.putFullService: clean`);
69
- await deleteFullService(serviceId);
69
+ await deleteFullService(serviceId, globalConfig);
70
70
  } catch (error) {
71
71
  var _error$response4, _error$response5, _error$response5$data;
72
-
73
72
  if (!(((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status) === 404 && ((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : (_error$response5$data = _error$response5.data) === null || _error$response5$data === void 0 ? void 0 : _error$response5$data.message) === 'Not Found')) {
74
73
  var _error$response6, _error$response6$data;
75
-
76
74
  const message = (_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : (_error$response6$data = _error$response6.data) === null || _error$response6$data === void 0 ? void 0 : _error$response6$data.message;
77
75
  printMessage(`Error deleting service '${serviceId}' before import: ${message}`, 'error');
78
76
  }
79
77
  }
80
- } // create service first
81
-
78
+ }
82
79
 
83
- const result = await putService(serviceId, fullServiceData); // return fast if no next descendents supplied
80
+ // create service first
81
+ const result = await putService(serviceId, fullServiceData, globalConfig);
84
82
 
83
+ // return fast if no next descendents supplied
85
84
  if (nextDescendents.length === 0) {
86
85
  debugMessage(`ServiceOps.putFullService: end (w/o descendents)`);
87
86
  return result;
88
- } // now create next descendents
89
-
87
+ }
90
88
 
89
+ // now create next descendents
91
90
  await Promise.all(nextDescendents.map(async descendent => {
92
91
  const type = descendent._type._id;
93
92
  const descendentId = descendent._id;
94
93
  debugMessage(`ServiceOps.putFullService: descendentId=${descendentId}`);
95
94
  let result = undefined;
96
-
97
95
  try {
98
- result = await putServiceNextDescendent(serviceId, type, descendentId, descendent);
96
+ result = await putServiceNextDescendent(serviceId, type, descendentId, descendent, globalConfig);
99
97
  } catch (error) {
100
98
  var _error$response7, _error$response7$data;
101
-
102
99
  const message = (_error$response7 = error.response) === null || _error$response7 === void 0 ? void 0 : (_error$response7$data = _error$response7.data) === null || _error$response7$data === void 0 ? void 0 : _error$response7$data.message;
103
100
  printMessage(`Put descendent '${descendentId}' of service '${serviceId}': ${message}`, 'error');
104
101
  }
105
-
106
102
  return result;
107
103
  }));
108
104
  debugMessage(`ServiceOps.putFullService: end (w/ descendents)`);
109
105
  }
106
+
110
107
  /**
111
108
  * Saves multiple services using the serviceEntries which contain both id and data with descendants
112
109
  * @param {[string, FullService][]} serviceEntries The services to add
113
110
  * @param {boolean} clean Indicates whether to remove possible existing services first
111
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
114
112
  * @returns {Promise<AmService[]>} promise resolving to an array of service objects
115
113
  */
116
-
117
-
118
- async function putFullServices(serviceEntries, clean) {
119
- debugMessage(`ServiceOps.putFullServices: start`);
114
+ async function putFullServices(serviceEntries, clean, globalConfig = false) {
115
+ debugMessage(`ServiceOps.putFullServices: start, globalConfig=${globalConfig}`);
120
116
  const results = [];
121
-
122
117
  for (const [id, data] of serviceEntries) {
123
118
  try {
124
- const result = await putFullService(id, data, clean);
119
+ const result = await putFullService(id, data, clean, globalConfig);
125
120
  results.push(result);
126
121
  printMessage(`Imported: ${id}`, 'info');
127
122
  } catch (error) {
128
123
  var _error$response8, _error$response8$data, _error$response9, _error$response9$data;
129
-
130
124
  const message = (_error$response8 = error.response) === null || _error$response8 === void 0 ? void 0 : (_error$response8$data = _error$response8.data) === null || _error$response8$data === void 0 ? void 0 : _error$response8$data.message;
131
125
  const detail = (_error$response9 = error.response) === null || _error$response9 === void 0 ? void 0 : (_error$response9$data = _error$response9.data) === null || _error$response9$data === void 0 ? void 0 : _error$response9$data.detail;
132
126
  printMessage(`Import service '${id}': ${message}`, 'error');
133
-
134
127
  if (detail) {
135
128
  printMessage(`Details: ${JSON.stringify(detail)}`, 'error');
136
129
  }
137
130
  }
138
131
  }
139
-
140
132
  debugMessage(`ServiceOps.putFullServices: end`);
141
133
  return results;
142
134
  }
135
+
143
136
  /**
144
137
  * Deletes the specified service
145
138
  * @param {string} serviceId The service to delete
139
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
146
140
  */
147
-
148
-
149
- export async function deleteFullService(serviceId) {
150
- const serviceNextDescendentData = await getServiceDescendents(serviceId);
151
- await Promise.all(serviceNextDescendentData.map(nextDescendent => deleteServiceNextDescendent(serviceId, nextDescendent._type._id, nextDescendent._id)));
152
- await deleteService(serviceId);
141
+ export async function deleteFullService(serviceId, globalConfig = false) {
142
+ debugMessage(`ServiceOps.deleteFullService: start, globalConfig=${globalConfig}`);
143
+ const serviceNextDescendentData = await getServiceDescendents(serviceId, globalConfig);
144
+ await Promise.all(serviceNextDescendentData.map(nextDescendent => deleteServiceNextDescendent(serviceId, nextDescendent._type._id, nextDescendent._id, globalConfig)));
145
+ await deleteService(serviceId, globalConfig);
146
+ debugMessage(`ServiceOps.deleteFullService: end`);
153
147
  }
148
+
154
149
  /**
155
150
  * Deletes all services
151
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
156
152
  */
157
-
158
- export async function deleteFullServices() {
159
- debugMessage(`ServiceOps.deleteFullServices: start`);
160
-
153
+ export async function deleteFullServices(globalConfig = false) {
154
+ debugMessage(`ServiceOps.deleteFullServices: start, globalConfig=${globalConfig}`);
161
155
  try {
162
- const serviceList = (await _getListOfServices()).result;
156
+ const serviceList = (await _getListOfServices(globalConfig)).result;
163
157
  await Promise.all(serviceList.map(async serviceListItem => {
164
158
  try {
165
- await deleteFullService(serviceListItem._id);
159
+ await deleteFullService(serviceListItem._id, globalConfig);
166
160
  } catch (error) {
167
161
  var _error$response10, _error$response11, _error$response11$dat;
168
-
169
162
  if (!(((_error$response10 = error.response) === null || _error$response10 === void 0 ? void 0 : _error$response10.status) === 403 && ((_error$response11 = error.response) === null || _error$response11 === void 0 ? void 0 : (_error$response11$dat = _error$response11.data) === null || _error$response11$dat === void 0 ? void 0 : _error$response11$dat.message) === 'This operation is not available in ForgeRock Identity Cloud.')) {
170
163
  var _error$response12, _error$response12$dat;
171
-
172
164
  const message = (_error$response12 = error.response) === null || _error$response12 === void 0 ? void 0 : (_error$response12$dat = _error$response12.data) === null || _error$response12$dat === void 0 ? void 0 : _error$response12$dat.message;
173
165
  printMessage(`Delete service '${serviceListItem._id}': ${message}`, 'error');
174
166
  }
@@ -176,100 +168,91 @@ export async function deleteFullServices() {
176
168
  }));
177
169
  } catch (error) {
178
170
  var _error$response13, _error$response13$dat;
179
-
180
171
  const message = (_error$response13 = error.response) === null || _error$response13 === void 0 ? void 0 : (_error$response13$dat = _error$response13.data) === null || _error$response13$dat === void 0 ? void 0 : _error$response13$dat.message;
181
172
  printMessage(`Delete services: ${message}`, 'error');
182
173
  }
183
-
184
174
  debugMessage(`ServiceOps.deleteFullServices: end`);
185
175
  }
176
+
186
177
  /**
187
178
  * Export service. The response can be saved to file as is.
188
179
  * @param serviceId service id/name
180
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
189
181
  * @returns {Promise<ServiceExportInterface>} Promise resolving to a ServiceExportInterface object.
190
182
  */
191
-
192
- export async function exportService(serviceId) {
193
- debugMessage(`ServiceOps.exportService: start`);
183
+ export async function exportService(serviceId, globalConfig = false) {
184
+ debugMessage(`ServiceOps.exportService: start, globalConfig=${globalConfig}`);
194
185
  const exportData = createServiceExportTemplate();
195
-
196
186
  try {
197
- const service = await getService(serviceId);
198
- service.nextDescendents = await getServiceDescendents(serviceId);
187
+ const service = await getService(serviceId, globalConfig);
188
+ service.nextDescendents = await getServiceDescendents(serviceId, globalConfig);
199
189
  exportData.service[serviceId] = service;
200
190
  } catch (error) {
201
191
  var _error$response14, _error$response14$dat;
202
-
203
192
  const message = (_error$response14 = error.response) === null || _error$response14 === void 0 ? void 0 : (_error$response14$dat = _error$response14.data) === null || _error$response14$dat === void 0 ? void 0 : _error$response14$dat.message;
204
193
  printMessage(`Export service '${serviceId}': ${message}`, 'error');
205
194
  }
206
-
207
195
  debugMessage(`ServiceOps.exportService: end`);
208
196
  return exportData;
209
197
  }
198
+
210
199
  /**
211
200
  * Export all services
212
- * @param {string} file Options filename for the file, otherwise all{realm}Services.service.json will be the name
201
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
213
202
  */
214
-
215
- export async function exportServices() {
216
- debugMessage(`ServiceOps.exportServices: start`);
203
+ export async function exportServices(globalConfig = false) {
204
+ debugMessage(`ServiceOps.exportServices: start, globalConfig=${globalConfig}`);
217
205
  const exportData = createServiceExportTemplate();
218
-
219
206
  try {
220
- const services = await getFullServices();
221
-
207
+ const services = await getFullServices(globalConfig);
222
208
  for (const service of services) {
223
209
  exportData.service[service._type._id] = service;
224
210
  }
225
211
  } catch (error) {
226
212
  var _error$response15, _error$response15$dat;
227
-
228
213
  const message = (_error$response15 = error.response) === null || _error$response15 === void 0 ? void 0 : (_error$response15$dat = _error$response15.data) === null || _error$response15$dat === void 0 ? void 0 : _error$response15$dat.message;
229
214
  printMessage(`Export servics: ${message}`, 'error');
230
215
  }
231
-
232
216
  debugMessage(`ServiceOps.exportServices: end`);
233
217
  return exportData;
234
218
  }
219
+
235
220
  /**
236
221
  * Imports a single service using a reference to the service and a file to read the data from. Optionally clean (remove) an existing service first
237
222
  * @param {string} serviceId The service id/name to add
223
+ * @param {ServiceExportInterface} importData The service configuration export data to import
238
224
  * @param {boolean} clean Indicates whether to remove a possible existing service with the same id first.
239
- * @param {string} file Reference to the filename with the data for the service
225
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
240
226
  * @returns Promise resolving when the service has been imported
241
227
  */
242
-
243
- export async function importService(serviceId, importData, clean) {
244
- debugMessage(`ServiceOps.importService: start`);
228
+ export async function importService(serviceId, importData, clean, globalConfig = false) {
229
+ debugMessage(`ServiceOps.importService: start, globalConfig=${globalConfig}`);
245
230
  const serviceData = importData.service[serviceId];
246
- const result = await putFullService(serviceId, serviceData, clean);
231
+ const result = await putFullService(serviceId, serviceData, clean, globalConfig);
247
232
  debugMessage(`ServiceOps.importService: end`);
248
233
  return result;
249
234
  }
235
+
250
236
  /**
251
237
  * Imports multiple services from the same file. Optionally clean (remove) existing services first
238
+ * @param {ServiceExportInterface} importData The service configuration export data to import
252
239
  * @param {boolean} clean Indicates whether to remove possible existing services first
240
+ * @param {boolean} globalConfig true if the global service is the target of the operation, false otherwise. Default: false.
253
241
  */
254
-
255
- export async function importServices(importData, clean) {
256
- debugMessage(`ServiceOps.importServices: start`);
257
-
242
+ export async function importServices(importData, clean, globalConfig = false) {
243
+ debugMessage(`ServiceOps.importServices: start, globalConfig=${globalConfig}`);
258
244
  try {
259
- const result = await putFullServices(Object.entries(importData.service), clean);
245
+ const result = await putFullServices(Object.entries(importData.service), clean, globalConfig);
260
246
  debugMessage(`ServiceOps.importServices: end`);
261
247
  return result;
262
248
  } catch (error) {
263
249
  var _error$response16, _error$response16$dat, _error$response17, _error$response17$dat;
264
-
265
250
  const message = (_error$response16 = error.response) === null || _error$response16 === void 0 ? void 0 : (_error$response16$dat = _error$response16.data) === null || _error$response16$dat === void 0 ? void 0 : _error$response16$dat.message;
266
251
  const detail = (_error$response17 = error.response) === null || _error$response17 === void 0 ? void 0 : (_error$response17$dat = _error$response17.data) === null || _error$response17$dat === void 0 ? void 0 : _error$response17$dat.detail;
267
252
  printMessage(`Unable to import services: error: ${message}`, 'error');
268
-
269
253
  if (detail) {
270
254
  printMessage(`Details: ${JSON.stringify(detail)}`, 'error');
271
255
  }
272
-
273
256
  throw error;
274
257
  }
275
258
  }