@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
package/esm/ops/Saml2Ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saml2Ops.js","names":["_","Saml2ProiderLocation","createProvider","updateProvider","deleteRawProvider","findProviders","getProviderByLocationAndId","_getProviderByLocationAndId","getProviderMetadata","_getProviderMetadata","getProviderMetadataUrl","_getProviderMetadataUrl","getRawProvider","_getRawProvider","getProviders","getRawProviders","_getRawProviders","putRawProvider","_putRawProvider","deleteProviderByLocationAndId","getScript","decode","decodeBase64Url","encode","encodeBase64Url","putScript","debugMessage","printMessage","convertBase64TextToArray","convertBase64UrlTextToArray","convertTextArrayToBase64","convertTextArrayToBase64Url","getMetadata","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","createSaml2ExportTemplate","meta","script","saml","hosted","remote","metadata","getSaml2ProviderStubs","result","location","entityId64","entityId","exportDependencies","providerData","fileData","attrMapperScriptId","get","scriptData","idpAdapterScriptId","metaDataResponse","Error","_id","getSaml2ProviderStub","found","resultCount","getSaml2Provider","stub","id","deleteSaml2Provider","deleteSaml2Providers","providers","stubs","provider","push","length","exportSaml2Provider","exportData","error","message","exportSaml2Providers","importDependencies","getLocation","data","HOSTED","REMOTE","undefined","importSaml2Provider","importData","metaData","importSaml2Providers","myStatus","total","successes","warnings","failures","hostedIds","Object","keys","remoteIds","providerIds","concat","includes","importDependenciesErr","response","createProviderErr","updateProviderError","_updateProviderError$","deleteRawSaml2Provider","deleteRawSaml2Providers","applicationList","getRawSaml2Providers","deleteApplicationPromises","forEach","item","deleteApplicationResult","Promise","all","getRawSaml2Provider","putRawSaml2Provider","entityData"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import _ from 'lodash';\nimport {\n Saml2ProiderLocation,\n Saml2ProviderSkeleton,\n Saml2ProviderStub,\n} from '../api/ApiTypes';\nimport {\n createProvider,\n updateProvider,\n deleteRawProvider,\n findProviders,\n getProviderByLocationAndId as _getProviderByLocationAndId,\n getProviderMetadata as _getProviderMetadata,\n getProviderMetadataUrl as _getProviderMetadataUrl,\n getRawProvider as _getRawProvider,\n getProviders,\n getRawProviders as _getRawProviders,\n putRawProvider as _putRawProvider,\n deleteProviderByLocationAndId,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../api/utils/Base64';\nimport { MultiOpStatusInterface, Saml2ExportInterface } from './OpsTypes';\nimport { putScript } from './ScriptOps';\nimport { debugMessage, printMessage } from './utils/Console';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getMetadata,\n} from './utils/ExportImportUtils';\n\nexport const roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nexport function createSaml2ExportTemplate(): Saml2ExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n } as Saml2ExportInterface;\n}\n\n/**\n * Get SAML2 entity provider stubs\n * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs\n */\nexport async function getSaml2ProviderStubs(): Promise<Saml2ProviderStub[]> {\n const { result } = await getProviders();\n return result;\n}\n\n/**\n * Geta SAML2 entity provider by location and id\n * @param {string} location Entity provider location (hosted or remote)\n * @param {string} entityId64 Base64-encoded-without-padding provider entity id\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function getProviderByLocationAndId(\n location: string,\n entityId64: string\n) {\n return _getProviderByLocationAndId(location, entityId64);\n}\n\n/**\n * Get a SAML2 entity provider's metadata URL by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {string} the URL to get the metadata from\n */\nexport function getProviderMetadataUrl(entityId: string): string {\n return _getProviderMetadataUrl(entityId);\n}\n\n/**\n * Get a SAML2 entity provider's metadata by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {Promise<object>} a promise that resolves to an object containing a SAML2 metadata\n */\nexport async function getProviderMetadata(entityId) {\n return _getProviderMetadata(entityId);\n}\n\n/**\n * Include dependencies in the export file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = await getScript(attrMapperScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = await getScript(idpAdapterScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n if (!metaDataResponse) {\n throw new Error(\n `Unable to obtain metadata from ${getProviderMetadataUrl(\n providerData.entityId\n )}`\n );\n }\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse)\n );\n}\n\n/**\n *\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2ProviderStub(\n entityId: string\n): Promise<Saml2ProviderStub> {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: start [entityId=${entityId}]`);\n const found = await findProviders(`entityId eq '${entityId}'`);\n switch (found.resultCount) {\n case 0:\n throw new Error(`No provider with entity id '${entityId}' found`);\n case 1: {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: end [entityId=${entityId}]`);\n return found.result[0];\n }\n default:\n throw new Error(`Multiple providers with entity id '${entityId}' found`);\n }\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.getSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.getSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete an entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await deleteProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete all entity providers.\n * @returns {Promise<Saml2ProviderSkeleton[]>} Promise resolving to an array of Saml2ProviderSkeleton objects.\n */\nexport async function deleteSaml2Providers(): Promise<Saml2ProviderSkeleton[]> {\n debugMessage(`Saml2Ops.deleteSaml2Providers: start`);\n const providers: Saml2ProviderSkeleton[] = [];\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const provider = await deleteProviderByLocationAndId(\n stub.location,\n stub._id\n );\n providers.push(provider);\n }\n debugMessage(\n `Saml2Ops.deleteSaml2Providers: end [deleted ${providers.length} providers]`\n );\n return providers;\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Provider(\n entityId: string\n): Promise<Saml2ExportInterface> {\n debugMessage(`Saml2Ops.exportSaml2Provider: start [entityId=${entityId}]`);\n const exportData = createSaml2ExportTemplate();\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n exportData.saml[stub.location][providerData._id] = providerData;\n try {\n await exportDependencies(providerData, exportData);\n } catch (error) {\n printMessage(error.message, 'error');\n }\n debugMessage(`Saml2Ops.exportSaml2Provider: end [entityId=${entityId}]`);\n return exportData;\n}\n\n/**\n * Export all entity providers. The response can be saved to file as is.\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Providers(): Promise<Saml2ExportInterface> {\n const fileData = createSaml2ExportTemplate();\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const providerData = await getProviderByLocationAndId(\n stub.location,\n stub._id\n );\n try {\n await exportDependencies(providerData, fileData);\n } catch (error) {\n printMessage(error, 'error');\n }\n fileData.saml[stub.location][providerData._id] = providerData;\n }\n return fileData;\n}\n\n/**\n * Include dependencies from the import file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n debugMessage(`Saml2Ops.importDependencies: start`);\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: attributeMapperScript=${attrMapperScriptId}`\n );\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: idpAdapterScript=${idpAdapterScriptId}`\n );\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(idpAdapterScriptId, scriptData);\n }\n debugMessage(`Saml2Ops.importDependencies: end`);\n}\n\n/**\n * Find provider in import file and return its location\n * @param {string} entityId64 Base64-encoded provider entity id\n * @param {Saml2ExportInterface} data Import file json data\n * @returns {string} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(\n entityId64: string,\n data: Saml2ExportInterface\n): Saml2ProiderLocation {\n if (data.saml.hosted[entityId64]) {\n return Saml2ProiderLocation.HOSTED;\n }\n if (data.saml.remote[entityId64]) {\n return Saml2ProiderLocation.REMOTE;\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider\n * @param {string} entityId Provider entity id\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Provider(\n entityId: string,\n importData: Saml2ExportInterface\n): Promise<boolean> {\n debugMessage(`Saml2Ops.importSaml2Provider: start`);\n const entityId64 = encode(entityId, false);\n const location = getLocation(entityId64, importData);\n debugMessage(\n `Saml2Ops.importSaml2Provider: entityId=${entityId}, entityId64=${entityId64}, location=${location}`\n );\n if (location) {\n const providerData = importData.saml[location][entityId64];\n await importDependencies(providerData, importData);\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n } catch (error) {\n await updateProvider(location, providerData);\n }\n } else {\n throw new Error(`Provider ${entityId} not found in import data!`);\n }\n debugMessage(`Saml2Ops.importSaml2Provider: end`);\n return true;\n}\n\n/**\n * Import SAML entity providers\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Providers(\n importData: Saml2ExportInterface\n): Promise<MultiOpStatusInterface> {\n debugMessage(`Saml2Ops.importSaml2Providers: start`);\n const myStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n try {\n // find providers in hosted and in remote and map locations\n const hostedIds = Object.keys(importData.saml.hosted);\n const remoteIds = Object.keys(importData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n myStatus.total = providerIds.length;\n for (const entityId64 of providerIds) {\n debugMessage(\n `Saml2Ops.importSaml2Providers: entityId=${decodeBase64Url(entityId64)}`\n );\n const location = hostedIds.includes(entityId64)\n ? Saml2ProiderLocation.HOSTED\n : Saml2ProiderLocation.REMOTE;\n const entityId = decode(entityId64);\n const providerData = importData.saml[location][entityId64];\n try {\n await importDependencies(providerData, importData);\n } catch (importDependenciesErr) {\n myStatus.warnings += 1;\n printMessage(\n `\\nWarning importing dependencies for ${entityId}`,\n 'warn'\n );\n printMessage(importDependenciesErr.response.data, 'error');\n }\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n myStatus.successes += 1;\n } catch (createProviderErr) {\n try {\n await updateProvider(location, providerData);\n myStatus.successes += 1;\n } catch (updateProviderError) {\n myStatus.failures += 1;\n printMessage(\n `\\nError importing provider ${entityId}: ${updateProviderError.message}`,\n 'error'\n );\n printMessage(updateProviderError.response?.data, 'error');\n }\n }\n }\n myStatus.message = `${myStatus.successes}/${myStatus.total} providers imported.`;\n } catch (error) {\n myStatus.failures += 1;\n printMessage(`\\nError importing providers ${error.message}`, 'error');\n }\n debugMessage(`Saml2Ops.importSaml2Providers: end`);\n return myStatus;\n}\n\n// Contributions using legacy APIs. Need to investigate if those will be deprecated in the future\n\n/**\n * Deletes entity provider\n * @param {string} entityId The entity id for the entity to be deleted\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteRawSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const response = await deleteRawProvider(entityId);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return response;\n}\n\n/**\n * Deletes all entity providers.\n */\nexport async function deleteRawSaml2Providers(): Promise<\n Saml2ProviderSkeleton[]\n> {\n const applicationList = (await getRawSaml2Providers()).result;\n const deleteApplicationPromises = [];\n applicationList.forEach((item) => {\n printMessage(`Deleting Application ${item._id}`, 'error');\n deleteApplicationPromises.push(deleteRawProvider(item._id));\n });\n const deleteApplicationResult = await Promise.all(deleteApplicationPromises);\n if (deleteApplicationResult.length == applicationList.length) {\n printMessage('SAML Entity cleanup done', 'info');\n }\n return deleteApplicationResult;\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Providers() {\n return _getRawProviders();\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @param {string} entityId The entity provider id\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Provider(entityId: string) {\n return _getRawProvider(entityId);\n}\n\n/**\n * Stores a new SAML2 entity provider\n * @param {string} entityId The entity provider id\n * @param {string} entityData The actual data containing the entity provider configuration\n * @returns {Promise} Promise that resolves to a provider object\n */\nexport async function putRawSaml2Provider(entityId: string, entityData) {\n return _putRawProvider(entityId, entityData);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.js","names":["_","Saml2ProiderLocation","createProvider","updateProvider","deleteRawProvider","findProviders","getProviderByLocationAndId","_getProviderByLocationAndId","getProviderMetadata","_getProviderMetadata","getProviderMetadataUrl","_getProviderMetadataUrl","getRawProvider","_getRawProvider","getProviders","getRawProviders","_getRawProviders","putRawProvider","_putRawProvider","deleteProviderByLocationAndId","getScript","decode","decodeBase64Url","encode","encodeBase64Url","putScript","debugMessage","printMessage","convertBase64TextToArray","convertBase64UrlTextToArray","convertTextArrayToBase64","convertTextArrayToBase64Url","getMetadata","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","createSaml2ExportTemplate","meta","script","saml","hosted","remote","metadata","getSaml2ProviderStubs","result","location","entityId64","entityId","exportDependencies","providerData","fileData","attrMapperScriptId","get","scriptData","idpAdapterScriptId","metaDataResponse","Error","_id","getSaml2ProviderStub","found","resultCount","getSaml2Provider","stub","id","deleteSaml2Provider","deleteSaml2Providers","providers","stubs","provider","push","length","exportSaml2Provider","exportData","error","message","exportSaml2Providers","importDependencies","getLocation","data","HOSTED","REMOTE","undefined","importSaml2Provider","importData","metaData","importSaml2Providers","myStatus","total","successes","warnings","failures","hostedIds","Object","keys","remoteIds","providerIds","concat","includes","importDependenciesErr","response","createProviderErr","updateProviderError","_updateProviderError$","deleteRawSaml2Provider","deleteRawSaml2Providers","applicationList","getRawSaml2Providers","deleteApplicationPromises","forEach","item","deleteApplicationResult","Promise","all","getRawSaml2Provider","putRawSaml2Provider","entityData"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import _ from 'lodash';\nimport {\n Saml2ProiderLocation,\n Saml2ProviderSkeleton,\n Saml2ProviderStub,\n} from '../api/ApiTypes';\nimport {\n createProvider,\n updateProvider,\n deleteRawProvider,\n findProviders,\n getProviderByLocationAndId as _getProviderByLocationAndId,\n getProviderMetadata as _getProviderMetadata,\n getProviderMetadataUrl as _getProviderMetadataUrl,\n getRawProvider as _getRawProvider,\n getProviders,\n getRawProviders as _getRawProviders,\n putRawProvider as _putRawProvider,\n deleteProviderByLocationAndId,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from '../api/utils/Base64';\nimport { MultiOpStatusInterface, Saml2ExportInterface } from './OpsTypes';\nimport { putScript } from './ScriptOps';\nimport { debugMessage, printMessage } from './utils/Console';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getMetadata,\n} from './utils/ExportImportUtils';\n\nexport const roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nexport function createSaml2ExportTemplate(): Saml2ExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n } as Saml2ExportInterface;\n}\n\n/**\n * Get SAML2 entity provider stubs\n * @returns {Promise<Saml2ProviderStub[]>} a promise that resolves to an array of saml2 entity stubs\n */\nexport async function getSaml2ProviderStubs(): Promise<Saml2ProviderStub[]> {\n const { result } = await getProviders();\n return result;\n}\n\n/**\n * Geta SAML2 entity provider by location and id\n * @param {string} location Entity provider location (hosted or remote)\n * @param {string} entityId64 Base64-encoded-without-padding provider entity id\n * @returns {Promise} a promise that resolves to a saml2 entity provider object\n */\nexport async function getProviderByLocationAndId(\n location: string,\n entityId64: string\n) {\n return _getProviderByLocationAndId(location, entityId64);\n}\n\n/**\n * Get a SAML2 entity provider's metadata URL by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {string} the URL to get the metadata from\n */\nexport function getProviderMetadataUrl(entityId: string): string {\n return _getProviderMetadataUrl(entityId);\n}\n\n/**\n * Get a SAML2 entity provider's metadata by entity id\n * @param {string} entityId SAML2 entity id\n * @returns {Promise<object>} a promise that resolves to an object containing a SAML2 metadata\n */\nexport async function getProviderMetadata(entityId) {\n return _getProviderMetadata(entityId);\n}\n\n/**\n * Include dependencies in the export file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = await getScript(attrMapperScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = await getScript(idpAdapterScriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n if (!metaDataResponse) {\n throw new Error(\n `Unable to obtain metadata from ${getProviderMetadataUrl(\n providerData.entityId\n )}`\n );\n }\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse)\n );\n}\n\n/**\n *\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderStub>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2ProviderStub(\n entityId: string\n): Promise<Saml2ProviderStub> {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: start [entityId=${entityId}]`);\n const found = await findProviders(`entityId eq '${entityId}'`);\n switch (found.resultCount) {\n case 0:\n throw new Error(`No provider with entity id '${entityId}' found`);\n case 1: {\n debugMessage(`Saml2Ops.getSaml2ProviderStub: end [entityId=${entityId}]`);\n return found.result[0];\n }\n default:\n throw new Error(`Multiple providers with entity id '${entityId}' found`);\n }\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function getSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.getSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.getSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete an entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await deleteProviderByLocationAndId(location, id);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return providerData;\n}\n\n/**\n * Delete all entity providers.\n * @returns {Promise<Saml2ProviderSkeleton[]>} Promise resolving to an array of Saml2ProviderSkeleton objects.\n */\nexport async function deleteSaml2Providers(): Promise<Saml2ProviderSkeleton[]> {\n debugMessage(`Saml2Ops.deleteSaml2Providers: start`);\n const providers: Saml2ProviderSkeleton[] = [];\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const provider = await deleteProviderByLocationAndId(\n stub.location,\n stub._id\n );\n providers.push(provider);\n }\n debugMessage(\n `Saml2Ops.deleteSaml2Providers: end [deleted ${providers.length} providers]`\n );\n return providers;\n}\n\n/**\n * Export a single entity provider. The response can be saved to file as is.\n * @param {string} entityId Provider entity id\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Provider(\n entityId: string\n): Promise<Saml2ExportInterface> {\n debugMessage(`Saml2Ops.exportSaml2Provider: start [entityId=${entityId}]`);\n const exportData = createSaml2ExportTemplate();\n const stub = await getSaml2ProviderStub(entityId);\n const { location } = stub;\n const id = stub._id;\n const providerData = await getProviderByLocationAndId(location, id);\n exportData.saml[stub.location][providerData._id] = providerData;\n try {\n await exportDependencies(providerData, exportData);\n } catch (error) {\n printMessage(error.message, 'error');\n }\n debugMessage(`Saml2Ops.exportSaml2Provider: end [entityId=${entityId}]`);\n return exportData;\n}\n\n/**\n * Export all entity providers. The response can be saved to file as is.\n * @returns {Promise<Saml2ExportInterface>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function exportSaml2Providers(): Promise<Saml2ExportInterface> {\n const fileData = createSaml2ExportTemplate();\n const stubs = await getSaml2ProviderStubs();\n for (const stub of stubs) {\n const providerData = await getProviderByLocationAndId(\n stub.location,\n stub._id\n );\n try {\n await exportDependencies(providerData, fileData);\n } catch (error) {\n printMessage(error, 'error');\n }\n fileData.saml[stub.location][providerData._id] = providerData;\n }\n return fileData;\n}\n\n/**\n * Include dependencies from the import file\n * @param {object} providerData Object representing a SAML entity provider\n * @param {object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n debugMessage(`Saml2Ops.importDependencies: start`);\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: attributeMapperScript=${attrMapperScriptId}`\n );\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n debugMessage(\n `Saml2Ops.importDependencies: idpAdapterScript=${idpAdapterScriptId}`\n );\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(idpAdapterScriptId, scriptData);\n }\n debugMessage(`Saml2Ops.importDependencies: end`);\n}\n\n/**\n * Find provider in import file and return its location\n * @param {string} entityId64 Base64-encoded provider entity id\n * @param {Saml2ExportInterface} data Import file json data\n * @returns {string} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(\n entityId64: string,\n data: Saml2ExportInterface\n): Saml2ProiderLocation {\n if (data.saml.hosted[entityId64]) {\n return Saml2ProiderLocation.HOSTED;\n }\n if (data.saml.remote[entityId64]) {\n return Saml2ProiderLocation.REMOTE;\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider\n * @param {string} entityId Provider entity id\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Provider(\n entityId: string,\n importData: Saml2ExportInterface\n): Promise<boolean> {\n debugMessage(`Saml2Ops.importSaml2Provider: start`);\n const entityId64 = encode(entityId, false);\n const location = getLocation(entityId64, importData);\n debugMessage(\n `Saml2Ops.importSaml2Provider: entityId=${entityId}, entityId64=${entityId64}, location=${location}`\n );\n if (location) {\n const providerData = importData.saml[location][entityId64];\n await importDependencies(providerData, importData);\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n } catch (error) {\n await updateProvider(location, providerData);\n }\n } else {\n throw new Error(`Provider ${entityId} not found in import data!`);\n }\n debugMessage(`Saml2Ops.importSaml2Provider: end`);\n return true;\n}\n\n/**\n * Import SAML entity providers\n * @param {Saml2ExportInterface} importData Import data\n */\nexport async function importSaml2Providers(\n importData: Saml2ExportInterface\n): Promise<MultiOpStatusInterface> {\n debugMessage(`Saml2Ops.importSaml2Providers: start`);\n const myStatus: MultiOpStatusInterface = {\n total: 0,\n successes: 0,\n warnings: 0,\n failures: 0,\n };\n try {\n // find providers in hosted and in remote and map locations\n const hostedIds = Object.keys(importData.saml.hosted);\n const remoteIds = Object.keys(importData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n myStatus.total = providerIds.length;\n for (const entityId64 of providerIds) {\n debugMessage(\n `Saml2Ops.importSaml2Providers: entityId=${decodeBase64Url(entityId64)}`\n );\n const location = hostedIds.includes(entityId64)\n ? Saml2ProiderLocation.HOSTED\n : Saml2ProiderLocation.REMOTE;\n const entityId = decode(entityId64);\n const providerData = importData.saml[location][entityId64];\n try {\n await importDependencies(providerData, importData);\n } catch (importDependenciesErr) {\n myStatus.warnings += 1;\n printMessage(\n `\\nWarning importing dependencies for ${entityId}`,\n 'warn'\n );\n printMessage(importDependenciesErr.response.data, 'error');\n }\n let metaData = null;\n if (location === Saml2ProiderLocation.REMOTE) {\n metaData = convertTextArrayToBase64Url(\n importData.saml.metadata[entityId64]\n );\n }\n try {\n await createProvider(location, providerData, metaData);\n myStatus.successes += 1;\n } catch (createProviderErr) {\n try {\n await updateProvider(location, providerData);\n myStatus.successes += 1;\n } catch (updateProviderError) {\n myStatus.failures += 1;\n printMessage(\n `\\nError importing provider ${entityId}: ${updateProviderError.message}`,\n 'error'\n );\n printMessage(updateProviderError.response?.data, 'error');\n }\n }\n }\n myStatus.message = `${myStatus.successes}/${myStatus.total} providers imported.`;\n } catch (error) {\n myStatus.failures += 1;\n printMessage(`\\nError importing providers ${error.message}`, 'error');\n }\n debugMessage(`Saml2Ops.importSaml2Providers: end`);\n return myStatus;\n}\n\n// Contributions using legacy APIs. Need to investigate if those will be deprecated in the future\n\n/**\n * Deletes entity provider\n * @param {string} entityId The entity id for the entity to be deleted\n * @returns {Promise<Saml2ProviderSkeleton>} Promise resolving to a Saml2ExportInterface object.\n */\nexport async function deleteRawSaml2Provider(\n entityId: string\n): Promise<Saml2ProviderSkeleton> {\n debugMessage(`Saml2Ops.deleteSaml2Provider: start [entityId=${entityId}]`);\n const response = await deleteRawProvider(entityId);\n debugMessage(`Saml2Ops.deleteSaml2Provider: end [entityId=${entityId}]`);\n return response;\n}\n\n/**\n * Deletes all entity providers.\n */\nexport async function deleteRawSaml2Providers(): Promise<\n Saml2ProviderSkeleton[]\n> {\n const applicationList = (await getRawSaml2Providers()).result;\n const deleteApplicationPromises = [];\n applicationList.forEach((item) => {\n printMessage(`Deleting Application ${item._id}`, 'error');\n deleteApplicationPromises.push(deleteRawProvider(item._id));\n });\n const deleteApplicationResult = await Promise.all(deleteApplicationPromises);\n if (deleteApplicationResult.length == applicationList.length) {\n printMessage('SAML Entity cleanup done', 'info');\n }\n return deleteApplicationResult;\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Providers() {\n return _getRawProviders();\n}\n\n/**\n * Retrieves all entity providers using the legacy federation enpoints.\n * @param {string} entityId The entity provider id\n * @returns {Promise} a promise that resolves to an object containing an array of providers\n */\nexport async function getRawSaml2Provider(entityId: string) {\n return _getRawProvider(entityId);\n}\n\n/**\n * Stores a new SAML2 entity provider\n * @param {string} entityId The entity provider id\n * @param {string} entityData The actual data containing the entity provider configuration\n * @returns {Promise} Promise that resolves to a provider object\n */\nexport async function putRawSaml2Provider(entityId: string, entityData) {\n return _putRawProvider(entityId, entityData);\n}\n"],"mappings":"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"}
|
package/esm/ops/Saml2Ops.test.js
CHANGED
|
@@ -48,12 +48,12 @@
|
|
|
48
48
|
* Note: FRODO_DEBUG=1 is optional and enables debug logging for some output
|
|
49
49
|
* in case things don't function as expected
|
|
50
50
|
*/
|
|
51
|
-
import { Saml2, state } from
|
|
52
|
-
import * as globalConfig from
|
|
53
|
-
import { Saml2ProiderLocation } from
|
|
54
|
-
import { getSaml2ProviderImportData, getSaml2ProvidersImportData } from
|
|
55
|
-
import { encodeBase64Url } from
|
|
56
|
-
import { autoSetupPolly } from
|
|
51
|
+
import { Saml2, state } from "../index.js";
|
|
52
|
+
import * as globalConfig from "../storage/StaticStorage.js";
|
|
53
|
+
import { Saml2ProiderLocation } from "../api/ApiTypes.js";
|
|
54
|
+
import { getSaml2ProviderImportData, getSaml2ProvidersImportData } from "../test/mocks/ForgeRockApiMockEngine.js";
|
|
55
|
+
import { encodeBase64Url } from "../api/utils/Base64.js";
|
|
56
|
+
import { autoSetupPolly } from "../utils/AutoSetupPolly.js";
|
|
57
57
|
autoSetupPolly();
|
|
58
58
|
state.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);
|
|
59
59
|
async function stageProvider(provider, create = true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saml2Ops.test.js","names":["Saml2","state","globalConfig","Saml2ProiderLocation","getSaml2ProviderImportData","getSaml2ProvidersImportData","encodeBase64Url","autoSetupPolly","setDeploymentType","CLOUD_DEPLOYMENT_TYPE_KEY","stageProvider","provider","create","getSaml2Provider","entityId","deleteSaml2Provider","error","isAxiosError","_error$response","console","log","message","dir","response","data","importSaml2Provider","_error$response2","describe","provider1","location","HOSTED","entityId64","provider2","REMOTE","provider3","provider4","provider5","provider6","provider7","provider8","provider9","provider10","beforeAll","process","env","FRODO_POLLY_MODE","FRODO_RECORD_PHASE","afterAll","test","expect","createSaml2ExportTemplate","toBeDefined","toMatchSnapshot","meta","any","Object","getSaml2ProviderStubs","getProviderByLocationAndId","getProviderMetadataUrl","toMatch","RegExp","FRODO_HOST","url","URL","pathname","searchParams","URLSearchParams","search","get","getProviderMetadata","getSaml2ProviderStub","exportSaml2Provider","exportSaml2Providers","assertions","toBeTruthy","getRawSaml2Providers","getRawSaml2Provider","putRawSaml2Provider","importSaml2Providers","failures","toBe","warnings","deleteRawSaml2Provider","deleteSaml2Providers","deleteRawSaml2Providers"],"sources":["../../src/ops/Saml2Ops.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses\n *\n * This step breaks down into 5 phases:\n *\n * Phase 1: Record Group 1 of non-destructive tests\n * Phase 2: Record Group 2 of non-destructive tests - Import all\n * Phase 3: Record Group 1 of DESTRUCTIVE tests - Deletes by entity id\n * Phase 4: Record Group 2 of DESTRUCTIVE tests - Delete all\n * Phase 5: Record Group 3 of DESTRUCTIVE tests - Delete all raw (legacy API - pre 7.0)\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record API responses, you must call the test:record script and\n * override all the connection state variables required to connect to the\n * env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE CONFIGURATION!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=5 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update snapshots\n *\n * After recording API responses, you must manually update/create snapshots\n * by running:\n *\n * FRODO_DEBUG=1 npm run test:update Saml2Ops\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only Saml2Ops\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Saml2, state } from '../index';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { Saml2ProiderLocation } from '../api/ApiTypes';\nimport {\n getSaml2ProviderImportData,\n getSaml2ProvidersImportData,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\nstate.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);\n\nasync function stageProvider(provider: { entityId: string }, create = true) {\n // delete if exists, then create\n try {\n await Saml2.getSaml2Provider(provider.entityId);\n await Saml2.deleteSaml2Provider(provider.entityId);\n } catch (error) {\n if (error.isAxiosError) {\n console.log(\n `Error deleting provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n } finally {\n if (create) {\n try {\n await Saml2.importSaml2Provider(\n provider.entityId,\n getSaml2ProviderImportData(provider.entityId)\n );\n } catch (error) {\n console.log(\n `Error importing provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n }\n }\n}\n\ndescribe('Saml2Ops', () => {\n const provider1 = {\n entityId: 'iSPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('iSPAzure'),\n };\n const provider2 = {\n entityId: 'urn:federation:MicrosoftOnline',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('urn:federation:MicrosoftOnline'),\n };\n const provider3 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPFedlet',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPFedlet'),\n };\n const provider4 = {\n entityId: 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url(\n 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/'\n ),\n };\n const provider5 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPAzure'),\n };\n const provider6 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPBroadcom',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPBroadcom'),\n };\n const provider7 = {\n entityId: 'idp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('idp'),\n };\n const provider8 = {\n entityId: 'SPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('SPAzure'),\n };\n const provider9 = {\n entityId: 'volkerDevSP',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('volkerDevSP'),\n };\n const provider10 = {\n entityId: 'https://saml.mytestrun.com/sp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('https://saml.mytestrun.com/sp'),\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1'\n ) {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n }\n // Pahses 3 + 4\n else if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5);\n await stageProvider(provider6);\n await stageProvider(provider7);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n }\n });\n\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('createSaml2ExportTemplate()', () => {\n test('0: Method is implemented', () => {\n expect(Saml2.createSaml2ExportTemplate).toBeDefined();\n });\n\n test('1: Create saml2 export template', () => {\n const response = Saml2.createSaml2ExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getSaml2ProviderStubs()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStubs).toBeDefined();\n });\n\n test('1: Get saml2 provider stubs', async () => {\n const response = await Saml2.getSaml2ProviderStubs();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderByLocationAndId()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderByLocationAndId).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider1.location,\n provider1.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider2.location,\n provider2.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderMetadataUrl()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadataUrl).toBeDefined();\n });\n\n test(`1: Get metadata url for hosted provider '${provider3.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider3.entityId);\n expect(response).toMatch(\n new RegExp(\n `^${\n process.env.FRODO_HOST ||\n 'https://openam-frodo-dev.forgeblocks.com'\n }`\n )\n );\n const url = new URL(response);\n expect(url.pathname).toMatch('/am/saml2/jsp/exportmetadata.jsp');\n const searchParams = new URLSearchParams(url.search);\n expect(searchParams.get('entityid')).toMatch(provider3.entityId);\n });\n\n test(`2: Get metadata url for remote provider '${provider4.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider4.entityId);\n expect(response).toMatch(\n new RegExp(\n `^${\n process.env.FRODO_HOST ||\n 'https://openam-frodo-dev.forgeblocks.com'\n }`\n )\n );\n const url = new URL(response);\n expect(url.pathname).toMatch('/am/saml2/jsp/exportmetadata.jsp');\n const searchParams = new URLSearchParams(url.search);\n expect(searchParams.get('entityid')).toMatch(provider4.entityId);\n });\n });\n\n describe('getProviderMetadata()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadata).toBeDefined();\n });\n\n test(`1: Get metadata for hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get metadata for remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2ProviderStub()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStub).toBeDefined();\n });\n\n test(`1: Get stub of hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get stub of remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2Provider).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Provider).toBeDefined();\n });\n\n test(`1: Export hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n\n test(`2: Export remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Providers).toBeDefined();\n });\n\n test('1: Export saml2 entity providers', async () => {\n const response = await Saml2.exportSaml2Providers();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Provider).toBeDefined();\n });\n\n test(`1: Import hosted provider '${provider5.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider5.entityId,\n getSaml2ProviderImportData(provider5.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`2: Import hosted provider '${provider6.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider6.entityId,\n getSaml2ProviderImportData(provider6.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`3: Import remote provider '${provider7.entityId}' with metadata`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider7.entityId,\n getSaml2ProviderImportData(provider7.entityId)\n );\n expect(response).toBeTruthy();\n });\n });\n\n describe('getRawProviders()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Providers).toBeDefined();\n });\n });\n\n describe('getRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Provider).toBeDefined();\n });\n });\n\n describe('putRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.putRawSaml2Provider).toBeDefined();\n });\n });\n }\n\n // Phase 2\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2')\n ) {\n describe('importSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Providers).toBeDefined();\n });\n\n test('1: Import providers', async () => {\n expect.assertions(2);\n const response = await Saml2.importSaml2Providers(\n getSaml2ProvidersImportData()\n );\n expect(response.failures).toBe(0);\n expect(response.warnings).toBe(0);\n });\n });\n }\n\n // Phase 3\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '3')\n ) {\n describe('deleteSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete hosted provider '${provider3.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider3.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('deleteRawSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete raw hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete raw remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider2.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 4\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '4')\n ) {\n describe('deleteSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all providers`, async () => {\n const response = await Saml2.deleteSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 5\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5')\n ) {\n describe('deleteRawSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all raw providers`, async () => {\n const response = await Saml2.deleteRawSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Saml2Ops.test.js","names":["Saml2","state","globalConfig","Saml2ProiderLocation","getSaml2ProviderImportData","getSaml2ProvidersImportData","encodeBase64Url","autoSetupPolly","setDeploymentType","CLOUD_DEPLOYMENT_TYPE_KEY","stageProvider","provider","create","getSaml2Provider","entityId","deleteSaml2Provider","error","isAxiosError","_error$response","console","log","message","dir","response","data","importSaml2Provider","_error$response2","describe","provider1","location","HOSTED","entityId64","provider2","REMOTE","provider3","provider4","provider5","provider6","provider7","provider8","provider9","provider10","beforeAll","process","env","FRODO_POLLY_MODE","FRODO_RECORD_PHASE","afterAll","test","expect","createSaml2ExportTemplate","toBeDefined","toMatchSnapshot","meta","any","Object","getSaml2ProviderStubs","getProviderByLocationAndId","getProviderMetadataUrl","toMatch","RegExp","FRODO_HOST","url","URL","pathname","searchParams","URLSearchParams","search","get","getProviderMetadata","getSaml2ProviderStub","exportSaml2Provider","exportSaml2Providers","assertions","toBeTruthy","getRawSaml2Providers","getRawSaml2Provider","putRawSaml2Provider","importSaml2Providers","failures","toBe","warnings","deleteRawSaml2Provider","deleteSaml2Providers","deleteRawSaml2Providers"],"sources":["../../src/ops/Saml2Ops.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses\n *\n * This step breaks down into 5 phases:\n *\n * Phase 1: Record Group 1 of non-destructive tests\n * Phase 2: Record Group 2 of non-destructive tests - Import all\n * Phase 3: Record Group 1 of DESTRUCTIVE tests - Deletes by entity id\n * Phase 4: Record Group 2 of DESTRUCTIVE tests - Delete all\n * Phase 5: Record Group 3 of DESTRUCTIVE tests - Delete all raw (legacy API - pre 7.0)\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record API responses, you must call the test:record script and\n * override all the connection state variables required to connect to the\n * env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE CONFIGURATION!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=5 FRODO_HOST=frodo-dev npm run test:record Saml2Ops\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update snapshots\n *\n * After recording API responses, you must manually update/create snapshots\n * by running:\n *\n * FRODO_DEBUG=1 npm run test:update Saml2Ops\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only Saml2Ops\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Saml2, state } from '../index';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { Saml2ProiderLocation } from '../api/ApiTypes';\nimport {\n getSaml2ProviderImportData,\n getSaml2ProvidersImportData,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\nstate.setDeploymentType(globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY);\n\nasync function stageProvider(provider: { entityId: string }, create = true) {\n // delete if exists, then create\n try {\n await Saml2.getSaml2Provider(provider.entityId);\n await Saml2.deleteSaml2Provider(provider.entityId);\n } catch (error) {\n if (error.isAxiosError) {\n console.log(\n `Error deleting provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n } finally {\n if (create) {\n try {\n await Saml2.importSaml2Provider(\n provider.entityId,\n getSaml2ProviderImportData(provider.entityId)\n );\n } catch (error) {\n console.log(\n `Error importing provider '${provider.entityId}': ${error.message}`\n );\n console.dir(error.response?.data);\n }\n }\n }\n}\n\ndescribe('Saml2Ops', () => {\n const provider1 = {\n entityId: 'iSPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('iSPAzure'),\n };\n const provider2 = {\n entityId: 'urn:federation:MicrosoftOnline',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('urn:federation:MicrosoftOnline'),\n };\n const provider3 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPFedlet',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPFedlet'),\n };\n const provider4 = {\n entityId: 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url(\n 'https://sts.windows.net/711ffa9c-5972-4713-ace3-688c9732614a/'\n ),\n };\n const provider5 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPAzure'),\n };\n const provider6 = {\n entityId: 'https://idc.scheuber.io/am/saml2/IDPBroadcom',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('https://idc.scheuber.io/am/saml2/IDPBroadcom'),\n };\n const provider7 = {\n entityId: 'idp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('idp'),\n };\n const provider8 = {\n entityId: 'SPAzure',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('SPAzure'),\n };\n const provider9 = {\n entityId: 'volkerDevSP',\n location: Saml2ProiderLocation.HOSTED,\n entityId64: encodeBase64Url('volkerDevSP'),\n };\n const provider10 = {\n entityId: 'https://saml.mytestrun.com/sp',\n location: Saml2ProiderLocation.REMOTE,\n entityId64: encodeBase64Url('https://saml.mytestrun.com/sp'),\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1'\n ) {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n } else if (\n process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5'\n ) {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n }\n // Pahses 3 + 4\n else if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1);\n await stageProvider(provider2);\n await stageProvider(provider3);\n await stageProvider(provider4);\n await stageProvider(provider5);\n await stageProvider(provider6);\n await stageProvider(provider7);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageProvider(provider1, false);\n await stageProvider(provider2, false);\n await stageProvider(provider3, false);\n await stageProvider(provider4, false);\n await stageProvider(provider5, false);\n await stageProvider(provider6, false);\n await stageProvider(provider7, false);\n await stageProvider(provider8, false);\n await stageProvider(provider9, false);\n await stageProvider(provider10, false);\n }\n });\n\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('createSaml2ExportTemplate()', () => {\n test('0: Method is implemented', () => {\n expect(Saml2.createSaml2ExportTemplate).toBeDefined();\n });\n\n test('1: Create saml2 export template', () => {\n const response = Saml2.createSaml2ExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getSaml2ProviderStubs()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStubs).toBeDefined();\n });\n\n test('1: Get saml2 provider stubs', async () => {\n const response = await Saml2.getSaml2ProviderStubs();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderByLocationAndId()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderByLocationAndId).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider1.location,\n provider1.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.getProviderByLocationAndId(\n provider2.location,\n provider2.entityId64\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getProviderMetadataUrl()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadataUrl).toBeDefined();\n });\n\n test(`1: Get metadata url for hosted provider '${provider3.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider3.entityId);\n expect(response).toMatch(\n new RegExp(\n `^${\n process.env.FRODO_HOST ||\n 'https://openam-frodo-dev.forgeblocks.com'\n }`\n )\n );\n const url = new URL(response);\n expect(url.pathname).toMatch('/am/saml2/jsp/exportmetadata.jsp');\n const searchParams = new URLSearchParams(url.search);\n expect(searchParams.get('entityid')).toMatch(provider3.entityId);\n });\n\n test(`2: Get metadata url for remote provider '${provider4.entityId}'`, async () => {\n const response = Saml2.getProviderMetadataUrl(provider4.entityId);\n expect(response).toMatch(\n new RegExp(\n `^${\n process.env.FRODO_HOST ||\n 'https://openam-frodo-dev.forgeblocks.com'\n }`\n )\n );\n const url = new URL(response);\n expect(url.pathname).toMatch('/am/saml2/jsp/exportmetadata.jsp');\n const searchParams = new URLSearchParams(url.search);\n expect(searchParams.get('entityid')).toMatch(provider4.entityId);\n });\n });\n\n describe('getProviderMetadata()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getProviderMetadata).toBeDefined();\n });\n\n test(`1: Get metadata for hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get metadata for remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getProviderMetadata(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2ProviderStub()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2ProviderStub).toBeDefined();\n });\n\n test(`1: Get stub of hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get stub of remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2ProviderStub(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getSaml2Provider).toBeDefined();\n });\n\n test(`1: Get hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.getSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Provider).toBeDefined();\n });\n\n test(`1: Export hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n\n test(`2: Export remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.exportSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.exportSaml2Providers).toBeDefined();\n });\n\n test('1: Export saml2 entity providers', async () => {\n const response = await Saml2.exportSaml2Providers();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Provider).toBeDefined();\n });\n\n test(`1: Import hosted provider '${provider5.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider5.entityId,\n getSaml2ProviderImportData(provider5.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`2: Import hosted provider '${provider6.entityId}'`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider6.entityId,\n getSaml2ProviderImportData(provider6.entityId)\n );\n expect(response).toBeTruthy();\n });\n\n test(`3: Import remote provider '${provider7.entityId}' with metadata`, async () => {\n expect.assertions(1);\n const response = await Saml2.importSaml2Provider(\n provider7.entityId,\n getSaml2ProviderImportData(provider7.entityId)\n );\n expect(response).toBeTruthy();\n });\n });\n\n describe('getRawProviders()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Providers).toBeDefined();\n });\n });\n\n describe('getRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.getRawSaml2Provider).toBeDefined();\n });\n });\n\n describe('putRawProvider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.putRawSaml2Provider).toBeDefined();\n });\n });\n }\n\n // Phase 2\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2')\n ) {\n describe('importSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.importSaml2Providers).toBeDefined();\n });\n\n test('1: Import providers', async () => {\n expect.assertions(2);\n const response = await Saml2.importSaml2Providers(\n getSaml2ProvidersImportData()\n );\n expect(response.failures).toBe(0);\n expect(response.warnings).toBe(0);\n });\n });\n }\n\n // Phase 3\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '3')\n ) {\n describe('deleteSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete hosted provider '${provider3.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider3.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete remote provider '${provider4.entityId}'`, async () => {\n const response = await Saml2.deleteSaml2Provider(provider4.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('deleteRawSaml2Provider()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Provider).toBeDefined();\n });\n\n test(`1: Delete raw hosted provider '${provider1.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider1.entityId);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Delete raw remote provider '${provider2.entityId}'`, async () => {\n const response = await Saml2.deleteRawSaml2Provider(provider2.entityId);\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 4\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '4')\n ) {\n describe('deleteSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all providers`, async () => {\n const response = await Saml2.deleteSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n\n // Phase 5\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '5')\n ) {\n describe('deleteRawSaml2Providers()', () => {\n test('0: Method is implemented', async () => {\n expect(Saml2.deleteRawSaml2Providers).toBeDefined();\n });\n\n test(`1: Delete all raw providers`, async () => {\n const response = await Saml2.deleteRawSaml2Providers();\n expect(response).toMatchSnapshot();\n });\n });\n }\n});\n"],"mappings":"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"}
|
package/esm/ops/ScriptOps.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
-
import { applyNameCollisionPolicy } from
|
|
3
|
-
import { createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from
|
|
4
|
-
import { getScript as _getScript, getScriptByName as _getScriptByName, getScripts as _getScripts, putScript as _putScript, deleteScript as _deleteScript } from
|
|
5
|
-
import { convertBase64TextToArray, convertTextArrayToBase64, getMetadata } from
|
|
6
|
-
import { validateScriptDecoded } from
|
|
2
|
+
import { applyNameCollisionPolicy } from "./utils/OpsUtils.js";
|
|
3
|
+
import { createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from "./utils/Console.js";
|
|
4
|
+
import { getScript as _getScript, getScriptByName as _getScriptByName, getScripts as _getScripts, putScript as _putScript, deleteScript as _deleteScript } from "../api/ScriptApi.js";
|
|
5
|
+
import { convertBase64TextToArray, convertTextArrayToBase64, getMetadata } from "./utils/ExportImportUtils.js";
|
|
6
|
+
import { validateScriptDecoded } from "./utils/ValidationUtils.js";
|
|
7
7
|
/**
|
|
8
8
|
* Create an empty idp export template
|
|
9
9
|
* @returns {ScriptExportInterface} an empty idp export template
|
package/esm/ops/ScriptOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.js","names":["v4","uuidv4","applyNameCollisionPolicy","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","getScript","_getScript","getScriptByName","_getScriptByName","getScripts","_getScripts","putScript","_putScript","deleteScript","_deleteScript","convertBase64TextToArray","convertTextArrayToBase64","getMetadata","validateScriptDecoded","createScriptExportTemplate","meta","script","result","scriptId","response","name","length","Error","scriptData","Array","isArray","error","_error$response","status","newName","exportScript","exportData","_id","exportScriptByName","exportScripts","scriptList","importScripts","importData","reUuid","shouldValidateScript","outcome","existingId","Object","keys","scriptSkeleton","newId","message"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { applyNameCollisionPolicy } from './utils/OpsUtils';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from './utils/Console';\nimport {\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n deleteScript as _deleteScript,\n} from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from './utils/ExportImportUtils';\nimport { ScriptSkeleton } from '../api/ApiTypes';\nimport { ExportMetaData } from '../ops/OpsTypes';\nimport { validateScriptDecoded } from './utils/ValidationUtils';\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty idp export template\n * @returns {ScriptExportInterface} an empty idp export template\n */\nexport function createScriptExportTemplate(): ScriptExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts();\n return result;\n}\n\n/**\n * Get script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _getScript(scriptId);\n return response;\n}\n\n/**\n * Get script by name\n * @param {string} name name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScriptByName(name: string): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName(name);\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${name}' not found`);\n default:\n throw new Error(`${result.length} scripts '${name}' found`);\n }\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<boolean>} a status object\n */\nexport async function putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n): Promise<boolean> {\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n const result = await _putScript(scriptId, scriptData);\n return result;\n } catch (error) {\n if (error.response?.status === 409) {\n printMessage(\n `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n 'warn'\n );\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n const result = await putScript(scriptId, scriptData);\n printMessage(`Saved script as ${newName}`, 'warn');\n return result;\n }\n throw error;\n }\n}\n\n/**\n * Delete script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _deleteScript(scriptId);\n return response;\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript(\n scriptId: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptById: start`);\n const scriptData = await _getScript(scriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptById: end`);\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} name script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName(\n name: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptByName: start`);\n const scriptData = await getScriptByName(name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptByName: end`);\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts(): Promise<ScriptExportInterface> {\n const scriptList = await getScripts();\n const exportData = createScriptExportTemplate();\n createProgressIndicator(\n scriptList.length,\n `Exporting ${scriptList.length} scripts...`\n );\n for (const script of scriptList) {\n updateProgressIndicator(`Reading script ${script.name}`);\n const scriptData = await getScriptByName(script.name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator(`Exported ${scriptList.length} scripts.`);\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts(\n name: string,\n importData: ScriptExportInterface,\n reUuid = false,\n shouldValidateScript = false\n): Promise<boolean> {\n let outcome = true;\n debugMessage(`ScriptOps.importScriptsFromFile: start`);\n for (const existingId of Object.keys(importData.script)) {\n const scriptSkeleton = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage(\n `ScriptOps.importScriptsFromFile: Re-uuid-ing script ${scriptSkeleton.name} ${existingId} => ${newId}...`\n );\n scriptSkeleton._id = newId;\n }\n if (name) {\n debugMessage(\n `ScriptOps.importScriptsFromFile: Renaming script ${scriptSkeleton.name} => ${name}...`\n );\n scriptSkeleton.name = name;\n }\n if (shouldValidateScript) {\n if (!validateScriptDecoded(scriptSkeleton)) {\n outcome = false;\n printMessage(\n `Error importing script '${scriptSkeleton.name}': Script is not valid`,\n 'error'\n );\n continue;\n }\n }\n try {\n await putScript(newId, scriptSkeleton);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error importing script '${scriptSkeleton.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n if (name) break;\n }\n debugMessage(`ScriptOps.importScriptsFromFile: end`);\n return outcome;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptOps.js","names":["v4","uuidv4","applyNameCollisionPolicy","createProgressIndicator","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","getScript","_getScript","getScriptByName","_getScriptByName","getScripts","_getScripts","putScript","_putScript","deleteScript","_deleteScript","convertBase64TextToArray","convertTextArrayToBase64","getMetadata","validateScriptDecoded","createScriptExportTemplate","meta","script","result","scriptId","response","name","length","Error","scriptData","Array","isArray","error","_error$response","status","newName","exportScript","exportData","_id","exportScriptByName","exportScripts","scriptList","importScripts","importData","reUuid","shouldValidateScript","outcome","existingId","Object","keys","scriptSkeleton","newId","message"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { applyNameCollisionPolicy } from './utils/OpsUtils';\nimport {\n createProgressIndicator,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from './utils/Console';\nimport {\n getScript as _getScript,\n getScriptByName as _getScriptByName,\n getScripts as _getScripts,\n putScript as _putScript,\n deleteScript as _deleteScript,\n} from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n getMetadata,\n} from './utils/ExportImportUtils';\nimport { ScriptSkeleton } from '../api/ApiTypes';\nimport { ExportMetaData } from '../ops/OpsTypes';\nimport { validateScriptDecoded } from './utils/ValidationUtils';\n\nexport interface ScriptExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n}\n\n/**\n * Create an empty idp export template\n * @returns {ScriptExportInterface} an empty idp export template\n */\nexport function createScriptExportTemplate(): ScriptExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n } as ScriptExportInterface;\n}\n\n/**\n * Get all scripts\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(): Promise<ScriptSkeleton[]> {\n const { result } = await _getScripts();\n return result;\n}\n\n/**\n * Get script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _getScript(scriptId);\n return response;\n}\n\n/**\n * Get script by name\n * @param {string} name name of the script\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function getScriptByName(name: string): Promise<ScriptSkeleton> {\n const { result } = await _getScriptByName(name);\n switch (result.length) {\n case 1:\n return result[0];\n case 0:\n throw new Error(`Script '${name}' not found`);\n default:\n throw new Error(`${result.length} scripts '${name}' found`);\n }\n}\n\n/**\n * Create or update script\n * @param {string} scriptId script uuid\n * @param {ScriptSkeleton} scriptData script object\n * @returns {Promise<boolean>} a status object\n */\nexport async function putScript(\n scriptId: string,\n scriptData: ScriptSkeleton\n): Promise<boolean> {\n try {\n if (Array.isArray(scriptData.script)) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n }\n const result = await _putScript(scriptId, scriptData);\n return result;\n } catch (error) {\n if (error.response?.status === 409) {\n printMessage(\n `createOrUpdateScript WARNING: script with name ${scriptData.name} already exists, using renaming policy... <name> => <name - imported (n)>`,\n 'warn'\n );\n const newName = applyNameCollisionPolicy(scriptData.name);\n scriptData.name = newName;\n const result = await putScript(scriptId, scriptData);\n printMessage(`Saved script as ${newName}`, 'warn');\n return result;\n }\n throw error;\n }\n}\n\n/**\n * Delete script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptSkeleton>} promise that resolves to a script object\n */\nexport async function deleteScript(scriptId: string): Promise<ScriptSkeleton> {\n const response = await _deleteScript(scriptId);\n return response;\n}\n\n/**\n * Export script by id\n * @param {string} scriptId script uuid\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScript(\n scriptId: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptById: start`);\n const scriptData = await _getScript(scriptId);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptById: end`);\n return exportData;\n}\n\n/**\n * Export script by name\n * @param {string} name script name\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScriptByName(\n name: string\n): Promise<ScriptExportInterface> {\n debugMessage(`ScriptOps.exportScriptByName: start`);\n const scriptData = await getScriptByName(name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n const exportData = createScriptExportTemplate();\n exportData.script[scriptData._id] = scriptData;\n debugMessage(`ScriptOps.exportScriptByName: end`);\n return exportData;\n}\n\n/**\n * Export all scripts\n * @returns {Promise<ScriptExportInterface>} a promise that resolved to a ScriptExportInterface object\n */\nexport async function exportScripts(): Promise<ScriptExportInterface> {\n const scriptList = await getScripts();\n const exportData = createScriptExportTemplate();\n createProgressIndicator(\n scriptList.length,\n `Exporting ${scriptList.length} scripts...`\n );\n for (const script of scriptList) {\n updateProgressIndicator(`Reading script ${script.name}`);\n const scriptData = await getScriptByName(script.name);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[scriptData._id] = scriptData;\n }\n stopProgressIndicator(`Exported ${scriptList.length} scripts.`);\n return exportData;\n}\n\n/**\n * Import scripts\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {ScriptExportInterface} importData Script import data\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScripts(\n name: string,\n importData: ScriptExportInterface,\n reUuid = false,\n shouldValidateScript = false\n): Promise<boolean> {\n let outcome = true;\n debugMessage(`ScriptOps.importScriptsFromFile: start`);\n for (const existingId of Object.keys(importData.script)) {\n const scriptSkeleton = importData.script[existingId];\n let newId = existingId;\n if (reUuid) {\n newId = uuidv4();\n debugMessage(\n `ScriptOps.importScriptsFromFile: Re-uuid-ing script ${scriptSkeleton.name} ${existingId} => ${newId}...`\n );\n scriptSkeleton._id = newId;\n }\n if (name) {\n debugMessage(\n `ScriptOps.importScriptsFromFile: Renaming script ${scriptSkeleton.name} => ${name}...`\n );\n scriptSkeleton.name = name;\n }\n if (shouldValidateScript) {\n if (!validateScriptDecoded(scriptSkeleton)) {\n outcome = false;\n printMessage(\n `Error importing script '${scriptSkeleton.name}': Script is not valid`,\n 'error'\n );\n continue;\n }\n }\n try {\n await putScript(newId, scriptSkeleton);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error importing script '${scriptSkeleton.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n if (name) break;\n }\n debugMessage(`ScriptOps.importScriptsFromFile: end`);\n return outcome;\n}\n"],"mappings":"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"}
|
|
@@ -29,8 +29,8 @@
|
|
|
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 { Script } from
|
|
33
|
-
import { autoSetupPolly } from
|
|
32
|
+
import { Script } from "../index.js";
|
|
33
|
+
import { autoSetupPolly } from "../utils/AutoSetupPolly.js";
|
|
34
34
|
autoSetupPolly();
|
|
35
35
|
async function stageScript(script, create = true) {
|
|
36
36
|
// delete if exists, then create
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOps.test.js","names":["Script","autoSetupPolly","stageScript","script","create","getScript","id","deleteScript","error","putScript","data","describe","script1","name","_id","description","default","language","context","createdBy","creationDate","lastModifiedBy","lastModifiedDate","script2","script3","script4","script5","import1","meta","origin","originAmVersion","exportedBy","exportDate","exportTool","exportToolVersion","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","createScriptExportTemplate","toBeDefined","response","toMatchSnapshot","any","Object","getScripts","getScriptByName","exportScript","exportScriptByName","exportScripts","importScripts","assertions","outcome","toBeTruthy"],"sources":["../../src/ops/ScriptOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record ScriptOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you musty manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update ScriptOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only ScriptOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Script } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { ScriptSkeleton } from '../../types/api/ApiTypes';\n\nautoSetupPolly();\n\nasync function stageScript(\n script: { id: string; name: string; data: ScriptSkeleton },\n create = true\n) {\n // delete if exists, then create\n try {\n await Script.getScript(script.id);\n await Script.deleteScript(script.id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await Script.putScript(script.id, script.data);\n }\n }\n}\n\ndescribe('ScriptOps', () => {\n const script1 = {\n id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n data: {\n _id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script2 = {\n id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n data: {\n _id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script3 = {\n id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n data: {\n _id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script4 = {\n id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n data: {\n _id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script5 = {\n id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n data: {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const import1: { name: string; data: Script.ScriptExportInterface } = {\n name: 'FrodoTestScript5',\n data: {\n meta: {\n origin: 'https://openam-frodo-dev.forgeblocks.com/am',\n originAmVersion: '7.3.0',\n exportedBy: 'volker.scheuber@forgerock.com',\n exportDate: '2023-01-02T20:04:41.662Z',\n exportTool: 'frodo',\n exportToolVersion: 'v0.17.1 [v18.5.0]',\n },\n script: {\n '5b3e4dd2-8060-4029-9ec1-6867932ab939': {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n },\n },\n },\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1);\n await stageScript(script2);\n await stageScript(script3, false);\n await stageScript(script4);\n await stageScript(script5, false);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1, false);\n await stageScript(script2, false);\n await stageScript(script3, false);\n await stageScript(script4, false);\n await stageScript(script5, false);\n }\n });\n\n describe('createScriptExportTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.createScriptExportTemplate).toBeDefined();\n });\n\n test(`1: Create script export template`, async () => {\n const response = Script.createScriptExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScripts).toBeDefined();\n });\n\n test(`1: Get scripts`, async () => {\n const response = await Script.getScripts();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScript).toBeDefined();\n });\n\n test(`1: Get script by id '${script1.id}'`, async () => {\n const response = await Script.getScript(script1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScriptByName).toBeDefined();\n });\n\n test(`1: Get script by name '${script1.name}'`, async () => {\n const response = await Script.getScriptByName(script1.name);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.putScript).toBeDefined();\n });\n\n test(`1: Put script '${script3.id}'`, async () => {\n const response = await Script.putScript(script3.id, script3.data);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScript).toBeDefined();\n });\n\n test(`1: Export script by id ${script1.id}`, async () => {\n const response = await Script.exportScript(script1.id);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScriptByName).toBeDefined();\n });\n\n test(`1: Export script by name ${script1.name}`, async () => {\n const response = await Script.exportScriptByName(script1.name);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScripts).toBeDefined();\n });\n\n test('1: Export all scripts', async () => {\n const response = await Script.exportScripts();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.importScripts).toBeDefined();\n });\n\n test(`1: Import all scripts`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts('', import1.data);\n expect(outcome).toBeTruthy();\n });\n\n test(`2: Import script by name`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts(import1.name, import1.data);\n expect(outcome).toBeTruthy();\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScriptOps.test.js","names":["Script","autoSetupPolly","stageScript","script","create","getScript","id","deleteScript","error","putScript","data","describe","script1","name","_id","description","default","language","context","createdBy","creationDate","lastModifiedBy","lastModifiedDate","script2","script3","script4","script5","import1","meta","origin","originAmVersion","exportedBy","exportDate","exportTool","exportToolVersion","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","createScriptExportTemplate","toBeDefined","response","toMatchSnapshot","any","Object","getScripts","getScriptByName","exportScript","exportScriptByName","exportScripts","importScripts","assertions","outcome","toBeTruthy"],"sources":["../../src/ops/ScriptOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 3 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record ScriptOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you musty manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update ScriptOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only ScriptOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { Script } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\nimport { ScriptSkeleton } from '../../types/api/ApiTypes';\n\nautoSetupPolly();\n\nasync function stageScript(\n script: { id: string; name: string; data: ScriptSkeleton },\n create = true\n) {\n // delete if exists, then create\n try {\n await Script.getScript(script.id);\n await Script.deleteScript(script.id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await Script.putScript(script.id, script.data);\n }\n }\n}\n\ndescribe('ScriptOps', () => {\n const script1 = {\n id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n data: {\n _id: 'c9cb4b1e-1cd3-4e5b-8f56-140f83ba9f6d',\n name: 'FrodoTestScript1',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script2 = {\n id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n data: {\n _id: 'b7259916-71ed-4675-8c5a-de86a80e4aed',\n name: 'FrodoTestScript2',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script3 = {\n id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n data: {\n _id: '3b2f6836-184c-4ee9-8a1d-557cb01837a5',\n name: 'FrodoTestScript3',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script4 = {\n id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n data: {\n _id: '10643e95-873a-4ec0-b713-a7f56760d179',\n name: 'FrodoTestScript4',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const script5 = {\n id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n data: {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n } as ScriptSkeleton,\n };\n const import1: { name: string; data: Script.ScriptExportInterface } = {\n name: 'FrodoTestScript5',\n data: {\n meta: {\n origin: 'https://openam-frodo-dev.forgeblocks.com/am',\n originAmVersion: '7.3.0',\n exportedBy: 'volker.scheuber@forgerock.com',\n exportDate: '2023-01-02T20:04:41.662Z',\n exportTool: 'frodo',\n exportToolVersion: 'v0.17.1 [v18.5.0]',\n },\n script: {\n '5b3e4dd2-8060-4029-9ec1-6867932ab939': {\n _id: '5b3e4dd2-8060-4029-9ec1-6867932ab939',\n name: 'FrodoTestScript5',\n description: 'Check if username has already been collected.',\n script: [\n '/* Check Username',\n ' *',\n ' * Author: volker.scheuber@forgerock.com',\n ' * ',\n ' * Check if username has already been collected.',\n ' * Return \"known\" if yes, \"unknown\" otherwise.',\n ' * ',\n ' * This script does not need to be parametrized. It will work properly as is.',\n ' * ',\n ' * The Scripted Decision Node needs the following outcomes defined:',\n ' * - known',\n ' * - unknown',\n ' */',\n '(function () {',\n ' if (null != sharedState.get(\"username\")) {',\n ' outcome = \"known\";',\n ' }',\n ' else {',\n ' outcome = \"unknown\";',\n ' }',\n '}());',\n ],\n default: false,\n language: 'JAVASCRIPT',\n context: 'AUTHENTICATION_TREE_DECISION_NODE',\n createdBy: 'null',\n creationDate: 0,\n lastModifiedBy: 'null',\n lastModifiedDate: 0,\n },\n },\n },\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1);\n await stageScript(script2);\n await stageScript(script3, false);\n await stageScript(script4);\n await stageScript(script5, false);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageScript(script1, false);\n await stageScript(script2, false);\n await stageScript(script3, false);\n await stageScript(script4, false);\n await stageScript(script5, false);\n }\n });\n\n describe('createScriptExportTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.createScriptExportTemplate).toBeDefined();\n });\n\n test(`1: Create script export template`, async () => {\n const response = Script.createScriptExportTemplate();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('getScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScripts).toBeDefined();\n });\n\n test(`1: Get scripts`, async () => {\n const response = await Script.getScripts();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScript).toBeDefined();\n });\n\n test(`1: Get script by id '${script1.id}'`, async () => {\n const response = await Script.getScript(script1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.getScriptByName).toBeDefined();\n });\n\n test(`1: Get script by name '${script1.name}'`, async () => {\n const response = await Script.getScriptByName(script1.name);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.putScript).toBeDefined();\n });\n\n test(`1: Put script '${script3.id}'`, async () => {\n const response = await Script.putScript(script3.id, script3.data);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportScript()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScript).toBeDefined();\n });\n\n test(`1: Export script by id ${script1.id}`, async () => {\n const response = await Script.exportScript(script1.id);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScriptByName()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScriptByName).toBeDefined();\n });\n\n test(`1: Export script by name ${script1.name}`, async () => {\n const response = await Script.exportScriptByName(script1.name);\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('exportScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.exportScripts).toBeDefined();\n });\n\n test('1: Export all scripts', async () => {\n const response = await Script.exportScripts();\n expect(response).toMatchSnapshot({\n meta: expect.any(Object),\n });\n });\n });\n\n describe('importScripts()', () => {\n test('0: Method is implemented', async () => {\n expect(Script.importScripts).toBeDefined();\n });\n\n test(`1: Import all scripts`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts('', import1.data);\n expect(outcome).toBeTruthy();\n });\n\n test(`2: Import script by name`, async () => {\n expect.assertions(1);\n const outcome = await Script.importScripts(import1.name, import1.data);\n expect(outcome).toBeTruthy();\n });\n });\n});\n"],"mappings":"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"}
|
package/esm/ops/ServiceOps.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { deleteService, deleteServiceNextDescendent, getService, getListOfServices as _getListOfServices, getServiceDescendents, putService, putServiceNextDescendent } from
|
|
2
|
-
import { debugMessage, printMessage } from
|
|
1
|
+
import { deleteService, deleteServiceNextDescendent, getService, getListOfServices as _getListOfServices, getServiceDescendents, putService, putServiceNextDescendent } from "../api/ServiceApi.js";
|
|
2
|
+
import { debugMessage, printMessage } from "./utils/Console.js";
|
|
3
3
|
/**
|
|
4
4
|
* Create an empty service export template
|
|
5
5
|
* @returns {SingleTreeExportInterface} an empty service export template
|