@rockcarver/frodo-lib 1.1.0 → 1.1.2-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.
- package/build.zip +0 -0
- package/cjs/api/AgentApi.js +4 -4
- package/cjs/api/AgentApi.js.map +1 -1
- package/cjs/api/AgentApi.test.js +3 -3
- package/cjs/api/AgentApi.test.js.map +1 -1
- package/cjs/api/AuthenticateApi.js +3 -3
- package/cjs/api/AuthenticateApi.js.map +1 -1
- package/cjs/api/AuthenticateApi.test.js +2 -2
- package/cjs/api/AuthenticateApi.test.js.map +1 -1
- package/cjs/api/BaseApi.js +4 -4
- package/cjs/api/BaseApi.js.map +1 -1
- package/cjs/api/CirclesOfTrustApi.js +3 -3
- package/cjs/api/CirclesOfTrustApi.js.map +1 -1
- package/cjs/api/IdmConfigApi.js +3 -3
- package/cjs/api/IdmConfigApi.js.map +1 -1
- package/cjs/api/IdmSystemApi.js +3 -3
- package/cjs/api/IdmSystemApi.js.map +1 -1
- package/cjs/api/ManagedObjectApi.js +3 -3
- package/cjs/api/ManagedObjectApi.js.map +1 -1
- package/cjs/api/NodeApi.js +3 -3
- package/cjs/api/NodeApi.js.map +1 -1
- package/cjs/api/NodeApi.test.js +2 -2
- package/cjs/api/NodeApi.test.js.map +1 -1
- package/cjs/api/OAuth2ClientApi.js +3 -3
- package/cjs/api/OAuth2ClientApi.js.map +1 -1
- package/cjs/api/OAuth2OIDCApi.js +4 -4
- package/cjs/api/OAuth2OIDCApi.js.map +1 -1
- package/cjs/api/OAuth2OIDCApi.test.js +4 -4
- package/cjs/api/OAuth2OIDCApi.test.js.map +1 -1
- package/cjs/api/OAuth2ProviderApi.js +3 -3
- package/cjs/api/OAuth2ProviderApi.js.map +1 -1
- package/cjs/api/PoliciesApi.js +3 -3
- package/cjs/api/PoliciesApi.js.map +1 -1
- package/cjs/api/PoliciesApi.test.js +4 -4
- package/cjs/api/PoliciesApi.test.js.map +1 -1
- package/cjs/api/PolicySetApi.js +4 -4
- package/cjs/api/PolicySetApi.js.map +1 -1
- package/cjs/api/PolicySetApi.test.js +3 -3
- package/cjs/api/PolicySetApi.test.js.map +1 -1
- package/cjs/api/RealmApi.js +3 -3
- package/cjs/api/RealmApi.js.map +1 -1
- package/cjs/api/ResourceTypesApi.js +3 -3
- package/cjs/api/ResourceTypesApi.js.map +1 -1
- package/cjs/api/ResourceTypesApi.test.js +2 -2
- package/cjs/api/ResourceTypesApi.test.js.map +1 -1
- package/cjs/api/Saml2Api.js +3 -3
- package/cjs/api/Saml2Api.js.map +1 -1
- package/cjs/api/ScriptApi.js +3 -3
- package/cjs/api/ScriptApi.js.map +1 -1
- package/cjs/api/ServerInfoApi.js +2 -2
- package/cjs/api/ServerInfoApi.js.map +1 -1
- package/cjs/api/ServiceApi.js +3 -3
- package/cjs/api/ServiceApi.js.map +1 -1
- package/cjs/api/SocialIdentityProvidersApi.js +3 -3
- package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
- package/cjs/api/TreeApi.js +3 -3
- package/cjs/api/TreeApi.js.map +1 -1
- package/cjs/api/TreeApi.test.js +2 -2
- package/cjs/api/TreeApi.test.js.map +1 -1
- package/cjs/api/cloud/AdminFederationProvidersApi.js +3 -3
- package/cjs/api/cloud/AdminFederationProvidersApi.js.map +1 -1
- package/cjs/api/cloud/EnvInfoApi.js +3 -3
- package/cjs/api/cloud/EnvInfoApi.js.map +1 -1
- package/cjs/api/cloud/FeatureApi.js +3 -3
- package/cjs/api/cloud/FeatureApi.js.map +1 -1
- package/cjs/api/cloud/LogApi.js +3 -3
- package/cjs/api/cloud/LogApi.js.map +1 -1
- package/cjs/api/cloud/SecretsApi.js +4 -4
- package/cjs/api/cloud/SecretsApi.js.map +1 -1
- package/cjs/api/cloud/SecretsApi.test.js +2 -2
- package/cjs/api/cloud/SecretsApi.test.js.map +1 -1
- package/cjs/api/cloud/StartupApi.js +3 -3
- package/cjs/api/cloud/StartupApi.js.map +1 -1
- package/cjs/api/cloud/StartupApi.test.js +1 -1
- package/cjs/api/cloud/StartupApi.test.js.map +1 -1
- package/cjs/api/cloud/VariablesApi.js +4 -4
- package/cjs/api/cloud/VariablesApi.js.map +1 -1
- package/cjs/api/cloud/VariablesApi.test.js +2 -2
- package/cjs/api/cloud/VariablesApi.test.js.map +1 -1
- package/cjs/api/utils/ApiUtils.js +1 -1
- package/cjs/api/utils/ApiUtils.js.map +1 -1
- package/cjs/api/utils/ApiUtils.test.js +2 -2
- package/cjs/api/utils/ApiUtils.test.js.map +1 -1
- package/cjs/ext/axios-curlirize/curlirize.js +1 -1
- package/cjs/ext/axios-curlirize/curlirize.js.map +1 -1
- package/cjs/index.js +49 -49
- package/cjs/ops/AdminOps.js +8 -8
- package/cjs/ops/AdminOps.js.map +1 -1
- package/cjs/ops/AgentOps.js +3 -3
- package/cjs/ops/AgentOps.js.map +1 -1
- package/cjs/ops/AgentOps.test.js +3 -3
- package/cjs/ops/AgentOps.test.js.map +1 -1
- package/cjs/ops/AuthenticateOps.js +12 -12
- package/cjs/ops/AuthenticateOps.js.map +1 -1
- package/cjs/ops/AuthenticateOps.test.js +2 -2
- package/cjs/ops/AuthenticateOps.test.js.map +1 -1
- package/cjs/ops/CirclesOfTrustOps.js +3 -3
- package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.js +8 -8
- package/cjs/ops/ConnectionProfileOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.test.js +2 -2
- package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.js +1 -1
- package/cjs/ops/EmailTemplateOps.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.test.js +2 -2
- package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
- package/cjs/ops/IdmOps.js +2 -2
- package/cjs/ops/IdmOps.js.map +1 -1
- package/cjs/ops/IdmOps.test.js +2 -2
- package/cjs/ops/IdmOps.test.js.map +1 -1
- package/cjs/ops/IdpOps.js +6 -6
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/IdpOps.test.js +2 -2
- package/cjs/ops/IdpOps.test.js.map +1 -1
- package/cjs/ops/InfoOps.js +6 -6
- package/cjs/ops/InfoOps.js.map +1 -1
- package/cjs/ops/JoseOps.test.js +4 -4
- package/cjs/ops/JoseOps.test.js.map +1 -1
- package/cjs/ops/JourneyOps.js +17 -17
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/JourneyOps.test.js +4 -4
- package/cjs/ops/JourneyOps.test.js.map +1 -1
- package/cjs/ops/ManagedObjectOps.js +1 -1
- package/cjs/ops/ManagedObjectOps.js.map +1 -1
- package/cjs/ops/NodeOps.js +7 -7
- package/cjs/ops/NodeOps.js.map +1 -1
- package/cjs/ops/OAuth2ClientOps.js +6 -6
- package/cjs/ops/OAuth2ClientOps.js.map +1 -1
- package/cjs/ops/OAuth2ClientOps.test.js +3 -3
- package/cjs/ops/OAuth2ClientOps.test.js.map +1 -1
- package/cjs/ops/OAuth2ProviderOps.js +1 -1
- package/cjs/ops/OAuth2ProviderOps.js.map +1 -1
- package/cjs/ops/OrganizationOps.js +3 -3
- package/cjs/ops/OrganizationOps.js.map +1 -1
- package/cjs/ops/PolicyOps.js +8 -8
- package/cjs/ops/PolicyOps.js.map +1 -1
- package/cjs/ops/PolicyOps.test.js +6 -6
- package/cjs/ops/PolicyOps.test.js.map +1 -1
- package/cjs/ops/PolicySetOps.js +6 -6
- package/cjs/ops/PolicySetOps.js.map +1 -1
- package/cjs/ops/PolicySetOps.test.js +4 -4
- package/cjs/ops/PolicySetOps.test.js.map +1 -1
- package/cjs/ops/RealmOps.js +2 -2
- package/cjs/ops/RealmOps.js.map +1 -1
- package/cjs/ops/ResourceTypeOps.js +6 -6
- package/cjs/ops/ResourceTypeOps.js.map +1 -1
- package/cjs/ops/ResourceTypeOps.test.js +2 -2
- package/cjs/ops/ResourceTypeOps.test.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +7 -7
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js +6 -6
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ScriptOps.js +5 -5
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/ops/ScriptOps.test.js +2 -2
- package/cjs/ops/ScriptOps.test.js.map +1 -1
- package/cjs/ops/ServiceOps.js +2 -2
- package/cjs/ops/ServiceOps.js.map +1 -1
- package/cjs/ops/ThemeOps.js +3 -3
- package/cjs/ops/ThemeOps.js.map +1 -1
- package/cjs/ops/ThemeOps.test.js +3 -3
- package/cjs/ops/ThemeOps.test.js.map +1 -1
- package/cjs/ops/cloud/AdminFederationOps.js +4 -4
- package/cjs/ops/cloud/AdminFederationOps.js.map +1 -1
- package/cjs/ops/cloud/FeatureOps.js +2 -2
- package/cjs/ops/cloud/FeatureOps.js.map +1 -1
- package/cjs/ops/cloud/LogOps.js +1 -1
- package/cjs/ops/cloud/LogOps.js.map +1 -1
- package/cjs/ops/cloud/SecretsOps.js +4 -4
- package/cjs/ops/cloud/SecretsOps.js.map +1 -1
- package/cjs/ops/cloud/ServiceAccountOps.js +3 -3
- package/cjs/ops/cloud/ServiceAccountOps.js.map +1 -1
- package/cjs/ops/cloud/ServiceAccountOps.test.js +3 -3
- package/cjs/ops/cloud/ServiceAccountOps.test.js.map +1 -1
- package/cjs/ops/cloud/StartupOps.js +4 -4
- package/cjs/ops/cloud/StartupOps.js.map +1 -1
- package/cjs/ops/cloud/VariablesOps.js +5 -5
- package/cjs/ops/cloud/VariablesOps.js.map +1 -1
- package/cjs/ops/utils/Console.js +1 -1
- package/cjs/ops/utils/Console.js.map +1 -1
- package/cjs/ops/utils/DataProtection.js +3 -3
- package/cjs/ops/utils/DataProtection.js.map +1 -1
- package/cjs/ops/utils/DataProtection.test.js +1 -1
- package/cjs/ops/utils/DataProtection.test.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.js +4 -4
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.test.js +1 -1
- package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
- package/cjs/ops/utils/OpsUtils.js +3 -3
- package/cjs/ops/utils/OpsUtils.js.map +1 -1
- package/cjs/ops/utils/OpsUtils.test.js +3 -3
- package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.js +2 -2
- package/cjs/ops/utils/ValidationUtils.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.test.js +1 -1
- package/cjs/ops/utils/ValidationUtils.test.js.map +1 -1
- package/cjs/ops/utils/Version.js +1 -1
- package/cjs/ops/utils/Version.js.map +1 -1
- package/cjs/ops/utils/Version.test.js +1 -1
- package/cjs/ops/utils/Version.test.js.map +1 -1
- package/cjs/ops/utils/Wordwrap.test.js +1 -1
- package/cjs/ops/utils/Wordwrap.test.js.map +1 -1
- package/cjs/shared/State.test.js +1 -1
- package/cjs/shared/State.test.js.map +1 -1
- package/cjs/test/mocks/ForgeRockApiMockEngine.js +2 -2
- package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
- package/cjs/utils/AutoSetupPolly.js +2 -2
- package/cjs/utils/AutoSetupPolly.js.map +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/esm/api/AgentApi.js +4 -4
- package/esm/api/AgentApi.js.map +1 -1
- package/esm/api/AgentApi.test.js +3 -3
- package/esm/api/AgentApi.test.js.map +1 -1
- package/esm/api/AuthenticateApi.js +3 -3
- package/esm/api/AuthenticateApi.js.map +1 -1
- package/esm/api/AuthenticateApi.test.js +2 -4
- package/esm/api/AuthenticateApi.test.js.map +1 -1
- package/esm/api/BaseApi.js +4 -4
- package/esm/api/BaseApi.js.map +1 -1
- package/esm/api/CirclesOfTrustApi.js +3 -3
- package/esm/api/CirclesOfTrustApi.js.map +1 -1
- package/esm/api/IdmConfigApi.js +3 -3
- package/esm/api/IdmConfigApi.js.map +1 -1
- package/esm/api/IdmSystemApi.js +3 -3
- package/esm/api/IdmSystemApi.js.map +1 -1
- package/esm/api/ManagedObjectApi.js +3 -3
- package/esm/api/ManagedObjectApi.js.map +1 -1
- package/esm/api/NodeApi.js +3 -3
- package/esm/api/NodeApi.js.map +1 -1
- package/esm/api/NodeApi.test.js +2 -2
- package/esm/api/NodeApi.test.js.map +1 -1
- package/esm/api/OAuth2ClientApi.js +3 -3
- package/esm/api/OAuth2ClientApi.js.map +1 -1
- package/esm/api/OAuth2OIDCApi.js +4 -4
- package/esm/api/OAuth2OIDCApi.js.map +1 -1
- package/esm/api/OAuth2OIDCApi.test.js +4 -4
- package/esm/api/OAuth2OIDCApi.test.js.map +1 -1
- package/esm/api/OAuth2ProviderApi.js +3 -3
- package/esm/api/OAuth2ProviderApi.js.map +1 -1
- package/esm/api/PoliciesApi.js +3 -3
- package/esm/api/PoliciesApi.js.map +1 -1
- package/esm/api/PoliciesApi.test.js +4 -4
- package/esm/api/PoliciesApi.test.js.map +1 -1
- package/esm/api/PolicySetApi.js +4 -4
- package/esm/api/PolicySetApi.js.map +1 -1
- package/esm/api/PolicySetApi.test.js +3 -3
- package/esm/api/PolicySetApi.test.js.map +1 -1
- package/esm/api/RealmApi.js +3 -3
- package/esm/api/RealmApi.js.map +1 -1
- package/esm/api/ResourceTypesApi.js +3 -3
- package/esm/api/ResourceTypesApi.js.map +1 -1
- package/esm/api/ResourceTypesApi.test.js +2 -2
- package/esm/api/ResourceTypesApi.test.js.map +1 -1
- package/esm/api/Saml2Api.js +3 -3
- package/esm/api/Saml2Api.js.map +1 -1
- package/esm/api/ScriptApi.js +3 -3
- package/esm/api/ScriptApi.js.map +1 -1
- package/esm/api/ServerInfoApi.js +2 -2
- package/esm/api/ServerInfoApi.js.map +1 -1
- package/esm/api/ServiceApi.js +3 -3
- package/esm/api/ServiceApi.js.map +1 -1
- package/esm/api/SocialIdentityProvidersApi.js +3 -3
- package/esm/api/SocialIdentityProvidersApi.js.map +1 -1
- package/esm/api/TreeApi.js +3 -3
- package/esm/api/TreeApi.js.map +1 -1
- package/esm/api/TreeApi.test.js +2 -2
- package/esm/api/TreeApi.test.js.map +1 -1
- package/esm/api/cloud/AdminFederationProvidersApi.js +3 -3
- package/esm/api/cloud/AdminFederationProvidersApi.js.map +1 -1
- package/esm/api/cloud/EnvInfoApi.js +3 -3
- package/esm/api/cloud/EnvInfoApi.js.map +1 -1
- package/esm/api/cloud/FeatureApi.js +3 -3
- package/esm/api/cloud/FeatureApi.js.map +1 -1
- package/esm/api/cloud/LogApi.js +3 -3
- package/esm/api/cloud/LogApi.js.map +1 -1
- package/esm/api/cloud/SecretsApi.js +4 -4
- package/esm/api/cloud/SecretsApi.js.map +1 -1
- package/esm/api/cloud/SecretsApi.test.js +2 -2
- package/esm/api/cloud/SecretsApi.test.js.map +1 -1
- package/esm/api/cloud/StartupApi.js +3 -3
- package/esm/api/cloud/StartupApi.js.map +1 -1
- package/esm/api/cloud/StartupApi.test.js +1 -1
- package/esm/api/cloud/StartupApi.test.js.map +1 -1
- package/esm/api/cloud/VariablesApi.js +4 -4
- package/esm/api/cloud/VariablesApi.js.map +1 -1
- package/esm/api/cloud/VariablesApi.test.js +2 -2
- package/esm/api/cloud/VariablesApi.test.js.map +1 -1
- package/esm/api/utils/ApiUtils.js +1 -2
- package/esm/api/utils/ApiUtils.js.map +1 -1
- package/esm/api/utils/ApiUtils.test.js +2 -2
- package/esm/api/utils/ApiUtils.test.js.map +1 -1
- package/esm/ext/axios-curlirize/curlirize.js +1 -1
- package/esm/ext/axios-curlirize/curlirize.js.map +1 -1
- package/esm/index.js +49 -54
- package/esm/index.js.map +1 -1
- package/esm/ops/AdminOps.js +8 -8
- package/esm/ops/AdminOps.js.map +1 -1
- package/esm/ops/AgentOps.js +3 -3
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/AgentOps.test.js +3 -3
- package/esm/ops/AgentOps.test.js.map +1 -1
- package/esm/ops/AuthenticateOps.js +12 -12
- package/esm/ops/AuthenticateOps.js.map +1 -1
- package/esm/ops/AuthenticateOps.test.js +2 -4
- package/esm/ops/AuthenticateOps.test.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +3 -5
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +8 -8
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.test.js +2 -2
- package/esm/ops/ConnectionProfileOps.test.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +1 -2
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.test.js +2 -2
- package/esm/ops/EmailTemplateOps.test.js.map +1 -1
- package/esm/ops/IdmOps.js +2 -3
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdmOps.test.js +2 -2
- package/esm/ops/IdmOps.test.js.map +1 -1
- package/esm/ops/IdpOps.js +8 -8
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/IdpOps.test.js +2 -2
- package/esm/ops/IdpOps.test.js.map +1 -1
- package/esm/ops/InfoOps.js +6 -6
- package/esm/ops/InfoOps.js.map +1 -1
- package/esm/ops/JoseOps.test.js +4 -4
- package/esm/ops/JoseOps.test.js.map +1 -1
- package/esm/ops/JourneyOps.js +17 -17
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/JourneyOps.test.js +4 -4
- package/esm/ops/JourneyOps.test.js.map +1 -1
- package/esm/ops/ManagedObjectOps.js +1 -2
- package/esm/ops/ManagedObjectOps.js.map +1 -1
- package/esm/ops/NodeOps.js +7 -7
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +7 -10
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.test.js +3 -3
- package/esm/ops/OAuth2ClientOps.test.js.map +1 -1
- package/esm/ops/OAuth2ProviderOps.js +1 -2
- package/esm/ops/OAuth2ProviderOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +3 -4
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +9 -12
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicyOps.test.js +6 -6
- package/esm/ops/PolicyOps.test.js.map +1 -1
- package/esm/ops/PolicySetOps.js +7 -10
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/PolicySetOps.test.js +4 -4
- package/esm/ops/PolicySetOps.test.js.map +1 -1
- package/esm/ops/RealmOps.js +2 -3
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +4 -4
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.test.js +2 -2
- package/esm/ops/ResourceTypeOps.test.js.map +1 -1
- package/esm/ops/Saml2Ops.js +7 -7
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test.js +6 -6
- package/esm/ops/Saml2Ops.test.js.map +1 -1
- package/esm/ops/ScriptOps.js +5 -5
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/ScriptOps.test.js +2 -2
- package/esm/ops/ScriptOps.test.js.map +1 -1
- package/esm/ops/ServiceOps.js +2 -2
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +3 -3
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/ThemeOps.test.js +3 -3
- package/esm/ops/ThemeOps.test.js.map +1 -1
- package/esm/ops/cloud/AdminFederationOps.js +4 -4
- package/esm/ops/cloud/AdminFederationOps.js.map +1 -1
- package/esm/ops/cloud/FeatureOps.js +2 -2
- package/esm/ops/cloud/FeatureOps.js.map +1 -1
- package/esm/ops/cloud/LogOps.js +1 -3
- package/esm/ops/cloud/LogOps.js.map +1 -1
- package/esm/ops/cloud/SecretsOps.js +4 -5
- package/esm/ops/cloud/SecretsOps.js.map +1 -1
- package/esm/ops/cloud/ServiceAccountOps.js +3 -3
- package/esm/ops/cloud/ServiceAccountOps.js.map +1 -1
- package/esm/ops/cloud/ServiceAccountOps.test.js +3 -5
- package/esm/ops/cloud/ServiceAccountOps.test.js.map +1 -1
- package/esm/ops/cloud/StartupOps.js +4 -6
- package/esm/ops/cloud/StartupOps.js.map +1 -1
- package/esm/ops/cloud/VariablesOps.js +5 -6
- package/esm/ops/cloud/VariablesOps.js.map +1 -1
- package/esm/ops/utils/Console.js +1 -2
- package/esm/ops/utils/Console.js.map +1 -1
- package/esm/ops/utils/DataProtection.js +3 -3
- package/esm/ops/utils/DataProtection.js.map +1 -1
- package/esm/ops/utils/DataProtection.test.js +1 -1
- package/esm/ops/utils/DataProtection.test.js.map +1 -1
- package/esm/ops/utils/ExportImportUtils.js +4 -4
- package/esm/ops/utils/ExportImportUtils.js.map +1 -1
- package/esm/ops/utils/ExportImportUtils.test.js +1 -3
- package/esm/ops/utils/ExportImportUtils.test.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +3 -3
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/OpsUtils.test.js +3 -3
- package/esm/ops/utils/OpsUtils.test.js.map +1 -1
- package/esm/ops/utils/ValidationUtils.js +2 -2
- package/esm/ops/utils/ValidationUtils.js.map +1 -1
- package/esm/ops/utils/ValidationUtils.test.js +1 -1
- package/esm/ops/utils/ValidationUtils.test.js.map +1 -1
- package/esm/ops/utils/Version.js +1 -1
- package/esm/ops/utils/Version.js.map +1 -1
- package/esm/ops/utils/Version.test.js +1 -1
- package/esm/ops/utils/Version.test.js.map +1 -1
- package/esm/ops/utils/Wordwrap.test.js +1 -1
- package/esm/ops/utils/Wordwrap.test.js.map +1 -1
- package/esm/shared/State.test.js +1 -1
- package/esm/shared/State.test.js.map +1 -1
- package/esm/test/mocks/ForgeRockApiMockEngine.js +2 -2
- package/esm/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
- package/esm/utils/AutoSetupPolly.js +2 -2
- package/esm/utils/AutoSetupPolly.js.map +1 -1
- package/esm/utils/SetupPollyForFrodoLib.js +1 -1
- package/esm/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeApi.test.js","names":["NodeRaw","autoSetupPolly","describe","node1","id","type","node","usernameAttribute","validateInput","_type","_id","name","collection","_outcomes","displayName","node2","passwordAttribute","node3","identityResource","patchAsObject","ignoredFields","identityAttribute","node4","beforeAll","process","env","FRODO_POLLY_MODE","getNode","deleteNode","error","putNode","afterAll","test","expect","getNodeTypes","toBeDefined","response","toMatchSnapshot","getNodes","getNodesByType","assertions","data"],"sources":["../../src/api/NodeApi.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=volker-dev npm run test:record NodeApi\n *\n * The above command assumes that you have a connection profile for\n * 'volker-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update NodeApi\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only NodeApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { NodeRaw } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\ndescribe('NodeApi', () => {\n const node1 = {\n id: '67693475-3a58-4e38-bcc6-037b3fe46a58',\n type: 'ValidatedUsernameNode',\n node: {\n usernameAttribute: 'userName',\n validateInput: false,\n _type: {\n _id: 'ValidatedUsernameNode',\n name: 'Platform Username',\n collection: true,\n },\n _outcomes: [\n {\n id: 'outcome',\n displayName: 'Outcome',\n },\n ],\n },\n };\n const node2 = {\n id: '18ffdd4b-41b7-41b3-8248-f4fdfd68423f',\n type: 'ValidatedPasswordNode',\n node: {\n validateInput: false,\n passwordAttribute: 'password',\n _type: {\n _id: 'ValidatedPasswordNode',\n name: 'Platform Password',\n collection: true,\n },\n _outcomes: [\n {\n id: 'outcome',\n displayName: 'Outcome',\n },\n ],\n },\n };\n const node3 = {\n id: 'b726262c-641e-4fa5-b276-98e129b44cd9',\n type: 'PatchObjectNode',\n node: {\n identityResource: 'managed/user',\n patchAsObject: false,\n ignoredFields: [],\n identityAttribute: 'userName',\n _type: {\n _id: 'PatchObjectNode',\n name: 'Patch Object',\n collection: true,\n },\n _outcomes: [\n {\n id: 'PATCHED',\n displayName: 'Patched',\n },\n {\n id: 'FAILURE',\n displayName: 'Failed',\n },\n ],\n },\n };\n const node4 = {\n id: '23bab9d4-1663-450f-8a4b-680f44f54fd6',\n type: 'CreateObjectNode',\n node: {\n identityResource: 'managed/user',\n _type: {\n _id: 'CreateObjectNode',\n name: 'Create Object',\n collection: true,\n },\n _outcomes: [\n {\n id: 'CREATED',\n displayName: 'Created',\n },\n {\n id: 'FAILURE',\n displayName: 'Failed',\n },\n ],\n },\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n // setup node1 - delete if exists, then create\n try {\n await NodeRaw.getNode(node1.id, node1.type);\n await NodeRaw.deleteNode(node1.id, node1.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node1.id, node1.type, node1.node);\n }\n // setup node2 - delete if exists\n try {\n await NodeRaw.getNode(node2.id, node2.type);\n await NodeRaw.deleteNode(node2.id, node2.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node2.id, node2.type, node2.node);\n }\n // setup node3 - delete if exists, then create\n try {\n await NodeRaw.getNode(node3.id, node3.type);\n await NodeRaw.deleteNode(node3.id, node3.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node3.id, node3.type, node3.node);\n }\n // setup node4 - delete if exists, then create\n try {\n await NodeRaw.getNode(node4.id, node4.type);\n await NodeRaw.deleteNode(node4.id, node4.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node4.id, node4.type, node4.node);\n }\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n try {\n await NodeRaw.getNode(node1.id, node1.type);\n await NodeRaw.deleteNode(node1.id, node1.type);\n } catch (error) {\n // ignore\n }\n try {\n await NodeRaw.getNode(node2.id, node2.type);\n await NodeRaw.deleteNode(node2.id, node2.type);\n } catch (error) {\n // ignore\n }\n try {\n await NodeRaw.getNode(node3.id, node3.type);\n await NodeRaw.deleteNode(node3.id, node3.type);\n } catch (error) {\n // ignore\n }\n try {\n await NodeRaw.getNode(node4.id, node4.type);\n await NodeRaw.deleteNode(node4.id, node4.type);\n } catch (error) {\n // ignore\n }\n }\n });\n\n describe('getNodeTypes()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNodeTypes).toBeDefined();\n });\n\n test('1: Get all node types', async () => {\n const response = await NodeRaw.getNodeTypes();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getNodes()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNodes).toBeDefined();\n });\n\n test('1: Get all nodes', async () => {\n const response = await NodeRaw.getNodes();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getNodesByType()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNodesByType).toBeDefined();\n });\n\n test('1: Get all page nodes', async () => {\n const response = await NodeRaw.getNodesByType('PageNode');\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getNode()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNode).toBeDefined();\n });\n\n test(`1: Get existing node [${node1.id} - ${node1.type}]`, async () => {\n const response = await NodeRaw.getNode(node1.id, node1.type);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get non-existing node [00000000-0000-0000-0000-000000000000 - PageNode]', async () => {\n expect.assertions(1);\n try {\n await NodeRaw.getNode(\n '00000000-0000-0000-0000-000000000000',\n 'PageNode'\n );\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('putNode()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.putNode).toBeDefined();\n });\n\n test(`1: Create new node [${node2.id} - ${node2.type}]`, async () => {\n const response = await NodeRaw.putNode(node2.id, node2.type, node2.node);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Update existing node [${node3.id} - ${node3.type}]`, async () => {\n const node = await NodeRaw.putNode(node3.id, node3.type, node3.node);\n expect(node).toMatchSnapshot();\n });\n });\n\n describe('deleteNode()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.deleteNode).toBeDefined();\n });\n\n test(`1: Delete existing node [${node4.id} - ${node4.type}]`, async () => {\n const node = await NodeRaw.deleteNode(node4.id, node4.type);\n expect(node).toMatchSnapshot();\n });\n\n test('2: Delete non-existing node [00000000-0000-0000-0000-000000000000 - PageNode]', async () => {\n expect.assertions(1);\n try {\n await NodeRaw.deleteNode(\n '00000000-0000-0000-0000-000000000000',\n 'PageNode'\n );\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NodeApi.test.js","names":["NodeRaw","autoSetupPolly","describe","node1","id","type","node","usernameAttribute","validateInput","_type","_id","name","collection","_outcomes","displayName","node2","passwordAttribute","node3","identityResource","patchAsObject","ignoredFields","identityAttribute","node4","beforeAll","process","env","FRODO_POLLY_MODE","getNode","deleteNode","error","putNode","afterAll","test","expect","getNodeTypes","toBeDefined","response","toMatchSnapshot","getNodes","getNodesByType","assertions","data"],"sources":["../../src/api/NodeApi.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=volker-dev npm run test:record NodeApi\n *\n * The above command assumes that you have a connection profile for\n * 'volker-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update NodeApi\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only NodeApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { NodeRaw } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\ndescribe('NodeApi', () => {\n const node1 = {\n id: '67693475-3a58-4e38-bcc6-037b3fe46a58',\n type: 'ValidatedUsernameNode',\n node: {\n usernameAttribute: 'userName',\n validateInput: false,\n _type: {\n _id: 'ValidatedUsernameNode',\n name: 'Platform Username',\n collection: true,\n },\n _outcomes: [\n {\n id: 'outcome',\n displayName: 'Outcome',\n },\n ],\n },\n };\n const node2 = {\n id: '18ffdd4b-41b7-41b3-8248-f4fdfd68423f',\n type: 'ValidatedPasswordNode',\n node: {\n validateInput: false,\n passwordAttribute: 'password',\n _type: {\n _id: 'ValidatedPasswordNode',\n name: 'Platform Password',\n collection: true,\n },\n _outcomes: [\n {\n id: 'outcome',\n displayName: 'Outcome',\n },\n ],\n },\n };\n const node3 = {\n id: 'b726262c-641e-4fa5-b276-98e129b44cd9',\n type: 'PatchObjectNode',\n node: {\n identityResource: 'managed/user',\n patchAsObject: false,\n ignoredFields: [],\n identityAttribute: 'userName',\n _type: {\n _id: 'PatchObjectNode',\n name: 'Patch Object',\n collection: true,\n },\n _outcomes: [\n {\n id: 'PATCHED',\n displayName: 'Patched',\n },\n {\n id: 'FAILURE',\n displayName: 'Failed',\n },\n ],\n },\n };\n const node4 = {\n id: '23bab9d4-1663-450f-8a4b-680f44f54fd6',\n type: 'CreateObjectNode',\n node: {\n identityResource: 'managed/user',\n _type: {\n _id: 'CreateObjectNode',\n name: 'Create Object',\n collection: true,\n },\n _outcomes: [\n {\n id: 'CREATED',\n displayName: 'Created',\n },\n {\n id: 'FAILURE',\n displayName: 'Failed',\n },\n ],\n },\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n // setup node1 - delete if exists, then create\n try {\n await NodeRaw.getNode(node1.id, node1.type);\n await NodeRaw.deleteNode(node1.id, node1.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node1.id, node1.type, node1.node);\n }\n // setup node2 - delete if exists\n try {\n await NodeRaw.getNode(node2.id, node2.type);\n await NodeRaw.deleteNode(node2.id, node2.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node2.id, node2.type, node2.node);\n }\n // setup node3 - delete if exists, then create\n try {\n await NodeRaw.getNode(node3.id, node3.type);\n await NodeRaw.deleteNode(node3.id, node3.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node3.id, node3.type, node3.node);\n }\n // setup node4 - delete if exists, then create\n try {\n await NodeRaw.getNode(node4.id, node4.type);\n await NodeRaw.deleteNode(node4.id, node4.type);\n } catch (error) {\n // ignore\n } finally {\n await NodeRaw.putNode(node4.id, node4.type, node4.node);\n }\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n try {\n await NodeRaw.getNode(node1.id, node1.type);\n await NodeRaw.deleteNode(node1.id, node1.type);\n } catch (error) {\n // ignore\n }\n try {\n await NodeRaw.getNode(node2.id, node2.type);\n await NodeRaw.deleteNode(node2.id, node2.type);\n } catch (error) {\n // ignore\n }\n try {\n await NodeRaw.getNode(node3.id, node3.type);\n await NodeRaw.deleteNode(node3.id, node3.type);\n } catch (error) {\n // ignore\n }\n try {\n await NodeRaw.getNode(node4.id, node4.type);\n await NodeRaw.deleteNode(node4.id, node4.type);\n } catch (error) {\n // ignore\n }\n }\n });\n\n describe('getNodeTypes()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNodeTypes).toBeDefined();\n });\n\n test('1: Get all node types', async () => {\n const response = await NodeRaw.getNodeTypes();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getNodes()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNodes).toBeDefined();\n });\n\n test('1: Get all nodes', async () => {\n const response = await NodeRaw.getNodes();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getNodesByType()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNodesByType).toBeDefined();\n });\n\n test('1: Get all page nodes', async () => {\n const response = await NodeRaw.getNodesByType('PageNode');\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getNode()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.getNode).toBeDefined();\n });\n\n test(`1: Get existing node [${node1.id} - ${node1.type}]`, async () => {\n const response = await NodeRaw.getNode(node1.id, node1.type);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get non-existing node [00000000-0000-0000-0000-000000000000 - PageNode]', async () => {\n expect.assertions(1);\n try {\n await NodeRaw.getNode(\n '00000000-0000-0000-0000-000000000000',\n 'PageNode'\n );\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('putNode()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.putNode).toBeDefined();\n });\n\n test(`1: Create new node [${node2.id} - ${node2.type}]`, async () => {\n const response = await NodeRaw.putNode(node2.id, node2.type, node2.node);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Update existing node [${node3.id} - ${node3.type}]`, async () => {\n const node = await NodeRaw.putNode(node3.id, node3.type, node3.node);\n expect(node).toMatchSnapshot();\n });\n });\n\n describe('deleteNode()', () => {\n test('0: Method is implemented', async () => {\n expect(NodeRaw.deleteNode).toBeDefined();\n });\n\n test(`1: Delete existing node [${node4.id} - ${node4.type}]`, async () => {\n const node = await NodeRaw.deleteNode(node4.id, node4.type);\n expect(node).toMatchSnapshot();\n });\n\n test('2: Delete non-existing node [00000000-0000-0000-0000-000000000000 - PageNode]', async () => {\n expect.assertions(1);\n try {\n await NodeRaw.deleteNode(\n '00000000-0000-0000-0000-000000000000',\n 'PageNode'\n );\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n});\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
import { generateAmApi } from
|
|
3
|
-
import { deleteDeepByKey, getCurrentRealmPath } from
|
|
4
|
-
import * as state from
|
|
2
|
+
import { generateAmApi } from "./BaseApi.js";
|
|
3
|
+
import { deleteDeepByKey, getCurrentRealmPath } from "./utils/ApiUtils.js";
|
|
4
|
+
import * as state from "../shared/State.js";
|
|
5
5
|
const oauth2ClientURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client/%s';
|
|
6
6
|
const oauth2ClientListURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client?_queryFilter=true';
|
|
7
7
|
const apiVersion = 'protocol=2.1,resource=1.0';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2ClientApi.js","names":["util","generateAmApi","deleteDeepByKey","getCurrentRealmPath","state","oauth2ClientURLTemplate","oauth2ClientListURLTemplate","apiVersion","getApiConfig","configPath","path","getOAuth2Clients","urlString","format","getHost","data","get","withCredentials","getOAuth2Client","id","putOAuth2Client","clientData","client","_provider","_rev","put","deleteOAuth2Client","delete"],"sources":["../../src/api/OAuth2ClientApi.ts"],"sourcesContent":["import util from 'util';\nimport { generateAmApi } from './BaseApi';\nimport { deleteDeepByKey, getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\nimport { OAuth2ClientSkeleton, PagedResults } from './ApiTypes';\n\nconst oauth2ClientURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client/%s';\nconst oauth2ClientListURLTemplate =\n '%s/json%s/realm-config/agents/OAuth2Client?_queryFilter=true';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/realm-config/agents/OAuth2Client`,\n apiVersion,\n };\n};\n\n/**\n * Get OAuth2 Clients\n * @returns {Promise<PagedResults>} a promise that resolves to a PagedResults object containing an array of oauth2client objects\n */\nexport async function getOAuth2Clients(): Promise<PagedResults> {\n const urlString = util.format(\n oauth2ClientListURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get OAuth2 Client\n * @param {string} id client id\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function getOAuth2Client(\n id: string\n): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put OAuth2 Client\n * @param {string} id client id\n * @param {OAuth2ClientSkeleton} clientData oauth2client object\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function putOAuth2Client(\n id: string,\n clientData: OAuth2ClientSkeleton\n): Promise<OAuth2ClientSkeleton> {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const client = deleteDeepByKey(clientData, '-encrypted');\n delete client._provider;\n delete client._rev;\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).put(urlString, client, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete OAuth2 Client\n * @param {string} id OAuth2 Client\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2client object\n */\nexport async function deleteOAuth2Client(\n id: string\n): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"OAuth2ClientApi.js","names":["util","generateAmApi","deleteDeepByKey","getCurrentRealmPath","state","oauth2ClientURLTemplate","oauth2ClientListURLTemplate","apiVersion","getApiConfig","configPath","path","getOAuth2Clients","urlString","format","getHost","data","get","withCredentials","getOAuth2Client","id","putOAuth2Client","clientData","client","_provider","_rev","put","deleteOAuth2Client","delete"],"sources":["../../src/api/OAuth2ClientApi.ts"],"sourcesContent":["import util from 'util';\nimport { generateAmApi } from './BaseApi';\nimport { deleteDeepByKey, getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\nimport { OAuth2ClientSkeleton, PagedResults } from './ApiTypes';\n\nconst oauth2ClientURLTemplate = '%s/json%s/realm-config/agents/OAuth2Client/%s';\nconst oauth2ClientListURLTemplate =\n '%s/json%s/realm-config/agents/OAuth2Client?_queryFilter=true';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/realm-config/agents/OAuth2Client`,\n apiVersion,\n };\n};\n\n/**\n * Get OAuth2 Clients\n * @returns {Promise<PagedResults>} a promise that resolves to a PagedResults object containing an array of oauth2client objects\n */\nexport async function getOAuth2Clients(): Promise<PagedResults> {\n const urlString = util.format(\n oauth2ClientListURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get OAuth2 Client\n * @param {string} id client id\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function getOAuth2Client(\n id: string\n): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put OAuth2 Client\n * @param {string} id client id\n * @param {OAuth2ClientSkeleton} clientData oauth2client object\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2 client object\n */\nexport async function putOAuth2Client(\n id: string,\n clientData: OAuth2ClientSkeleton\n): Promise<OAuth2ClientSkeleton> {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const client = deleteDeepByKey(clientData, '-encrypted');\n delete client._provider;\n delete client._rev;\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).put(urlString, client, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete OAuth2 Client\n * @param {string} id OAuth2 Client\n * @returns {Promise<OAuth2ClientSkeleton>} a promise that resolves to an oauth2client object\n */\nexport async function deleteOAuth2Client(\n id: string\n): Promise<OAuth2ClientSkeleton> {\n const urlString = util.format(\n oauth2ClientURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n id\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAAC,SACfC,aAAa;AAAA,SACbC,eAAe,EAAEC,mBAAmB;AAAA,OACtC,KAAKC,KAAK;AAGjB,MAAMC,uBAAuB,GAAG,+CAA+C;AAC/E,MAAMC,2BAA2B,GAC/B,8DAA8D;AAChE,MAAMC,UAAU,GAAG,2BAA2B;AAC9C,MAAMC,YAAY,GAAGA,CAAA,KAAM;EACzB,MAAMC,UAAU,GAAGN,mBAAmB,CAAC,CAAC;EACxC,OAAO;IACLO,IAAI,EAAG,GAAED,UAAW,mCAAkC;IACtDF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,eAAeI,gBAAgBA,CAAA,EAA0B;EAC9D,MAAMC,SAAS,GAAGZ,IAAI,CAACa,MAAM,CAC3BP,2BAA2B,EAC3BF,KAAK,CAACU,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CACtB,CAAC;EACD,MAAM;IAAEY;EAAK,CAAC,GAAG,MAAMd,aAAa,CAACO,YAAY,CAAC,CAAC,CAAC,CAACQ,GAAG,CAACJ,SAAS,EAAE;IAClEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeG,eAAeA,CACnCC,EAAU,EACqB;EAC/B,MAAMP,SAAS,GAAGZ,IAAI,CAACa,MAAM,CAC3BR,uBAAuB,EACvBD,KAAK,CAACU,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBgB,EACF,CAAC;EACD,MAAM;IAAEJ;EAAK,CAAC,GAAG,MAAMd,aAAa,CAACO,YAAY,CAAC,CAAC,CAAC,CAACQ,GAAG,CAACJ,SAAS,EAAE;IAClEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,eAAeA,CACnCD,EAAU,EACVE,UAAgC,EACD;EAC/B;EACA;EACA,MAAMC,MAAM,GAAGpB,eAAe,CAACmB,UAAU,EAAE,YAAY,CAAC;EACxD,OAAOC,MAAM,CAACC,SAAS;EACvB,OAAOD,MAAM,CAACE,IAAI;EAClB,MAAMZ,SAAS,GAAGZ,IAAI,CAACa,MAAM,CAC3BR,uBAAuB,EACvBD,KAAK,CAACU,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBgB,EACF,CAAC;EACD,MAAM;IAAEJ;EAAK,CAAC,GAAG,MAAMd,aAAa,CAACO,YAAY,CAAC,CAAC,CAAC,CAACiB,GAAG,CAACb,SAAS,EAAEU,MAAM,EAAE;IAC1EL,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeW,kBAAkBA,CACtCP,EAAU,EACqB;EAC/B,MAAMP,SAAS,GAAGZ,IAAI,CAACa,MAAM,CAC3BR,uBAAuB,EACvBD,KAAK,CAACU,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBgB,EACF,CAAC;EACD,MAAM;IAAEJ;EAAK,CAAC,GAAG,MAAMd,aAAa,CAACO,YAAY,CAAC,CAAC,CAAC,CAACmB,MAAM,CAACf,SAAS,EAAE;IACrEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb"}
|
package/esm/api/OAuth2OIDCApi.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
2
|
import qs from 'qs';
|
|
3
|
-
import { generateOauth2Api } from
|
|
4
|
-
import { getCurrentRealmPath } from
|
|
5
|
-
import * as state from
|
|
6
|
-
import { encode } from
|
|
3
|
+
import { generateOauth2Api } from "./BaseApi.js";
|
|
4
|
+
import { getCurrentRealmPath } from "./utils/ApiUtils.js";
|
|
5
|
+
import * as state from "../shared/State.js";
|
|
6
|
+
import { encode } from "./utils/Base64.js";
|
|
7
7
|
const authorizeUrlTemplate = '%s/oauth2%s/authorize';
|
|
8
8
|
const accessTokenUrlTemplate = '%s/oauth2%s/access_token';
|
|
9
9
|
const tokenInfoUrlTemplate = '%s/oauth2%s/tokeninfo';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2OIDCApi.js","names":["util","qs","generateOauth2Api","getCurrentRealmPath","state","encode","authorizeUrlTemplate","accessTokenUrlTemplate","tokenInfoUrlTemplate","apiVersion","getApiConfig","authorize","data","config","authorizeURL","format","getHost","post","accessToken","accessTokenURL","getTokenInfo","get","clientCredentialsGrant","clientId","clientSecret","scope","urlString","requestOverride","headers","Authorization","requestBody","grant_type","stringify","withCredentials"],"sources":["../../src/api/OAuth2OIDCApi.ts"],"sourcesContent":["import util from 'util';\nimport qs from 'qs';\nimport { generateOauth2Api } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\nimport { encode } from './utils/Base64';\nimport { AxiosRequestConfig } from 'axios';\n\nconst authorizeUrlTemplate = '%s/oauth2%s/authorize';\nconst accessTokenUrlTemplate = '%s/oauth2%s/access_token';\nconst tokenInfoUrlTemplate = '%s/oauth2%s/tokeninfo';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => ({\n apiVersion,\n});\n\n/**\n * Perform the authorization step of the authorization code grant flow\n * @param {String} data body form data\n * @param {Object} config axios request config object\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function authorize(data, config: AxiosRequestConfig = {}) {\n const authorizeURL = util.format(authorizeUrlTemplate, state.getHost(), '');\n return generateOauth2Api(getApiConfig()).post(authorizeURL, data, config);\n}\n\n/**\n * Perform access token request step of the authorization code grant flow\n * @param {*} data body form data\n * @param {*} config config axios request config object\n * @returns {Promise} a promise resolving to an object containing the authorization server response object containing the access token\n */\nexport async function accessToken(data, config: AxiosRequestConfig = {}) {\n const accessTokenURL = util.format(\n accessTokenUrlTemplate,\n state.getHost(),\n ''\n );\n return generateOauth2Api(getApiConfig()).post(accessTokenURL, data, config);\n}\n\nexport async function getTokenInfo(config: AxiosRequestConfig = {}) {\n const accessTokenURL = util.format(tokenInfoUrlTemplate, state.getHost(), '');\n const { data } = await generateOauth2Api(getApiConfig()).get(\n accessTokenURL,\n config\n );\n return data;\n}\n\n/**\n * Perform client credentials grant flow\n * @param {String} clientId client id\n * @param {String} clientSecret client secret\n * @param {String} scope space-delimited scope list\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function clientCredentialsGrant(clientId, clientSecret, scope) {\n const urlString = util.format(\n accessTokenUrlTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const requestOverride = {\n headers: {\n Authorization: `Basic ${encode(`${clientId}:${clientSecret}`)}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const requestBody = {\n grant_type: 'client_credentials',\n scope,\n };\n const { data } = await generateOauth2Api(\n getApiConfig(),\n requestOverride\n ).post(urlString, qs.stringify(requestBody), { withCredentials: true });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,OAAOC,EAAE,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"OAuth2OIDCApi.js","names":["util","qs","generateOauth2Api","getCurrentRealmPath","state","encode","authorizeUrlTemplate","accessTokenUrlTemplate","tokenInfoUrlTemplate","apiVersion","getApiConfig","authorize","data","config","authorizeURL","format","getHost","post","accessToken","accessTokenURL","getTokenInfo","get","clientCredentialsGrant","clientId","clientSecret","scope","urlString","requestOverride","headers","Authorization","requestBody","grant_type","stringify","withCredentials"],"sources":["../../src/api/OAuth2OIDCApi.ts"],"sourcesContent":["import util from 'util';\nimport qs from 'qs';\nimport { generateOauth2Api } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\nimport { encode } from './utils/Base64';\nimport { AxiosRequestConfig } from 'axios';\n\nconst authorizeUrlTemplate = '%s/oauth2%s/authorize';\nconst accessTokenUrlTemplate = '%s/oauth2%s/access_token';\nconst tokenInfoUrlTemplate = '%s/oauth2%s/tokeninfo';\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => ({\n apiVersion,\n});\n\n/**\n * Perform the authorization step of the authorization code grant flow\n * @param {String} data body form data\n * @param {Object} config axios request config object\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function authorize(data, config: AxiosRequestConfig = {}) {\n const authorizeURL = util.format(authorizeUrlTemplate, state.getHost(), '');\n return generateOauth2Api(getApiConfig()).post(authorizeURL, data, config);\n}\n\n/**\n * Perform access token request step of the authorization code grant flow\n * @param {*} data body form data\n * @param {*} config config axios request config object\n * @returns {Promise} a promise resolving to an object containing the authorization server response object containing the access token\n */\nexport async function accessToken(data, config: AxiosRequestConfig = {}) {\n const accessTokenURL = util.format(\n accessTokenUrlTemplate,\n state.getHost(),\n ''\n );\n return generateOauth2Api(getApiConfig()).post(accessTokenURL, data, config);\n}\n\nexport async function getTokenInfo(config: AxiosRequestConfig = {}) {\n const accessTokenURL = util.format(tokenInfoUrlTemplate, state.getHost(), '');\n const { data } = await generateOauth2Api(getApiConfig()).get(\n accessTokenURL,\n config\n );\n return data;\n}\n\n/**\n * Perform client credentials grant flow\n * @param {String} clientId client id\n * @param {String} clientSecret client secret\n * @param {String} scope space-delimited scope list\n * @returns {Promise} a promise resolving to an object containing the authorization server response object\n */\nexport async function clientCredentialsGrant(clientId, clientSecret, scope) {\n const urlString = util.format(\n accessTokenUrlTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const requestOverride = {\n headers: {\n Authorization: `Basic ${encode(`${clientId}:${clientSecret}`)}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const requestBody = {\n grant_type: 'client_credentials',\n scope,\n };\n const { data } = await generateOauth2Api(\n getApiConfig(),\n requestOverride\n ).post(urlString, qs.stringify(requestBody), { withCredentials: true });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,OAAOC,EAAE,MAAM,IAAI;AAAC,SACXC,iBAAiB;AAAA,SACjBC,mBAAmB;AAAA,OACrB,KAAKC,KAAK;AAAA,SACRC,MAAM;AAGf,MAAMC,oBAAoB,GAAG,uBAAuB;AACpD,MAAMC,sBAAsB,GAAG,0BAA0B;AACzD,MAAMC,oBAAoB,GAAG,uBAAuB;AACpD,MAAMC,UAAU,GAAG,2BAA2B;AAC9C,MAAMC,YAAY,GAAGA,CAAA,MAAO;EAC1BD;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeE,SAASA,CAACC,IAAI,EAAEC,MAA0B,GAAG,CAAC,CAAC,EAAE;EACrE,MAAMC,YAAY,GAAGd,IAAI,CAACe,MAAM,CAACT,oBAAoB,EAAEF,KAAK,CAACY,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;EAC3E,OAAOd,iBAAiB,CAACQ,YAAY,CAAC,CAAC,CAAC,CAACO,IAAI,CAACH,YAAY,EAAEF,IAAI,EAAEC,MAAM,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,WAAWA,CAACN,IAAI,EAAEC,MAA0B,GAAG,CAAC,CAAC,EAAE;EACvE,MAAMM,cAAc,GAAGnB,IAAI,CAACe,MAAM,CAChCR,sBAAsB,EACtBH,KAAK,CAACY,OAAO,CAAC,CAAC,EACf,EACF,CAAC;EACD,OAAOd,iBAAiB,CAACQ,YAAY,CAAC,CAAC,CAAC,CAACO,IAAI,CAACE,cAAc,EAAEP,IAAI,EAAEC,MAAM,CAAC;AAC7E;AAEA,OAAO,eAAeO,YAAYA,CAACP,MAA0B,GAAG,CAAC,CAAC,EAAE;EAClE,MAAMM,cAAc,GAAGnB,IAAI,CAACe,MAAM,CAACP,oBAAoB,EAAEJ,KAAK,CAACY,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;EAC7E,MAAM;IAAEJ;EAAK,CAAC,GAAG,MAAMV,iBAAiB,CAACQ,YAAY,CAAC,CAAC,CAAC,CAACW,GAAG,CAC1DF,cAAc,EACdN,MACF,CAAC;EACD,OAAOD,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeU,sBAAsBA,CAACC,QAAQ,EAAEC,YAAY,EAAEC,KAAK,EAAE;EAC1E,MAAMC,SAAS,GAAG1B,IAAI,CAACe,MAAM,CAC3BR,sBAAsB,EACtBH,KAAK,CAACY,OAAO,CAAC,CAAC,EACfb,mBAAmB,CAAC,CACtB,CAAC;EACD,MAAMwB,eAAe,GAAG;IACtBC,OAAO,EAAE;MACPC,aAAa,EAAG,SAAQxB,MAAM,CAAE,GAAEkB,QAAS,IAAGC,YAAa,EAAC,CAAE,EAAC;MAC/D,cAAc,EAAE;IAClB;EACF,CAAC;EACD,MAAMM,WAAW,GAAG;IAClBC,UAAU,EAAE,oBAAoB;IAChCN;EACF,CAAC;EACD,MAAM;IAAEb;EAAK,CAAC,GAAG,MAAMV,iBAAiB,CACtCQ,YAAY,CAAC,CAAC,EACdiB,eACF,CAAC,CAACV,IAAI,CAACS,SAAS,EAAEzB,EAAE,CAAC+B,SAAS,CAACF,WAAW,CAAC,EAAE;IAAEG,eAAe,EAAE;EAAK,CAAC,CAAC;EACvE,OAAOrB,IAAI;AACb"}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import axios from 'axios';
|
|
7
7
|
import MockAdapter from 'axios-mock-adapter';
|
|
8
|
-
import { OAuth2OIDCApi, state } from
|
|
9
|
-
import * as global from
|
|
10
|
-
import { mockAuthorize, mockAccessToken } from
|
|
11
|
-
import { parseUrl } from
|
|
8
|
+
import { OAuth2OIDCApi, state } from "../index.js";
|
|
9
|
+
import * as global from "../storage/StaticStorage.js";
|
|
10
|
+
import { mockAuthorize, mockAccessToken } from "../test/mocks/ForgeRockApiMockEngine.js";
|
|
11
|
+
import { parseUrl } from "./utils/ApiUtils.js";
|
|
12
12
|
const mock = new MockAdapter(axios);
|
|
13
13
|
state.setHost('https://openam-frodo-dev.forgeblocks.com/am');
|
|
14
14
|
state.setRealm('alpha');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2OIDCApi.test.js","names":["axios","MockAdapter","OAuth2OIDCApi","state","global","mockAuthorize","mockAccessToken","parseUrl","mock","setHost","setRealm","setCookieName","setCookieValue","setDeploymentType","CLOUD_DEPLOYMENT_TYPE_KEY","describe","test","expect","authorize","toBeDefined","bodyFormData","getCookieValue","config","headers","validateStatus","status","response","redirectLocationURL","parsed","toBe","searchParam","toBeTruthy","accessToken","data","access_token"],"sources":["../../src/api/OAuth2OIDCApi.test.ts"],"sourcesContent":["/**\n * Don't convert this to Polly. Once MFA is enforced for tenant admins in ID Cloud,\n * it will be very cumbersome to use Polly for OAuth API calls, as they require an\n * admin user session, not a service account bearer token.\n */\nimport axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport { OAuth2OIDCApi, state } from '../index';\nimport * as global from '../storage/StaticStorage';\nimport {\n mockAuthorize,\n mockAccessToken,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { parseUrl } from './utils/ApiUtils';\n\nconst mock = new MockAdapter(axios);\n\nstate.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setCookieValue('cookieValue');\nstate.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);\n\ndescribe('OAuth2OIDCApi', () => {\n describe('authorize()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.authorize).toBeDefined();\n });\n\n test('1: Get authorization code', async () => {\n mockAuthorize(mock);\n const bodyFormData = `redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idmAdminClient&csrf=${state.getCookieValue()}&decision=allow&code_challenge=l_UNfjLP_eRKwLtvM2M86PxhF2pZyYp629TfJUqDNHY&code_challenge_method=S256`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n validateStatus: function (status: number) {\n // if this function returns true, no exception is thrown on a 302, which is the expected status code.\n return status === 302;\n },\n };\n const response = await OAuth2OIDCApi.authorize(bodyFormData, config);\n const redirectLocationURL = response.headers['location'];\n const parsed = parseUrl(redirectLocationURL);\n expect(response.status).toBe(302);\n expect(parsed.searchParam['code']).toBeTruthy();\n });\n });\n\n describe('accessToken()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.accessToken).toBeDefined();\n });\n\n test('1: Get access token', async () => {\n mockAccessToken(mock);\n const bodyFormData = `grant_type=authorization_code&code=PMA6VB9U_Ctiv6q8CAGphy_1vwQ&redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&code_verifier=QchYMz4ApoxmyZaFs0MJwZK9rmc8WU-kuoi3JM--CZq7-LmmtxB6_Lf0AtmumFFdOxY&client_id=idmAdminClient`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await OAuth2OIDCApi.accessToken(bodyFormData, config);\n expect(response.status).toBe(200);\n expect(response.data.access_token).toBeTruthy();\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAM,oBAAoB;
|
|
1
|
+
{"version":3,"file":"OAuth2OIDCApi.test.js","names":["axios","MockAdapter","OAuth2OIDCApi","state","global","mockAuthorize","mockAccessToken","parseUrl","mock","setHost","setRealm","setCookieName","setCookieValue","setDeploymentType","CLOUD_DEPLOYMENT_TYPE_KEY","describe","test","expect","authorize","toBeDefined","bodyFormData","getCookieValue","config","headers","validateStatus","status","response","redirectLocationURL","parsed","toBe","searchParam","toBeTruthy","accessToken","data","access_token"],"sources":["../../src/api/OAuth2OIDCApi.test.ts"],"sourcesContent":["/**\n * Don't convert this to Polly. Once MFA is enforced for tenant admins in ID Cloud,\n * it will be very cumbersome to use Polly for OAuth API calls, as they require an\n * admin user session, not a service account bearer token.\n */\nimport axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport { OAuth2OIDCApi, state } from '../index';\nimport * as global from '../storage/StaticStorage';\nimport {\n mockAuthorize,\n mockAccessToken,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { parseUrl } from './utils/ApiUtils';\n\nconst mock = new MockAdapter(axios);\n\nstate.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setCookieValue('cookieValue');\nstate.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);\n\ndescribe('OAuth2OIDCApi', () => {\n describe('authorize()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.authorize).toBeDefined();\n });\n\n test('1: Get authorization code', async () => {\n mockAuthorize(mock);\n const bodyFormData = `redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idmAdminClient&csrf=${state.getCookieValue()}&decision=allow&code_challenge=l_UNfjLP_eRKwLtvM2M86PxhF2pZyYp629TfJUqDNHY&code_challenge_method=S256`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n validateStatus: function (status: number) {\n // if this function returns true, no exception is thrown on a 302, which is the expected status code.\n return status === 302;\n },\n };\n const response = await OAuth2OIDCApi.authorize(bodyFormData, config);\n const redirectLocationURL = response.headers['location'];\n const parsed = parseUrl(redirectLocationURL);\n expect(response.status).toBe(302);\n expect(parsed.searchParam['code']).toBeTruthy();\n });\n });\n\n describe('accessToken()', () => {\n test('0: Method is implemented', async () => {\n expect(OAuth2OIDCApi.accessToken).toBeDefined();\n });\n\n test('1: Get access token', async () => {\n mockAccessToken(mock);\n const bodyFormData = `grant_type=authorization_code&code=PMA6VB9U_Ctiv6q8CAGphy_1vwQ&redirect_uri=https://openam-volker-dev.forgeblocks.com/platform/appAuthHelperRedirect.html&code_verifier=QchYMz4ApoxmyZaFs0MJwZK9rmc8WU-kuoi3JM--CZq7-LmmtxB6_Lf0AtmumFFdOxY&client_id=idmAdminClient`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n const response = await OAuth2OIDCApi.accessToken(bodyFormData, config);\n expect(response.status).toBe(200);\n expect(response.data.access_token).toBeTruthy();\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAM,oBAAoB;AAAC,SACpCC,aAAa,EAAEC,KAAK;AAAA,OACtB,KAAKC,MAAM;AAAA,SAEhBC,aAAa,EACbC,eAAe;AAAA,SAERC,QAAQ;AAEjB,MAAMC,IAAI,GAAG,IAAIP,WAAW,CAACD,KAAK,CAAC;AAEnCG,KAAK,CAACM,OAAO,CAAC,6CAA6C,CAAC;AAC5DN,KAAK,CAACO,QAAQ,CAAC,OAAO,CAAC;AACvBP,KAAK,CAACQ,aAAa,CAAC,YAAY,CAAC;AACjCR,KAAK,CAACS,cAAc,CAAC,aAAa,CAAC;AACnCT,KAAK,CAACU,iBAAiB,CAACT,MAAM,CAACU,yBAAyB,CAAC;AAEzDC,QAAQ,CAAC,eAAe,EAAE,MAAM;EAC9BA,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC5BC,IAAI,CAAC,0BAA0B,EAAE,YAAY;MAC3CC,MAAM,CAACf,aAAa,CAACgB,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEFH,IAAI,CAAC,2BAA2B,EAAE,YAAY;MAC5CX,aAAa,CAACG,IAAI,CAAC;MACnB,MAAMY,YAAY,GAAI,qKAAoKjB,KAAK,CAACkB,cAAc,CAAC,CAAE,uGAAsG;MACvT,MAAMC,MAAM,GAAG;QACbC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB,CAAC;QACDC,cAAc,EAAE,SAAAA,CAAUC,MAAc,EAAE;UACxC;UACA,OAAOA,MAAM,KAAK,GAAG;QACvB;MACF,CAAC;MACD,MAAMC,QAAQ,GAAG,MAAMxB,aAAa,CAACgB,SAAS,CAACE,YAAY,EAAEE,MAAM,CAAC;MACpE,MAAMK,mBAAmB,GAAGD,QAAQ,CAACH,OAAO,CAAC,UAAU,CAAC;MACxD,MAAMK,MAAM,GAAGrB,QAAQ,CAACoB,mBAAmB,CAAC;MAC5CV,MAAM,CAACS,QAAQ,CAACD,MAAM,CAAC,CAACI,IAAI,CAAC,GAAG,CAAC;MACjCZ,MAAM,CAACW,MAAM,CAACE,WAAW,CAAC,MAAM,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhB,QAAQ,CAAC,eAAe,EAAE,MAAM;IAC9BC,IAAI,CAAC,0BAA0B,EAAE,YAAY;MAC3CC,MAAM,CAACf,aAAa,CAAC8B,WAAW,CAAC,CAACb,WAAW,CAAC,CAAC;IACjD,CAAC,CAAC;IAEFH,IAAI,CAAC,qBAAqB,EAAE,YAAY;MACtCV,eAAe,CAACE,IAAI,CAAC;MACrB,MAAMY,YAAY,GAAI,sQAAqQ;MAC3R,MAAME,MAAM,GAAG;QACbC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB;MACF,CAAC;MACD,MAAMG,QAAQ,GAAG,MAAMxB,aAAa,CAAC8B,WAAW,CAACZ,YAAY,EAAEE,MAAM,CAAC;MACtEL,MAAM,CAACS,QAAQ,CAACD,MAAM,CAAC,CAACI,IAAI,CAAC,GAAG,CAAC;MACjCZ,MAAM,CAACS,QAAQ,CAACO,IAAI,CAACC,YAAY,CAAC,CAACH,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
import { generateAmApi } from
|
|
3
|
-
import { getCurrentRealmPath } from
|
|
4
|
-
import * as state from
|
|
2
|
+
import { generateAmApi } from "./BaseApi.js";
|
|
3
|
+
import { getCurrentRealmPath } from "./utils/ApiUtils.js";
|
|
4
|
+
import * as state from "../shared/State.js";
|
|
5
5
|
const oauthProviderServiceURLTemplate = '%s/json%s/realm-config/services/oauth-oidc';
|
|
6
6
|
const apiVersion = 'protocol=2.1,resource=1.0';
|
|
7
7
|
const getApiConfig = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2ProviderApi.js","names":["util","generateAmApi","getCurrentRealmPath","state","oauthProviderServiceURLTemplate","apiVersion","getApiConfig","configPath","path","getOAuth2Provider","urlString","format","getHost","data","get","withCredentials"],"sources":["../../src/api/OAuth2ProviderApi.ts"],"sourcesContent":["import util from 'util';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\n\nconst oauthProviderServiceURLTemplate =\n '%s/json%s/realm-config/services/oauth-oidc';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/authentication/authenticationtrees`,\n apiVersion,\n };\n};\n\n/**\n * Get OAuth2 Provider\n * @returns {Promise} a promise that resolves to an OAuth2Provider object\n */\nexport async function getOAuth2Provider() {\n const urlString = util.format(\n oauthProviderServiceURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"OAuth2ProviderApi.js","names":["util","generateAmApi","getCurrentRealmPath","state","oauthProviderServiceURLTemplate","apiVersion","getApiConfig","configPath","path","getOAuth2Provider","urlString","format","getHost","data","get","withCredentials"],"sources":["../../src/api/OAuth2ProviderApi.ts"],"sourcesContent":["import util from 'util';\nimport { generateAmApi } from './BaseApi';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport * as state from '../shared/State';\n\nconst oauthProviderServiceURLTemplate =\n '%s/json%s/realm-config/services/oauth-oidc';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/authentication/authenticationtrees`,\n apiVersion,\n };\n};\n\n/**\n * Get OAuth2 Provider\n * @returns {Promise} a promise that resolves to an OAuth2Provider object\n */\nexport async function getOAuth2Provider() {\n const urlString = util.format(\n oauthProviderServiceURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAAC,SACfC,aAAa;AAAA,SACbC,mBAAmB;AAAA,OACrB,KAAKC,KAAK;AAEjB,MAAMC,+BAA+B,GACnC,4CAA4C;AAE9C,MAAMC,UAAU,GAAG,2BAA2B;AAC9C,MAAMC,YAAY,GAAGA,CAAA,KAAM;EACzB,MAAMC,UAAU,GAAGL,mBAAmB,CAAC,CAAC;EACxC,OAAO;IACLM,IAAI,EAAG,GAAED,UAAW,qCAAoC;IACxDF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,eAAeI,iBAAiBA,CAAA,EAAG;EACxC,MAAMC,SAAS,GAAGV,IAAI,CAACW,MAAM,CAC3BP,+BAA+B,EAC/BD,KAAK,CAACS,OAAO,CAAC,CAAC,EACfV,mBAAmB,CAAC,CACtB,CAAC;EACD,MAAM;IAAEW;EAAK,CAAC,GAAG,MAAMZ,aAAa,CAACK,YAAY,CAAC,CAAC,CAAC,CAACQ,GAAG,CAACJ,SAAS,EAAE;IAClEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb"}
|
package/esm/api/PoliciesApi.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
import { getCurrentRealmPath } from
|
|
3
|
-
import { generateAmApi } from
|
|
4
|
-
import * as state from
|
|
2
|
+
import { getCurrentRealmPath } from "./utils/ApiUtils.js";
|
|
3
|
+
import { generateAmApi } from "./BaseApi.js";
|
|
4
|
+
import * as state from "../shared/State.js";
|
|
5
5
|
// const queryAllPoliciesByApplicationURLTemplate =
|
|
6
6
|
// '%s/json%s/policies?_sortKeys=name&_queryFilter=applicationName+eq+%22%s%22';
|
|
7
7
|
const queryAllPoliciesURLTemplate = '%s/json%s/policies?_queryFilter=true';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PoliciesApi.js","names":["util","getCurrentRealmPath","generateAmApi","state","queryAllPoliciesURLTemplate","queryPoliciesByPolicySetURLTemplate","policyURLTemplate","apiVersion","getApiConfig","getPolicies","urlString","format","getHost","data","get","withCredentials","getPoliciesByPolicySet","policySetId","getPolicy","policyId","putPolicy","policyData","put","deletePolicy","delete"],"sources":["../../src/api/PoliciesApi.ts"],"sourcesContent":["import util from 'util';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport * as state from '../shared/State';\nimport { PolicySkeleton } from './ApiTypes';\n\n// const queryAllPoliciesByApplicationURLTemplate =\n// '%s/json%s/policies?_sortKeys=name&_queryFilter=applicationName+eq+%22%s%22';\nconst queryAllPoliciesURLTemplate = '%s/json%s/policies?_queryFilter=true';\nconst queryPoliciesByPolicySetURLTemplate =\n '%s/json%s/policies?_queryFilter=applicationName+eq+%22%s%22';\nconst policyURLTemplate = '%s/json%s/policies/%s';\n\nconst apiVersion = 'resource=2.1';\nconst getApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\n/**\n * Get all policies\n * @returns {Promise} a promise that resolves to an object containing an array of policy objects\n */\nexport async function getPolicies() {\n const urlString = util.format(\n queryAllPoliciesURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get policies by policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise} a promise that resolves to an object containing an array of policy objects\n */\nexport async function getPoliciesByPolicySet(policySetId: string) {\n const urlString = util.format(\n queryPoliciesByPolicySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get policy\n * @param {String} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function getPolicy(policyId: string): Promise<PolicySkeleton> {\n const urlString = util.format(\n policyURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policyId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put policy\n * @param {String} policyId policy id/name\n * @param {Object} policyData policy object\n * @returns {Promise} a promise that resolves to a policy object\n */\nexport async function putPolicy(policyId: string, policyData: PolicySkeleton) {\n const urlString = util.format(\n policyURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policyId\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n policyData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete policy\n * @param {Object} policyId policy id/name\n * @returns {Promise} a promise that resolves to a policy object\n */\nexport async function deletePolicy(policyId: string) {\n const urlString = util.format(\n policyURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policyId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"PoliciesApi.js","names":["util","getCurrentRealmPath","generateAmApi","state","queryAllPoliciesURLTemplate","queryPoliciesByPolicySetURLTemplate","policyURLTemplate","apiVersion","getApiConfig","getPolicies","urlString","format","getHost","data","get","withCredentials","getPoliciesByPolicySet","policySetId","getPolicy","policyId","putPolicy","policyData","put","deletePolicy","delete"],"sources":["../../src/api/PoliciesApi.ts"],"sourcesContent":["import util from 'util';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport * as state from '../shared/State';\nimport { PolicySkeleton } from './ApiTypes';\n\n// const queryAllPoliciesByApplicationURLTemplate =\n// '%s/json%s/policies?_sortKeys=name&_queryFilter=applicationName+eq+%22%s%22';\nconst queryAllPoliciesURLTemplate = '%s/json%s/policies?_queryFilter=true';\nconst queryPoliciesByPolicySetURLTemplate =\n '%s/json%s/policies?_queryFilter=applicationName+eq+%22%s%22';\nconst policyURLTemplate = '%s/json%s/policies/%s';\n\nconst apiVersion = 'resource=2.1';\nconst getApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\n/**\n * Get all policies\n * @returns {Promise} a promise that resolves to an object containing an array of policy objects\n */\nexport async function getPolicies() {\n const urlString = util.format(\n queryAllPoliciesURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get policies by policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise} a promise that resolves to an object containing an array of policy objects\n */\nexport async function getPoliciesByPolicySet(policySetId: string) {\n const urlString = util.format(\n queryPoliciesByPolicySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get policy\n * @param {String} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function getPolicy(policyId: string): Promise<PolicySkeleton> {\n const urlString = util.format(\n policyURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policyId\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Put policy\n * @param {String} policyId policy id/name\n * @param {Object} policyData policy object\n * @returns {Promise} a promise that resolves to a policy object\n */\nexport async function putPolicy(policyId: string, policyData: PolicySkeleton) {\n const urlString = util.format(\n policyURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policyId\n );\n const { data } = await generateAmApi(getApiConfig()).put(\n urlString,\n policyData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Delete policy\n * @param {Object} policyId policy id/name\n * @returns {Promise} a promise that resolves to a policy object\n */\nexport async function deletePolicy(policyId: string) {\n const urlString = util.format(\n policyURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policyId\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAAC,SACfC,mBAAmB;AAAA,SACnBC,aAAa;AAAA,OACf,KAAKC,KAAK;AAGjB;AACA;AACA,MAAMC,2BAA2B,GAAG,sCAAsC;AAC1E,MAAMC,mCAAmC,GACvC,6DAA6D;AAC/D,MAAMC,iBAAiB,GAAG,uBAAuB;AAEjD,MAAMC,UAAU,GAAG,cAAc;AACjC,MAAMC,YAAY,GAAGA,CAAA,KAAM;EACzB,OAAO;IACLD;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,eAAeE,WAAWA,CAAA,EAAG;EAClC,MAAMC,SAAS,GAAGV,IAAI,CAACW,MAAM,CAC3BP,2BAA2B,EAC3BD,KAAK,CAACS,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CACtB,CAAC;EACD,MAAM;IAAEY;EAAK,CAAC,GAAG,MAAMX,aAAa,CAACM,YAAY,CAAC,CAAC,CAAC,CAACM,GAAG,CAACJ,SAAS,EAAE;IAClEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeG,sBAAsBA,CAACC,WAAmB,EAAE;EAChE,MAAMP,SAAS,GAAGV,IAAI,CAACW,MAAM,CAC3BN,mCAAmC,EACnCF,KAAK,CAACS,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBgB,WACF,CAAC;EACD,MAAM;IAAEJ;EAAK,CAAC,GAAG,MAAMX,aAAa,CAACM,YAAY,CAAC,CAAC,CAAC,CAACM,GAAG,CAACJ,SAAS,EAAE;IAClEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,SAASA,CAACC,QAAgB,EAA2B;EACzE,MAAMT,SAAS,GAAGV,IAAI,CAACW,MAAM,CAC3BL,iBAAiB,EACjBH,KAAK,CAACS,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBkB,QACF,CAAC;EACD,MAAM;IAAEN;EAAK,CAAC,GAAG,MAAMX,aAAa,CAACM,YAAY,CAAC,CAAC,CAAC,CAACM,GAAG,CAACJ,SAAS,EAAE;IAClEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeO,SAASA,CAACD,QAAgB,EAAEE,UAA0B,EAAE;EAC5E,MAAMX,SAAS,GAAGV,IAAI,CAACW,MAAM,CAC3BL,iBAAiB,EACjBH,KAAK,CAACS,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBkB,QACF,CAAC;EACD,MAAM;IAAEN;EAAK,CAAC,GAAG,MAAMX,aAAa,CAACM,YAAY,CAAC,CAAC,CAAC,CAACc,GAAG,CACtDZ,SAAS,EACTW,UAAU,EACV;IACEN,eAAe,EAAE;EACnB,CACF,CAAC;EACD,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeU,YAAYA,CAACJ,QAAgB,EAAE;EACnD,MAAMT,SAAS,GAAGV,IAAI,CAACW,MAAM,CAC3BL,iBAAiB,EACjBH,KAAK,CAACS,OAAO,CAAC,CAAC,EACfX,mBAAmB,CAAC,CAAC,EACrBkB,QACF,CAAC;EACD,MAAM;IAAEN;EAAK,CAAC,GAAG,MAAMX,aAAa,CAACM,YAAY,CAAC,CAAC,CAAC,CAACgB,MAAM,CAACd,SAAS,EAAE;IACrEK,eAAe,EAAE;EACnB,CAAC,CAAC;EACF,OAAOF,IAAI;AACb"}
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
* Note: FRODO_DEBUG=1 is optional and enables debug logging for some output
|
|
30
30
|
* in case things don't function as expected
|
|
31
31
|
*/
|
|
32
|
-
import * as PolicySetApi from
|
|
33
|
-
import * as PoliciesApi from
|
|
34
|
-
import { autoSetupPolly } from
|
|
35
|
-
import { cloneDeep } from
|
|
32
|
+
import * as PolicySetApi from "./PolicySetApi.js";
|
|
33
|
+
import * as PoliciesApi from "./PoliciesApi.js";
|
|
34
|
+
import { autoSetupPolly } from "../utils/AutoSetupPolly.js";
|
|
35
|
+
import { cloneDeep } from "../ops/utils/OpsUtils.js";
|
|
36
36
|
autoSetupPolly();
|
|
37
37
|
async function stagePolicySet(policySet, create = true) {
|
|
38
38
|
// delete if exists, then create
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PoliciesApi.test.js","names":["PolicySetApi","PoliciesApi","autoSetupPolly","cloneDeep","stagePolicySet","policySet","create","getPolicySet","name","deletePolicySet","error","createPolicySet","stagePolicy","policy","getPolicy","_id","deletePolicy","putPolicy","applyPolicyTemplate","template","policyId","configured","describe","set1","displayName","description","attributeNames","conditions","resourceTypeUuids","resourceComparator","editable","saveIndex","searchIndex","applicationType","entitlementCombiner","subjects","policyTemplate","active","resources","applicationName","actionValues","GET","subject","type","resourceTypeUuid","policy1","policy2","policy3","policy4","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","getPolicies","toBeDefined","response","toMatchSnapshot","getPoliciesByPolicySet","assertions","data","node"],"sources":["../../src/api/PoliciesApi.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record PoliciesApi\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update PoliciesApi\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only PoliciesApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport * as PolicySetApi from './PolicySetApi';\nimport * as PoliciesApi from './PoliciesApi';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { PolicySetSkeleton, PolicySkeleton } from './ApiTypes';\nimport { cloneDeep } from '../ops/utils/OpsUtils';\n\nautoSetupPolly();\n\nasync function stagePolicySet(policySet: PolicySetSkeleton, create = true) {\n // delete if exists, then create\n try {\n await PolicySetApi.getPolicySet(policySet.name);\n await PolicySetApi.deletePolicySet(policySet.name);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await PolicySetApi.createPolicySet(policySet);\n }\n }\n}\n\nasync function stagePolicy(policy: PolicySkeleton, create = true) {\n // delete if exists, then create\n try {\n await PoliciesApi.getPolicy(policy._id);\n await PoliciesApi.deletePolicy(policy._id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await PoliciesApi.putPolicy(policy._id, policy);\n }\n }\n}\n\nfunction applyPolicyTemplate(\n template: PolicySkeleton,\n policyId: string\n): PolicySkeleton {\n const configured: PolicySkeleton = cloneDeep(template);\n configured._id = policyId;\n configured.name = policyId;\n return configured;\n}\n\ndescribe('PoliciesApi', () => {\n const set1: PolicySetSkeleton = {\n name: 'FrodoTestPolicySet1',\n displayName: 'Frodo Test Policy Set',\n description: null,\n attributeNames: [],\n conditions: [\n 'Script',\n 'AMIdentityMembership',\n 'IPv6',\n 'IPv4',\n 'SimpleTime',\n 'LEAuthLevel',\n 'LDAPFilter',\n 'AuthScheme',\n 'Session',\n 'AND',\n 'AuthenticateToRealm',\n 'ResourceEnvIP',\n 'Policy',\n 'OAuth2Scope',\n 'SessionProperty',\n 'OR',\n 'Transaction',\n 'NOT',\n 'AuthLevel',\n 'AuthenticateToService',\n ],\n resourceTypeUuids: ['76656a38-5f8e-401b-83aa-4ccb74ce88d2'],\n resourceComparator: null,\n editable: true,\n saveIndex: null,\n searchIndex: null,\n applicationType: 'iPlanetAMWebAgentService',\n entitlementCombiner: 'DenyOverride',\n subjects: [\n 'AuthenticatedUsers',\n 'NOT',\n 'Identity',\n 'OR',\n 'AND',\n 'NONE',\n 'Policy',\n 'JwtClaim',\n ],\n };\n const policyTemplate: PolicySkeleton = {\n _id: 'FrodoTestPolicyTemplate',\n name: 'FrodoTestPolicyTemplate',\n active: true,\n description: 'Frodo Test Policy',\n resources: ['*://*:*/forgerock/app2/*', '*://*:*/app2/*'],\n applicationName: set1.name,\n actionValues: {\n GET: true,\n },\n subject: {\n type: 'AuthenticatedUsers',\n },\n resourceTypeUuid: '76656a38-5f8e-401b-83aa-4ccb74ce88d2',\n };\n const policy1 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy1');\n const policy2 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy2');\n const policy3 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy3');\n const policy4 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy4');\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicySet(set1);\n await stagePolicy(policy1);\n await stagePolicy(policy2);\n await stagePolicy(policy3, false);\n await stagePolicy(policy4);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicy(policy1, false);\n await stagePolicy(policy2, false);\n await stagePolicy(policy3, false);\n await stagePolicy(policy4, false);\n await stagePolicySet(set1, false);\n }\n });\n\n describe('getPolicies()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.getPolicies).toBeDefined();\n });\n\n test('1: Get all policies', async () => {\n const response = await PoliciesApi.getPolicies();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getPoliciesByPolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.getPoliciesByPolicySet).toBeDefined();\n });\n\n test(`1: Get policies in existing policy set [${set1.name}]`, async () => {\n const response = await PoliciesApi.getPoliciesByPolicySet(set1.name);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get policies in non-existing policy set [DoesNotExist]', async () => {\n const response = await PoliciesApi.getPoliciesByPolicySet('DoesNotExist');\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getPolicy()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.getPolicy).toBeDefined();\n });\n\n test(`1: Get existing policy [${policy1._id}]`, async () => {\n const response = await PoliciesApi.getPolicy(policy1._id);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get non-existing policy [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PoliciesApi.getPolicy('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('putPolicy()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.putPolicy).toBeDefined();\n });\n\n test(`1: Update existing policy [${policy2._id}]`, async () => {\n const response = await PoliciesApi.putPolicy(policy2._id, policy2);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Create non-existing policy [${policy3._id}]`, async () => {\n const response = await PoliciesApi.putPolicy(policy3._id, policy3);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('deletePolicy()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.deletePolicy).toBeDefined();\n });\n\n test(`1: Delete existing policy [${policy4.name}]`, async () => {\n const node = await PoliciesApi.deletePolicy(policy4.name);\n expect(node).toMatchSnapshot();\n });\n\n test('2: Delete non-existing policy [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PoliciesApi.deletePolicy('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PoliciesApi.test.js","names":["PolicySetApi","PoliciesApi","autoSetupPolly","cloneDeep","stagePolicySet","policySet","create","getPolicySet","name","deletePolicySet","error","createPolicySet","stagePolicy","policy","getPolicy","_id","deletePolicy","putPolicy","applyPolicyTemplate","template","policyId","configured","describe","set1","displayName","description","attributeNames","conditions","resourceTypeUuids","resourceComparator","editable","saveIndex","searchIndex","applicationType","entitlementCombiner","subjects","policyTemplate","active","resources","applicationName","actionValues","GET","subject","type","resourceTypeUuid","policy1","policy2","policy3","policy4","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","getPolicies","toBeDefined","response","toMatchSnapshot","getPoliciesByPolicySet","assertions","data","node"],"sources":["../../src/api/PoliciesApi.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record PoliciesApi\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update PoliciesApi\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only PoliciesApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport * as PolicySetApi from './PolicySetApi';\nimport * as PoliciesApi from './PoliciesApi';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { PolicySetSkeleton, PolicySkeleton } from './ApiTypes';\nimport { cloneDeep } from '../ops/utils/OpsUtils';\n\nautoSetupPolly();\n\nasync function stagePolicySet(policySet: PolicySetSkeleton, create = true) {\n // delete if exists, then create\n try {\n await PolicySetApi.getPolicySet(policySet.name);\n await PolicySetApi.deletePolicySet(policySet.name);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await PolicySetApi.createPolicySet(policySet);\n }\n }\n}\n\nasync function stagePolicy(policy: PolicySkeleton, create = true) {\n // delete if exists, then create\n try {\n await PoliciesApi.getPolicy(policy._id);\n await PoliciesApi.deletePolicy(policy._id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await PoliciesApi.putPolicy(policy._id, policy);\n }\n }\n}\n\nfunction applyPolicyTemplate(\n template: PolicySkeleton,\n policyId: string\n): PolicySkeleton {\n const configured: PolicySkeleton = cloneDeep(template);\n configured._id = policyId;\n configured.name = policyId;\n return configured;\n}\n\ndescribe('PoliciesApi', () => {\n const set1: PolicySetSkeleton = {\n name: 'FrodoTestPolicySet1',\n displayName: 'Frodo Test Policy Set',\n description: null,\n attributeNames: [],\n conditions: [\n 'Script',\n 'AMIdentityMembership',\n 'IPv6',\n 'IPv4',\n 'SimpleTime',\n 'LEAuthLevel',\n 'LDAPFilter',\n 'AuthScheme',\n 'Session',\n 'AND',\n 'AuthenticateToRealm',\n 'ResourceEnvIP',\n 'Policy',\n 'OAuth2Scope',\n 'SessionProperty',\n 'OR',\n 'Transaction',\n 'NOT',\n 'AuthLevel',\n 'AuthenticateToService',\n ],\n resourceTypeUuids: ['76656a38-5f8e-401b-83aa-4ccb74ce88d2'],\n resourceComparator: null,\n editable: true,\n saveIndex: null,\n searchIndex: null,\n applicationType: 'iPlanetAMWebAgentService',\n entitlementCombiner: 'DenyOverride',\n subjects: [\n 'AuthenticatedUsers',\n 'NOT',\n 'Identity',\n 'OR',\n 'AND',\n 'NONE',\n 'Policy',\n 'JwtClaim',\n ],\n };\n const policyTemplate: PolicySkeleton = {\n _id: 'FrodoTestPolicyTemplate',\n name: 'FrodoTestPolicyTemplate',\n active: true,\n description: 'Frodo Test Policy',\n resources: ['*://*:*/forgerock/app2/*', '*://*:*/app2/*'],\n applicationName: set1.name,\n actionValues: {\n GET: true,\n },\n subject: {\n type: 'AuthenticatedUsers',\n },\n resourceTypeUuid: '76656a38-5f8e-401b-83aa-4ccb74ce88d2',\n };\n const policy1 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy1');\n const policy2 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy2');\n const policy3 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy3');\n const policy4 = applyPolicyTemplate(policyTemplate, 'FrodoTestPolicy4');\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicySet(set1);\n await stagePolicy(policy1);\n await stagePolicy(policy2);\n await stagePolicy(policy3, false);\n await stagePolicy(policy4);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicy(policy1, false);\n await stagePolicy(policy2, false);\n await stagePolicy(policy3, false);\n await stagePolicy(policy4, false);\n await stagePolicySet(set1, false);\n }\n });\n\n describe('getPolicies()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.getPolicies).toBeDefined();\n });\n\n test('1: Get all policies', async () => {\n const response = await PoliciesApi.getPolicies();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getPoliciesByPolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.getPoliciesByPolicySet).toBeDefined();\n });\n\n test(`1: Get policies in existing policy set [${set1.name}]`, async () => {\n const response = await PoliciesApi.getPoliciesByPolicySet(set1.name);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get policies in non-existing policy set [DoesNotExist]', async () => {\n const response = await PoliciesApi.getPoliciesByPolicySet('DoesNotExist');\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getPolicy()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.getPolicy).toBeDefined();\n });\n\n test(`1: Get existing policy [${policy1._id}]`, async () => {\n const response = await PoliciesApi.getPolicy(policy1._id);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get non-existing policy [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PoliciesApi.getPolicy('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('putPolicy()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.putPolicy).toBeDefined();\n });\n\n test(`1: Update existing policy [${policy2._id}]`, async () => {\n const response = await PoliciesApi.putPolicy(policy2._id, policy2);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Create non-existing policy [${policy3._id}]`, async () => {\n const response = await PoliciesApi.putPolicy(policy3._id, policy3);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('deletePolicy()', () => {\n test('0: Method is implemented', async () => {\n expect(PoliciesApi.deletePolicy).toBeDefined();\n });\n\n test(`1: Delete existing policy [${policy4.name}]`, async () => {\n const node = await PoliciesApi.deletePolicy(policy4.name);\n expect(node).toMatchSnapshot();\n });\n\n test('2: Delete non-existing policy [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PoliciesApi.deletePolicy('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n});\n"],"mappings":"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"}
|
package/esm/api/PolicySetApi.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
import { getCurrentRealmPath } from
|
|
3
|
-
import { generateAmApi } from
|
|
4
|
-
import * as state from
|
|
5
|
-
import { cloneDeep } from
|
|
2
|
+
import { getCurrentRealmPath } from "./utils/ApiUtils.js";
|
|
3
|
+
import { generateAmApi } from "./BaseApi.js";
|
|
4
|
+
import * as state from "../shared/State.js";
|
|
5
|
+
import { cloneDeep } from "../ops/utils/OpsUtils.js";
|
|
6
6
|
const queryAllPolicySetURLTemplate = '%s/json%s/applications?_sortKeys=name&_queryFilter=name+eq+%22%5E(%3F!sunAMDelegationService%24).*%22';
|
|
7
7
|
const policySetURLTemplate = '%s/json%s/applications/%s';
|
|
8
8
|
const createApplicationURLTemplate = '%s/json%s/applications/?_action=create';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicySetApi.js","names":["util","getCurrentRealmPath","generateAmApi","state","cloneDeep","queryAllPolicySetURLTemplate","policySetURLTemplate","createApplicationURLTemplate","apiVersion","getApiConfig","getPolicySets","urlString","format","getHost","data","get","withCredentials","getPolicySet","policySetName","createPolicySet","policySetData","postData","post","updatePolicySet","appData","name","put","deletePolicySet","delete"],"sources":["../../src/api/PolicySetApi.ts"],"sourcesContent":["import util from 'util';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport * as state from '../shared/State';\nimport { cloneDeep } from '../ops/utils/OpsUtils';\nimport { PolicySetSkeleton } from './ApiTypes';\n\nconst queryAllPolicySetURLTemplate =\n '%s/json%s/applications?_sortKeys=name&_queryFilter=name+eq+%22%5E(%3F!sunAMDelegationService%24).*%22';\nconst policySetURLTemplate = '%s/json%s/applications/%s';\nconst createApplicationURLTemplate = '%s/json%s/applications/?_action=create';\n\nconst apiVersion = 'protocol=1.0,resource=2.1';\nconst getApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\n/**\n * Get all policy sets\n * @returns {Promise} a promise that resolves to an object containing an array of policy set objects\n */\nexport async function getPolicySets() {\n const urlString = util.format(\n queryAllPolicySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get policy set\n * @param {string} policySetName policy set name\n * @returns {Promise<PolicySetSkeleton>} a promise that resolves to an object containing an array of policy set objects\n */\nexport async function getPolicySet(\n policySetName: string\n): Promise<PolicySetSkeleton> {\n const urlString = util.format(\n policySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetName\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create a policy set\n * @param {Object} policySetData Object representing an policy set\n * @returns {Promise} a promise that resolves to a policy set object\n */\nexport async function createPolicySet(policySetData) {\n const postData = cloneDeep(policySetData);\n const urlString = util.format(\n createApplicationURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n\n const { data } = await generateAmApi(getApiConfig()).post(\n urlString,\n postData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Update policy set\n * @param {Object} policySetData Object representing a policy set\n * @returns {Promise} a promise that resolves to a policy set object\n */\nexport async function updatePolicySet(policySetData) {\n const appData = cloneDeep(policySetData);\n const urlString = util.format(\n policySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetData.name\n );\n const { data } = await generateAmApi(getApiConfig()).put(urlString, appData, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete policy set\n * @param {Object} policySetName policy set name\n * @returns {Promise} a promise that resolves to a policy set object\n */\nexport async function deletePolicySet(policySetName: string) {\n const urlString = util.format(\n policySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetName\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"PolicySetApi.js","names":["util","getCurrentRealmPath","generateAmApi","state","cloneDeep","queryAllPolicySetURLTemplate","policySetURLTemplate","createApplicationURLTemplate","apiVersion","getApiConfig","getPolicySets","urlString","format","getHost","data","get","withCredentials","getPolicySet","policySetName","createPolicySet","policySetData","postData","post","updatePolicySet","appData","name","put","deletePolicySet","delete"],"sources":["../../src/api/PolicySetApi.ts"],"sourcesContent":["import util from 'util';\nimport { getCurrentRealmPath } from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport * as state from '../shared/State';\nimport { cloneDeep } from '../ops/utils/OpsUtils';\nimport { PolicySetSkeleton } from './ApiTypes';\n\nconst queryAllPolicySetURLTemplate =\n '%s/json%s/applications?_sortKeys=name&_queryFilter=name+eq+%22%5E(%3F!sunAMDelegationService%24).*%22';\nconst policySetURLTemplate = '%s/json%s/applications/%s';\nconst createApplicationURLTemplate = '%s/json%s/applications/?_action=create';\n\nconst apiVersion = 'protocol=1.0,resource=2.1';\nconst getApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\n/**\n * Get all policy sets\n * @returns {Promise} a promise that resolves to an object containing an array of policy set objects\n */\nexport async function getPolicySets() {\n const urlString = util.format(\n queryAllPolicySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get policy set\n * @param {string} policySetName policy set name\n * @returns {Promise<PolicySetSkeleton>} a promise that resolves to an object containing an array of policy set objects\n */\nexport async function getPolicySet(\n policySetName: string\n): Promise<PolicySetSkeleton> {\n const urlString = util.format(\n policySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetName\n );\n const { data } = await generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create a policy set\n * @param {Object} policySetData Object representing an policy set\n * @returns {Promise} a promise that resolves to a policy set object\n */\nexport async function createPolicySet(policySetData) {\n const postData = cloneDeep(policySetData);\n const urlString = util.format(\n createApplicationURLTemplate,\n state.getHost(),\n getCurrentRealmPath()\n );\n\n const { data } = await generateAmApi(getApiConfig()).post(\n urlString,\n postData,\n {\n withCredentials: true,\n }\n );\n return data;\n}\n\n/**\n * Update policy set\n * @param {Object} policySetData Object representing a policy set\n * @returns {Promise} a promise that resolves to a policy set object\n */\nexport async function updatePolicySet(policySetData) {\n const appData = cloneDeep(policySetData);\n const urlString = util.format(\n policySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetData.name\n );\n const { data } = await generateAmApi(getApiConfig()).put(urlString, appData, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete policy set\n * @param {Object} policySetName policy set name\n * @returns {Promise} a promise that resolves to a policy set object\n */\nexport async function deletePolicySet(policySetName: string) {\n const urlString = util.format(\n policySetURLTemplate,\n state.getHost(),\n getCurrentRealmPath(),\n policySetName\n );\n const { data } = await generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
* Note: FRODO_DEBUG=1 is optional and enables debug logging for some output
|
|
30
30
|
* in case things don't function as expected
|
|
31
31
|
*/
|
|
32
|
-
import * as PolicySetApi from
|
|
33
|
-
import { autoSetupPolly } from
|
|
34
|
-
import { cloneDeep } from
|
|
32
|
+
import * as PolicySetApi from "./PolicySetApi.js";
|
|
33
|
+
import { autoSetupPolly } from "../utils/AutoSetupPolly.js";
|
|
34
|
+
import { cloneDeep } from "../ops/utils/OpsUtils.js";
|
|
35
35
|
autoSetupPolly();
|
|
36
36
|
async function stagePolicySet(policySet, create = true) {
|
|
37
37
|
// delete if exists, then create
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicySetApi.test.js","names":["PolicySetApi","autoSetupPolly","cloneDeep","stagePolicySet","policySet","create","getPolicySet","name","deletePolicySet","error","createPolicySet","applyPolicySetTemplate","template","configured","describe","policySetTemplate","displayName","description","attributeNames","conditions","resourceTypeUuids","resourceComparator","editable","saveIndex","searchIndex","applicationType","entitlementCombiner","subjects","set1","set2","set3","set4","set5","set6","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","getPolicySets","toBeDefined","response","toMatchSnapshot","assertions","data","updatePolicySet","node"],"sources":["../../src/api/PolicySetApi.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record PolicySetApi\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update PolicySetApi\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only PolicySetApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport * as PolicySetApi from './PolicySetApi';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { PolicySetSkeleton } from './ApiTypes';\nimport { cloneDeep } from '../ops/utils/OpsUtils';\n\nautoSetupPolly();\n\nasync function stagePolicySet(policySet: PolicySetSkeleton, create = true) {\n // delete if exists, then create\n try {\n await PolicySetApi.getPolicySet(policySet.name);\n await PolicySetApi.deletePolicySet(policySet.name);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await PolicySetApi.createPolicySet(policySet);\n }\n }\n}\n\nfunction applyPolicySetTemplate(\n template: PolicySetSkeleton,\n name: string\n): PolicySetSkeleton {\n const configured: PolicySetSkeleton = cloneDeep(template);\n configured.name = name;\n return configured;\n}\n\ndescribe('PolicySetApi', () => {\n const policySetTemplate: PolicySetSkeleton = {\n name: 'FrodoTestPolicySetTemplate',\n displayName: 'Frodo Test Policy Set Template',\n description: null,\n attributeNames: [],\n conditions: [\n 'Script',\n 'AMIdentityMembership',\n 'IPv6',\n 'IPv4',\n 'SimpleTime',\n 'LEAuthLevel',\n 'LDAPFilter',\n 'AuthScheme',\n 'Session',\n 'AND',\n 'AuthenticateToRealm',\n 'ResourceEnvIP',\n 'Policy',\n 'OAuth2Scope',\n 'SessionProperty',\n 'OR',\n 'Transaction',\n 'NOT',\n 'AuthLevel',\n 'AuthenticateToService',\n ],\n resourceTypeUuids: ['76656a38-5f8e-401b-83aa-4ccb74ce88d2'],\n resourceComparator: null,\n editable: true,\n saveIndex: null,\n searchIndex: null,\n applicationType: 'iPlanetAMWebAgentService',\n entitlementCombiner: 'DenyOverride',\n subjects: [\n 'AuthenticatedUsers',\n 'NOT',\n 'Identity',\n 'OR',\n 'AND',\n 'NONE',\n 'Policy',\n 'JwtClaim',\n ],\n };\n const set1 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet1');\n const set2 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet2');\n const set3 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet3');\n const set4 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet4');\n const set5 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet5');\n const set6 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet6');\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicySet(set1);\n await stagePolicySet(set2, false);\n await stagePolicySet(set3);\n await stagePolicySet(set4);\n await stagePolicySet(set5, false);\n await stagePolicySet(set6);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicySet(set1, false);\n await stagePolicySet(set2, false);\n await stagePolicySet(set3, false);\n await stagePolicySet(set4, false);\n await stagePolicySet(set5, false);\n await stagePolicySet(set6, false);\n }\n });\n\n describe('getPolicySets()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.getPolicySets).toBeDefined();\n });\n\n test('1: Get all policy sets', async () => {\n const response = await PolicySetApi.getPolicySets();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getPolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.getPolicySet).toBeDefined();\n });\n\n test(`1: Get existing policy set [${set1.name}]`, async () => {\n const response = await PolicySetApi.getPolicySet(set1.name);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get non-existing policy set by uuid [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.getPolicySet('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('createPolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.createPolicySet).toBeDefined();\n });\n\n test(`1: Create non-existing policy set [${set2.name}]`, async () => {\n const response = await PolicySetApi.createPolicySet(set2);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Create existing policy set [${set3.name}]`, async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.createPolicySet(set3);\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('updatePolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.updatePolicySet).toBeDefined();\n });\n\n test(`1: Update existing policy set [${set4.name}]`, async () => {\n const response = await PolicySetApi.updatePolicySet(set4);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Update non-existing policy set [${set5.name}]`, async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.updatePolicySet(set5);\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('deletePolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.deletePolicySet).toBeDefined();\n });\n\n test(`1: Delete existing policy set [${set6.name}]`, async () => {\n const node = await PolicySetApi.deletePolicySet(set6.name);\n expect(node).toMatchSnapshot();\n });\n\n test('2: Delete non-existing policy set [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.deletePolicySet('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolicySetApi.test.js","names":["PolicySetApi","autoSetupPolly","cloneDeep","stagePolicySet","policySet","create","getPolicySet","name","deletePolicySet","error","createPolicySet","applyPolicySetTemplate","template","configured","describe","policySetTemplate","displayName","description","attributeNames","conditions","resourceTypeUuids","resourceComparator","editable","saveIndex","searchIndex","applicationType","entitlementCombiner","subjects","set1","set2","set3","set4","set5","set6","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","getPolicySets","toBeDefined","response","toMatchSnapshot","assertions","data","updatePolicySet","node"],"sources":["../../src/api/PolicySetApi.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record PolicySetApi\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update PolicySetApi\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only PolicySetApi\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport * as PolicySetApi from './PolicySetApi';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { PolicySetSkeleton } from './ApiTypes';\nimport { cloneDeep } from '../ops/utils/OpsUtils';\n\nautoSetupPolly();\n\nasync function stagePolicySet(policySet: PolicySetSkeleton, create = true) {\n // delete if exists, then create\n try {\n await PolicySetApi.getPolicySet(policySet.name);\n await PolicySetApi.deletePolicySet(policySet.name);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await PolicySetApi.createPolicySet(policySet);\n }\n }\n}\n\nfunction applyPolicySetTemplate(\n template: PolicySetSkeleton,\n name: string\n): PolicySetSkeleton {\n const configured: PolicySetSkeleton = cloneDeep(template);\n configured.name = name;\n return configured;\n}\n\ndescribe('PolicySetApi', () => {\n const policySetTemplate: PolicySetSkeleton = {\n name: 'FrodoTestPolicySetTemplate',\n displayName: 'Frodo Test Policy Set Template',\n description: null,\n attributeNames: [],\n conditions: [\n 'Script',\n 'AMIdentityMembership',\n 'IPv6',\n 'IPv4',\n 'SimpleTime',\n 'LEAuthLevel',\n 'LDAPFilter',\n 'AuthScheme',\n 'Session',\n 'AND',\n 'AuthenticateToRealm',\n 'ResourceEnvIP',\n 'Policy',\n 'OAuth2Scope',\n 'SessionProperty',\n 'OR',\n 'Transaction',\n 'NOT',\n 'AuthLevel',\n 'AuthenticateToService',\n ],\n resourceTypeUuids: ['76656a38-5f8e-401b-83aa-4ccb74ce88d2'],\n resourceComparator: null,\n editable: true,\n saveIndex: null,\n searchIndex: null,\n applicationType: 'iPlanetAMWebAgentService',\n entitlementCombiner: 'DenyOverride',\n subjects: [\n 'AuthenticatedUsers',\n 'NOT',\n 'Identity',\n 'OR',\n 'AND',\n 'NONE',\n 'Policy',\n 'JwtClaim',\n ],\n };\n const set1 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet1');\n const set2 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet2');\n const set3 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet3');\n const set4 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet4');\n const set5 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet5');\n const set6 = applyPolicySetTemplate(policySetTemplate, 'FrodoTestPolicySet6');\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicySet(set1);\n await stagePolicySet(set2, false);\n await stagePolicySet(set3);\n await stagePolicySet(set4);\n await stagePolicySet(set5, false);\n await stagePolicySet(set6);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stagePolicySet(set1, false);\n await stagePolicySet(set2, false);\n await stagePolicySet(set3, false);\n await stagePolicySet(set4, false);\n await stagePolicySet(set5, false);\n await stagePolicySet(set6, false);\n }\n });\n\n describe('getPolicySets()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.getPolicySets).toBeDefined();\n });\n\n test('1: Get all policy sets', async () => {\n const response = await PolicySetApi.getPolicySets();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getPolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.getPolicySet).toBeDefined();\n });\n\n test(`1: Get existing policy set [${set1.name}]`, async () => {\n const response = await PolicySetApi.getPolicySet(set1.name);\n expect(response).toMatchSnapshot();\n });\n\n test('2: Get non-existing policy set by uuid [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.getPolicySet('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('createPolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.createPolicySet).toBeDefined();\n });\n\n test(`1: Create non-existing policy set [${set2.name}]`, async () => {\n const response = await PolicySetApi.createPolicySet(set2);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Create existing policy set [${set3.name}]`, async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.createPolicySet(set3);\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('updatePolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.updatePolicySet).toBeDefined();\n });\n\n test(`1: Update existing policy set [${set4.name}]`, async () => {\n const response = await PolicySetApi.updatePolicySet(set4);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Update non-existing policy set [${set5.name}]`, async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.updatePolicySet(set5);\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n\n describe('deletePolicySet()', () => {\n test('0: Method is implemented', async () => {\n expect(PolicySetApi.deletePolicySet).toBeDefined();\n });\n\n test(`1: Delete existing policy set [${set6.name}]`, async () => {\n const node = await PolicySetApi.deletePolicySet(set6.name);\n expect(node).toMatchSnapshot();\n });\n\n test('2: Delete non-existing policy set [DoesNotExist]', async () => {\n expect.assertions(1);\n try {\n await PolicySetApi.deletePolicySet('DoesNotExist');\n } catch (error) {\n expect(error.response.data).toMatchSnapshot();\n }\n });\n });\n});\n"],"mappings":"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"}
|
package/esm/api/RealmApi.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
import { getTenantURL, getCurrentRealmPath, getRealmName } from
|
|
3
|
-
import { generateAmApi } from
|
|
4
|
-
import * as state from
|
|
2
|
+
import { getTenantURL, getCurrentRealmPath, getRealmName } from "./utils/ApiUtils.js";
|
|
3
|
+
import { generateAmApi } from "./BaseApi.js";
|
|
4
|
+
import * as state from "../shared/State.js";
|
|
5
5
|
const realmsListURLTemplate = '%s/json/global-config/realms/?_queryFilter=true';
|
|
6
6
|
const realmURLTemplate = '%s/json/global-config/realms/%s';
|
|
7
7
|
const apiVersion = 'protocol=2.0,resource=1.0';
|
package/esm/api/RealmApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealmApi.js","names":["util","getTenantURL","getCurrentRealmPath","getRealmName","generateAmApi","state","realmsListURLTemplate","realmURLTemplate","apiVersion","getApiConfig","configPath","path","getRealms","urlString","format","getHost","get","withCredentials","getRealm","id","getRealmByName","name","then","realms","realm","data","result","Error","putRealm","put","deleteRealm","delete"],"sources":["../../src/api/RealmApi.ts"],"sourcesContent":["import util from 'util';\nimport {\n getTenantURL,\n getCurrentRealmPath,\n getRealmName,\n} from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport * as state from '../shared/State';\n\nconst realmsListURLTemplate = '%s/json/global-config/realms/?_queryFilter=true';\nconst realmURLTemplate = '%s/json/global-config/realms/%s';\n\nconst apiVersion = 'protocol=2.0,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/am/json/global-config/realms`,\n apiVersion,\n };\n};\n\n/**\n * Get all realms\n * @returns {Promise} a promise that resolves to an object containing an array of realm objects\n */\nexport async function getRealms() {\n const urlString = util.format(realmsListURLTemplate, state.getHost());\n return generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get realm by id\n * @param {String} id realm id\n * @returns {Promise} a promise that resolves to an object containing a realm object\n */\nexport async function getRealm(id) {\n const urlString = util.format(realmURLTemplate, state.getHost(), id);\n return generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get realm by name\n * @param {String} name realm name\n * @returns {Promise} a promise that resolves to a realm object\n */\nexport async function getRealmByName(name) {\n return getRealms().then((realms) => {\n for (const realm of realms.data.result) {\n if (getRealmName(name) === realm.name) {\n return realm;\n }\n }\n throw new Error(`Realm ${name} not found!`);\n });\n}\n\n/**\n * Put realm\n * @param {String} id realm id\n * @param {Object} data realm config object\n * @returns {Promise} a promise that resolves to an object containing a realm object\n */\nexport async function putRealm(id, data) {\n const urlString = util.format(realmURLTemplate, state.getHost(), id);\n return generateAmApi(getApiConfig()).put(urlString, data, {\n withCredentials: true,\n });\n}\n\n/**\n * Delete realm\n * @param {String} id realm id\n * @returns {Promise} a promise that resolves to an object containing a realm object\n */\nexport async function deleteRealm(id) {\n const urlString = util.format(\n realmURLTemplate,\n getTenantURL(state.getHost()),\n id\n );\n return generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"RealmApi.js","names":["util","getTenantURL","getCurrentRealmPath","getRealmName","generateAmApi","state","realmsListURLTemplate","realmURLTemplate","apiVersion","getApiConfig","configPath","path","getRealms","urlString","format","getHost","get","withCredentials","getRealm","id","getRealmByName","name","then","realms","realm","data","result","Error","putRealm","put","deleteRealm","delete"],"sources":["../../src/api/RealmApi.ts"],"sourcesContent":["import util from 'util';\nimport {\n getTenantURL,\n getCurrentRealmPath,\n getRealmName,\n} from './utils/ApiUtils';\nimport { generateAmApi } from './BaseApi';\nimport * as state from '../shared/State';\n\nconst realmsListURLTemplate = '%s/json/global-config/realms/?_queryFilter=true';\nconst realmURLTemplate = '%s/json/global-config/realms/%s';\n\nconst apiVersion = 'protocol=2.0,resource=1.0';\nconst getApiConfig = () => {\n const configPath = getCurrentRealmPath();\n return {\n path: `${configPath}/am/json/global-config/realms`,\n apiVersion,\n };\n};\n\n/**\n * Get all realms\n * @returns {Promise} a promise that resolves to an object containing an array of realm objects\n */\nexport async function getRealms() {\n const urlString = util.format(realmsListURLTemplate, state.getHost());\n return generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get realm by id\n * @param {String} id realm id\n * @returns {Promise} a promise that resolves to an object containing a realm object\n */\nexport async function getRealm(id) {\n const urlString = util.format(realmURLTemplate, state.getHost(), id);\n return generateAmApi(getApiConfig()).get(urlString, {\n withCredentials: true,\n });\n}\n\n/**\n * Get realm by name\n * @param {String} name realm name\n * @returns {Promise} a promise that resolves to a realm object\n */\nexport async function getRealmByName(name) {\n return getRealms().then((realms) => {\n for (const realm of realms.data.result) {\n if (getRealmName(name) === realm.name) {\n return realm;\n }\n }\n throw new Error(`Realm ${name} not found!`);\n });\n}\n\n/**\n * Put realm\n * @param {String} id realm id\n * @param {Object} data realm config object\n * @returns {Promise} a promise that resolves to an object containing a realm object\n */\nexport async function putRealm(id, data) {\n const urlString = util.format(realmURLTemplate, state.getHost(), id);\n return generateAmApi(getApiConfig()).put(urlString, data, {\n withCredentials: true,\n });\n}\n\n/**\n * Delete realm\n * @param {String} id realm id\n * @returns {Promise} a promise that resolves to an object containing a realm object\n */\nexport async function deleteRealm(id) {\n const urlString = util.format(\n realmURLTemplate,\n getTenantURL(state.getHost()),\n id\n );\n return generateAmApi(getApiConfig()).delete(urlString, {\n withCredentials: true,\n });\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAAC,SAEtBC,YAAY,EACZC,mBAAmB,EACnBC,YAAY;AAAA,SAELC,aAAa;AAAA,OACf,KAAKC,KAAK;AAEjB,MAAMC,qBAAqB,GAAG,iDAAiD;AAC/E,MAAMC,gBAAgB,GAAG,iCAAiC;AAE1D,MAAMC,UAAU,GAAG,2BAA2B;AAC9C,MAAMC,YAAY,GAAGA,CAAA,KAAM;EACzB,MAAMC,UAAU,GAAGR,mBAAmB,CAAC,CAAC;EACxC,OAAO;IACLS,IAAI,EAAG,GAAED,UAAW,+BAA8B;IAClDF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,eAAeI,SAASA,CAAA,EAAG;EAChC,MAAMC,SAAS,GAAGb,IAAI,CAACc,MAAM,CAACR,qBAAqB,EAAED,KAAK,CAACU,OAAO,CAAC,CAAC,CAAC;EACrE,OAAOX,aAAa,CAACK,YAAY,CAAC,CAAC,CAAC,CAACO,GAAG,CAACH,SAAS,EAAE;IAClDI,eAAe,EAAE;EACnB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,QAAQA,CAACC,EAAE,EAAE;EACjC,MAAMN,SAAS,GAAGb,IAAI,CAACc,MAAM,CAACP,gBAAgB,EAAEF,KAAK,CAACU,OAAO,CAAC,CAAC,EAAEI,EAAE,CAAC;EACpE,OAAOf,aAAa,CAACK,YAAY,CAAC,CAAC,CAAC,CAACO,GAAG,CAACH,SAAS,EAAE;IAClDI,eAAe,EAAE;EACnB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeG,cAAcA,CAACC,IAAI,EAAE;EACzC,OAAOT,SAAS,CAAC,CAAC,CAACU,IAAI,CAAEC,MAAM,IAAK;IAClC,KAAK,MAAMC,KAAK,IAAID,MAAM,CAACE,IAAI,CAACC,MAAM,EAAE;MACtC,IAAIvB,YAAY,CAACkB,IAAI,CAAC,KAAKG,KAAK,CAACH,IAAI,EAAE;QACrC,OAAOG,KAAK;MACd;IACF;IACA,MAAM,IAAIG,KAAK,CAAE,SAAQN,IAAK,aAAY,CAAC;EAC7C,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeO,QAAQA,CAACT,EAAE,EAAEM,IAAI,EAAE;EACvC,MAAMZ,SAAS,GAAGb,IAAI,CAACc,MAAM,CAACP,gBAAgB,EAAEF,KAAK,CAACU,OAAO,CAAC,CAAC,EAAEI,EAAE,CAAC;EACpE,OAAOf,aAAa,CAACK,YAAY,CAAC,CAAC,CAAC,CAACoB,GAAG,CAAChB,SAAS,EAAEY,IAAI,EAAE;IACxDR,eAAe,EAAE;EACnB,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAea,WAAWA,CAACX,EAAE,EAAE;EACpC,MAAMN,SAAS,GAAGb,IAAI,CAACc,MAAM,CAC3BP,gBAAgB,EAChBN,YAAY,CAACI,KAAK,CAACU,OAAO,CAAC,CAAC,CAAC,EAC7BI,EACF,CAAC;EACD,OAAOf,aAAa,CAACK,YAAY,CAAC,CAAC,CAAC,CAACsB,MAAM,CAAClB,SAAS,EAAE;IACrDI,eAAe,EAAE;EACnB,CAAC,CAAC;AACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import util from 'util';
|
|
2
|
-
import { getCurrentRealmPath } from
|
|
3
|
-
import { generateAmApi } from
|
|
4
|
-
import * as state from
|
|
2
|
+
import { getCurrentRealmPath } from "./utils/ApiUtils.js";
|
|
3
|
+
import { generateAmApi } from "./BaseApi.js";
|
|
4
|
+
import * as state from "../shared/State.js";
|
|
5
5
|
const queryAllResourceTypesURLTemplate = '%s/json%s/resourcetypes?_sortKeys=name&_queryFilter=name+eq+%22%5E(%3F!Delegation%20Service%24).*%22';
|
|
6
6
|
const queryResourceTypeByNameURLTemplate = '%s/json%s/resourcetypes?_sortKeys=name&_queryFilter=name+eq+%22%s%22+AND+name+eq+%22%5E(%3F!Delegation%20Service%24).*%22';
|
|
7
7
|
const resourceTypeURLTemplate = '%s/json%s/resourcetypes/%s';
|