@rockcarver/frodo-lib 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build.zip +0 -0
- package/cjs/api/AgentApi.js +4 -4
- package/cjs/api/AgentApi.js.map +1 -1
- package/cjs/api/AgentApi.test.js +3 -3
- package/cjs/api/AgentApi.test.js.map +1 -1
- package/cjs/api/AuthenticateApi.js +3 -3
- package/cjs/api/AuthenticateApi.js.map +1 -1
- package/cjs/api/AuthenticateApi.test.js +2 -2
- package/cjs/api/AuthenticateApi.test.js.map +1 -1
- package/cjs/api/BaseApi.js +4 -4
- package/cjs/api/BaseApi.js.map +1 -1
- package/cjs/api/CirclesOfTrustApi.js +3 -3
- package/cjs/api/CirclesOfTrustApi.js.map +1 -1
- package/cjs/api/IdmConfigApi.js +3 -3
- package/cjs/api/IdmConfigApi.js.map +1 -1
- package/cjs/api/IdmSystemApi.js +3 -3
- package/cjs/api/IdmSystemApi.js.map +1 -1
- package/cjs/api/ManagedObjectApi.js +3 -3
- package/cjs/api/ManagedObjectApi.js.map +1 -1
- package/cjs/api/NodeApi.js +3 -3
- package/cjs/api/NodeApi.js.map +1 -1
- package/cjs/api/NodeApi.test.js +2 -2
- package/cjs/api/NodeApi.test.js.map +1 -1
- package/cjs/api/OAuth2ClientApi.js +3 -3
- package/cjs/api/OAuth2ClientApi.js.map +1 -1
- package/cjs/api/OAuth2OIDCApi.js +4 -4
- package/cjs/api/OAuth2OIDCApi.js.map +1 -1
- package/cjs/api/OAuth2OIDCApi.test.js +4 -4
- package/cjs/api/OAuth2OIDCApi.test.js.map +1 -1
- package/cjs/api/OAuth2ProviderApi.js +3 -3
- package/cjs/api/OAuth2ProviderApi.js.map +1 -1
- package/cjs/api/PoliciesApi.js +3 -3
- package/cjs/api/PoliciesApi.js.map +1 -1
- package/cjs/api/PoliciesApi.test.js +4 -4
- package/cjs/api/PoliciesApi.test.js.map +1 -1
- package/cjs/api/PolicySetApi.js +4 -4
- package/cjs/api/PolicySetApi.js.map +1 -1
- package/cjs/api/PolicySetApi.test.js +3 -3
- package/cjs/api/PolicySetApi.test.js.map +1 -1
- package/cjs/api/RealmApi.js +3 -3
- package/cjs/api/RealmApi.js.map +1 -1
- package/cjs/api/ResourceTypesApi.js +3 -3
- package/cjs/api/ResourceTypesApi.js.map +1 -1
- package/cjs/api/ResourceTypesApi.test.js +2 -2
- package/cjs/api/ResourceTypesApi.test.js.map +1 -1
- package/cjs/api/Saml2Api.js +3 -3
- package/cjs/api/Saml2Api.js.map +1 -1
- package/cjs/api/ScriptApi.js +3 -3
- package/cjs/api/ScriptApi.js.map +1 -1
- package/cjs/api/ServerInfoApi.js +2 -2
- package/cjs/api/ServerInfoApi.js.map +1 -1
- package/cjs/api/ServiceApi.js +3 -3
- package/cjs/api/ServiceApi.js.map +1 -1
- package/cjs/api/SocialIdentityProvidersApi.js +3 -3
- package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
- package/cjs/api/TreeApi.js +3 -3
- package/cjs/api/TreeApi.js.map +1 -1
- package/cjs/api/TreeApi.test.js +2 -2
- package/cjs/api/TreeApi.test.js.map +1 -1
- package/cjs/api/cloud/AdminFederationProvidersApi.js +3 -3
- package/cjs/api/cloud/AdminFederationProvidersApi.js.map +1 -1
- package/cjs/api/cloud/EnvInfoApi.js +3 -3
- package/cjs/api/cloud/EnvInfoApi.js.map +1 -1
- package/cjs/api/cloud/FeatureApi.js +3 -3
- package/cjs/api/cloud/FeatureApi.js.map +1 -1
- package/cjs/api/cloud/LogApi.js +3 -3
- package/cjs/api/cloud/LogApi.js.map +1 -1
- package/cjs/api/cloud/SecretsApi.js +4 -4
- package/cjs/api/cloud/SecretsApi.js.map +1 -1
- package/cjs/api/cloud/SecretsApi.test.js +2 -2
- package/cjs/api/cloud/SecretsApi.test.js.map +1 -1
- package/cjs/api/cloud/StartupApi.js +3 -3
- package/cjs/api/cloud/StartupApi.js.map +1 -1
- package/cjs/api/cloud/StartupApi.test.js +1 -1
- package/cjs/api/cloud/StartupApi.test.js.map +1 -1
- package/cjs/api/cloud/VariablesApi.js +4 -4
- package/cjs/api/cloud/VariablesApi.js.map +1 -1
- package/cjs/api/cloud/VariablesApi.test.js +2 -2
- package/cjs/api/cloud/VariablesApi.test.js.map +1 -1
- package/cjs/api/utils/ApiUtils.js +1 -1
- package/cjs/api/utils/ApiUtils.js.map +1 -1
- package/cjs/api/utils/ApiUtils.test.js +2 -2
- package/cjs/api/utils/ApiUtils.test.js.map +1 -1
- package/cjs/ext/axios-curlirize/curlirize.js +1 -1
- package/cjs/ext/axios-curlirize/curlirize.js.map +1 -1
- package/cjs/index.js +49 -49
- package/cjs/ops/AdminOps.js +8 -8
- package/cjs/ops/AdminOps.js.map +1 -1
- package/cjs/ops/AgentOps.js +3 -3
- package/cjs/ops/AgentOps.js.map +1 -1
- package/cjs/ops/AgentOps.test.js +3 -3
- package/cjs/ops/AgentOps.test.js.map +1 -1
- package/cjs/ops/AuthenticateOps.js +12 -12
- package/cjs/ops/AuthenticateOps.js.map +1 -1
- package/cjs/ops/AuthenticateOps.test.js +2 -2
- package/cjs/ops/AuthenticateOps.test.js.map +1 -1
- package/cjs/ops/CirclesOfTrustOps.js +3 -3
- package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.js +8 -8
- package/cjs/ops/ConnectionProfileOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.test.js +2 -2
- package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.js +1 -1
- package/cjs/ops/EmailTemplateOps.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.test.js +2 -2
- package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
- package/cjs/ops/IdmOps.js +2 -2
- package/cjs/ops/IdmOps.js.map +1 -1
- package/cjs/ops/IdmOps.test.js +2 -2
- package/cjs/ops/IdmOps.test.js.map +1 -1
- package/cjs/ops/IdpOps.js +6 -6
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/IdpOps.test.js +2 -2
- package/cjs/ops/IdpOps.test.js.map +1 -1
- package/cjs/ops/InfoOps.js +6 -6
- package/cjs/ops/InfoOps.js.map +1 -1
- package/cjs/ops/JoseOps.test.js +4 -4
- package/cjs/ops/JoseOps.test.js.map +1 -1
- package/cjs/ops/JourneyOps.js +17 -17
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/JourneyOps.test.js +4 -4
- package/cjs/ops/JourneyOps.test.js.map +1 -1
- package/cjs/ops/ManagedObjectOps.js +1 -1
- package/cjs/ops/ManagedObjectOps.js.map +1 -1
- package/cjs/ops/NodeOps.js +7 -7
- package/cjs/ops/NodeOps.js.map +1 -1
- package/cjs/ops/OAuth2ClientOps.js +6 -6
- package/cjs/ops/OAuth2ClientOps.js.map +1 -1
- package/cjs/ops/OAuth2ClientOps.test.js +3 -3
- package/cjs/ops/OAuth2ClientOps.test.js.map +1 -1
- package/cjs/ops/OAuth2ProviderOps.js +1 -1
- package/cjs/ops/OAuth2ProviderOps.js.map +1 -1
- package/cjs/ops/OrganizationOps.js +3 -3
- package/cjs/ops/OrganizationOps.js.map +1 -1
- package/cjs/ops/PolicyOps.js +8 -8
- package/cjs/ops/PolicyOps.js.map +1 -1
- package/cjs/ops/PolicyOps.test.js +6 -6
- package/cjs/ops/PolicyOps.test.js.map +1 -1
- package/cjs/ops/PolicySetOps.js +6 -6
- package/cjs/ops/PolicySetOps.js.map +1 -1
- package/cjs/ops/PolicySetOps.test.js +4 -4
- package/cjs/ops/PolicySetOps.test.js.map +1 -1
- package/cjs/ops/RealmOps.js +2 -2
- package/cjs/ops/RealmOps.js.map +1 -1
- package/cjs/ops/ResourceTypeOps.js +6 -6
- package/cjs/ops/ResourceTypeOps.js.map +1 -1
- package/cjs/ops/ResourceTypeOps.test.js +2 -2
- package/cjs/ops/ResourceTypeOps.test.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +7 -7
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js +6 -6
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ScriptOps.js +5 -5
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/ops/ScriptOps.test.js +2 -2
- package/cjs/ops/ScriptOps.test.js.map +1 -1
- package/cjs/ops/ServiceOps.js +2 -2
- package/cjs/ops/ServiceOps.js.map +1 -1
- package/cjs/ops/ThemeOps.js +3 -3
- package/cjs/ops/ThemeOps.js.map +1 -1
- package/cjs/ops/ThemeOps.test.js +3 -3
- package/cjs/ops/ThemeOps.test.js.map +1 -1
- package/cjs/ops/cloud/AdminFederationOps.js +4 -4
- package/cjs/ops/cloud/AdminFederationOps.js.map +1 -1
- package/cjs/ops/cloud/FeatureOps.js +2 -2
- package/cjs/ops/cloud/FeatureOps.js.map +1 -1
- package/cjs/ops/cloud/LogOps.js +1 -1
- package/cjs/ops/cloud/LogOps.js.map +1 -1
- package/cjs/ops/cloud/SecretsOps.js +4 -4
- package/cjs/ops/cloud/SecretsOps.js.map +1 -1
- package/cjs/ops/cloud/ServiceAccountOps.js +3 -3
- package/cjs/ops/cloud/ServiceAccountOps.js.map +1 -1
- package/cjs/ops/cloud/ServiceAccountOps.test.js +3 -3
- package/cjs/ops/cloud/ServiceAccountOps.test.js.map +1 -1
- package/cjs/ops/cloud/StartupOps.js +4 -4
- package/cjs/ops/cloud/StartupOps.js.map +1 -1
- package/cjs/ops/cloud/VariablesOps.js +5 -5
- package/cjs/ops/cloud/VariablesOps.js.map +1 -1
- package/cjs/ops/utils/Console.js +1 -1
- package/cjs/ops/utils/Console.js.map +1 -1
- package/cjs/ops/utils/DataProtection.js +3 -3
- package/cjs/ops/utils/DataProtection.js.map +1 -1
- package/cjs/ops/utils/DataProtection.test.js +1 -1
- package/cjs/ops/utils/DataProtection.test.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.js +4 -4
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.test.js +1 -1
- package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
- package/cjs/ops/utils/OpsUtils.js +3 -3
- package/cjs/ops/utils/OpsUtils.js.map +1 -1
- package/cjs/ops/utils/OpsUtils.test.js +3 -3
- package/cjs/ops/utils/OpsUtils.test.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.js +2 -2
- package/cjs/ops/utils/ValidationUtils.js.map +1 -1
- package/cjs/ops/utils/ValidationUtils.test.js +1 -1
- package/cjs/ops/utils/ValidationUtils.test.js.map +1 -1
- package/cjs/ops/utils/Version.js +1 -1
- package/cjs/ops/utils/Version.js.map +1 -1
- package/cjs/ops/utils/Version.test.js +1 -1
- package/cjs/ops/utils/Version.test.js.map +1 -1
- package/cjs/ops/utils/Wordwrap.test.js +1 -1
- package/cjs/ops/utils/Wordwrap.test.js.map +1 -1
- package/cjs/shared/State.test.js +1 -1
- package/cjs/shared/State.test.js.map +1 -1
- package/cjs/test/mocks/ForgeRockApiMockEngine.js +2 -2
- package/cjs/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
- package/cjs/utils/AutoSetupPolly.js +2 -2
- package/cjs/utils/AutoSetupPolly.js.map +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/esm/api/AgentApi.js +4 -4
- package/esm/api/AgentApi.js.map +1 -1
- package/esm/api/AgentApi.test.js +3 -3
- package/esm/api/AgentApi.test.js.map +1 -1
- package/esm/api/AuthenticateApi.js +3 -3
- package/esm/api/AuthenticateApi.js.map +1 -1
- package/esm/api/AuthenticateApi.test.js +2 -4
- package/esm/api/AuthenticateApi.test.js.map +1 -1
- package/esm/api/BaseApi.js +4 -4
- package/esm/api/BaseApi.js.map +1 -1
- package/esm/api/CirclesOfTrustApi.js +3 -3
- package/esm/api/CirclesOfTrustApi.js.map +1 -1
- package/esm/api/IdmConfigApi.js +3 -3
- package/esm/api/IdmConfigApi.js.map +1 -1
- package/esm/api/IdmSystemApi.js +3 -3
- package/esm/api/IdmSystemApi.js.map +1 -1
- package/esm/api/ManagedObjectApi.js +3 -3
- package/esm/api/ManagedObjectApi.js.map +1 -1
- package/esm/api/NodeApi.js +3 -3
- package/esm/api/NodeApi.js.map +1 -1
- package/esm/api/NodeApi.test.js +2 -2
- package/esm/api/NodeApi.test.js.map +1 -1
- package/esm/api/OAuth2ClientApi.js +3 -3
- package/esm/api/OAuth2ClientApi.js.map +1 -1
- package/esm/api/OAuth2OIDCApi.js +4 -4
- package/esm/api/OAuth2OIDCApi.js.map +1 -1
- package/esm/api/OAuth2OIDCApi.test.js +4 -4
- package/esm/api/OAuth2OIDCApi.test.js.map +1 -1
- package/esm/api/OAuth2ProviderApi.js +3 -3
- package/esm/api/OAuth2ProviderApi.js.map +1 -1
- package/esm/api/PoliciesApi.js +3 -3
- package/esm/api/PoliciesApi.js.map +1 -1
- package/esm/api/PoliciesApi.test.js +4 -4
- package/esm/api/PoliciesApi.test.js.map +1 -1
- package/esm/api/PolicySetApi.js +4 -4
- package/esm/api/PolicySetApi.js.map +1 -1
- package/esm/api/PolicySetApi.test.js +3 -3
- package/esm/api/PolicySetApi.test.js.map +1 -1
- package/esm/api/RealmApi.js +3 -3
- package/esm/api/RealmApi.js.map +1 -1
- package/esm/api/ResourceTypesApi.js +3 -3
- package/esm/api/ResourceTypesApi.js.map +1 -1
- package/esm/api/ResourceTypesApi.test.js +2 -2
- package/esm/api/ResourceTypesApi.test.js.map +1 -1
- package/esm/api/Saml2Api.js +3 -3
- package/esm/api/Saml2Api.js.map +1 -1
- package/esm/api/ScriptApi.js +3 -3
- package/esm/api/ScriptApi.js.map +1 -1
- package/esm/api/ServerInfoApi.js +2 -2
- package/esm/api/ServerInfoApi.js.map +1 -1
- package/esm/api/ServiceApi.js +3 -3
- package/esm/api/ServiceApi.js.map +1 -1
- package/esm/api/SocialIdentityProvidersApi.js +3 -3
- package/esm/api/SocialIdentityProvidersApi.js.map +1 -1
- package/esm/api/TreeApi.js +3 -3
- package/esm/api/TreeApi.js.map +1 -1
- package/esm/api/TreeApi.test.js +2 -2
- package/esm/api/TreeApi.test.js.map +1 -1
- package/esm/api/cloud/AdminFederationProvidersApi.js +3 -3
- package/esm/api/cloud/AdminFederationProvidersApi.js.map +1 -1
- package/esm/api/cloud/EnvInfoApi.js +3 -3
- package/esm/api/cloud/EnvInfoApi.js.map +1 -1
- package/esm/api/cloud/FeatureApi.js +3 -3
- package/esm/api/cloud/FeatureApi.js.map +1 -1
- package/esm/api/cloud/LogApi.js +3 -3
- package/esm/api/cloud/LogApi.js.map +1 -1
- package/esm/api/cloud/SecretsApi.js +4 -4
- package/esm/api/cloud/SecretsApi.js.map +1 -1
- package/esm/api/cloud/SecretsApi.test.js +2 -2
- package/esm/api/cloud/SecretsApi.test.js.map +1 -1
- package/esm/api/cloud/StartupApi.js +3 -3
- package/esm/api/cloud/StartupApi.js.map +1 -1
- package/esm/api/cloud/StartupApi.test.js +1 -1
- package/esm/api/cloud/StartupApi.test.js.map +1 -1
- package/esm/api/cloud/VariablesApi.js +4 -4
- package/esm/api/cloud/VariablesApi.js.map +1 -1
- package/esm/api/cloud/VariablesApi.test.js +2 -2
- package/esm/api/cloud/VariablesApi.test.js.map +1 -1
- package/esm/api/utils/ApiUtils.js +1 -2
- package/esm/api/utils/ApiUtils.js.map +1 -1
- package/esm/api/utils/ApiUtils.test.js +2 -2
- package/esm/api/utils/ApiUtils.test.js.map +1 -1
- package/esm/ext/axios-curlirize/curlirize.js +1 -1
- package/esm/ext/axios-curlirize/curlirize.js.map +1 -1
- package/esm/index.js +49 -54
- package/esm/index.js.map +1 -1
- package/esm/ops/AdminOps.js +8 -8
- package/esm/ops/AdminOps.js.map +1 -1
- package/esm/ops/AgentOps.js +3 -3
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/AgentOps.test.js +3 -3
- package/esm/ops/AgentOps.test.js.map +1 -1
- package/esm/ops/AuthenticateOps.js +12 -12
- package/esm/ops/AuthenticateOps.js.map +1 -1
- package/esm/ops/AuthenticateOps.test.js +2 -4
- package/esm/ops/AuthenticateOps.test.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +3 -5
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +8 -8
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.test.js +2 -2
- package/esm/ops/ConnectionProfileOps.test.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +1 -2
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.test.js +2 -2
- package/esm/ops/EmailTemplateOps.test.js.map +1 -1
- package/esm/ops/IdmOps.js +2 -3
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdmOps.test.js +2 -2
- package/esm/ops/IdmOps.test.js.map +1 -1
- package/esm/ops/IdpOps.js +8 -8
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/IdpOps.test.js +2 -2
- package/esm/ops/IdpOps.test.js.map +1 -1
- package/esm/ops/InfoOps.js +6 -6
- package/esm/ops/InfoOps.js.map +1 -1
- package/esm/ops/JoseOps.test.js +4 -4
- package/esm/ops/JoseOps.test.js.map +1 -1
- package/esm/ops/JourneyOps.js +17 -17
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/JourneyOps.test.js +4 -4
- package/esm/ops/JourneyOps.test.js.map +1 -1
- package/esm/ops/ManagedObjectOps.js +1 -2
- package/esm/ops/ManagedObjectOps.js.map +1 -1
- package/esm/ops/NodeOps.js +7 -7
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +7 -10
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.test.js +3 -3
- package/esm/ops/OAuth2ClientOps.test.js.map +1 -1
- package/esm/ops/OAuth2ProviderOps.js +1 -2
- package/esm/ops/OAuth2ProviderOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +3 -4
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +9 -12
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicyOps.test.js +6 -6
- package/esm/ops/PolicyOps.test.js.map +1 -1
- package/esm/ops/PolicySetOps.js +7 -10
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/PolicySetOps.test.js +4 -4
- package/esm/ops/PolicySetOps.test.js.map +1 -1
- package/esm/ops/RealmOps.js +2 -3
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +4 -4
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.test.js +2 -2
- package/esm/ops/ResourceTypeOps.test.js.map +1 -1
- package/esm/ops/Saml2Ops.js +7 -7
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test.js +6 -6
- package/esm/ops/Saml2Ops.test.js.map +1 -1
- package/esm/ops/ScriptOps.js +5 -5
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/ScriptOps.test.js +2 -2
- package/esm/ops/ScriptOps.test.js.map +1 -1
- package/esm/ops/ServiceOps.js +2 -2
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +3 -3
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/ThemeOps.test.js +3 -3
- package/esm/ops/ThemeOps.test.js.map +1 -1
- package/esm/ops/cloud/AdminFederationOps.js +4 -4
- package/esm/ops/cloud/AdminFederationOps.js.map +1 -1
- package/esm/ops/cloud/FeatureOps.js +2 -2
- package/esm/ops/cloud/FeatureOps.js.map +1 -1
- package/esm/ops/cloud/LogOps.js +1 -3
- package/esm/ops/cloud/LogOps.js.map +1 -1
- package/esm/ops/cloud/SecretsOps.js +4 -5
- package/esm/ops/cloud/SecretsOps.js.map +1 -1
- package/esm/ops/cloud/ServiceAccountOps.js +3 -3
- package/esm/ops/cloud/ServiceAccountOps.js.map +1 -1
- package/esm/ops/cloud/ServiceAccountOps.test.js +3 -5
- package/esm/ops/cloud/ServiceAccountOps.test.js.map +1 -1
- package/esm/ops/cloud/StartupOps.js +4 -6
- package/esm/ops/cloud/StartupOps.js.map +1 -1
- package/esm/ops/cloud/VariablesOps.js +5 -6
- package/esm/ops/cloud/VariablesOps.js.map +1 -1
- package/esm/ops/utils/Console.js +1 -2
- package/esm/ops/utils/Console.js.map +1 -1
- package/esm/ops/utils/DataProtection.js +3 -3
- package/esm/ops/utils/DataProtection.js.map +1 -1
- package/esm/ops/utils/DataProtection.test.js +1 -1
- package/esm/ops/utils/DataProtection.test.js.map +1 -1
- package/esm/ops/utils/ExportImportUtils.js +4 -4
- package/esm/ops/utils/ExportImportUtils.js.map +1 -1
- package/esm/ops/utils/ExportImportUtils.test.js +1 -3
- package/esm/ops/utils/ExportImportUtils.test.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +3 -3
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/OpsUtils.test.js +3 -3
- package/esm/ops/utils/OpsUtils.test.js.map +1 -1
- package/esm/ops/utils/ValidationUtils.js +2 -2
- package/esm/ops/utils/ValidationUtils.js.map +1 -1
- package/esm/ops/utils/ValidationUtils.test.js +1 -1
- package/esm/ops/utils/ValidationUtils.test.js.map +1 -1
- package/esm/ops/utils/Version.js +1 -1
- package/esm/ops/utils/Version.js.map +1 -1
- package/esm/ops/utils/Version.test.js +1 -1
- package/esm/ops/utils/Version.test.js.map +1 -1
- package/esm/ops/utils/Wordwrap.test.js +1 -1
- package/esm/ops/utils/Wordwrap.test.js.map +1 -1
- package/esm/shared/State.test.js +1 -1
- package/esm/shared/State.test.js.map +1 -1
- package/esm/test/mocks/ForgeRockApiMockEngine.js +2 -2
- package/esm/test/mocks/ForgeRockApiMockEngine.js.map +1 -1
- package/esm/utils/AutoSetupPolly.js +2 -2
- package/esm/utils/AutoSetupPolly.js.map +1 -1
- package/esm/utils/SetupPollyForFrodoLib.js +1 -1
- package/esm/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticateOps.test.js","names":["
|
|
1
|
+
{"version":3,"file":"AuthenticateOps.test.js","names":["matchConfig","defaultMatchRequestsBy","body","order","autoSetupPolly","describe","test","_asyncToGenerator","expect","Authenticate","getTokens","toBeDefined","state","setHost","process","env","FRODO_HOST","setRealm","FRODO_REALM","setUsername","FRODO_USERNAME","setPassword","FRODO_PASSWORD","result","toBe","getDeploymentType","toEqual","getCookieName","toBeTruthy","getCookieValue","getBearerToken","toMatchSnapshot"],"sources":["../../src/ops/AuthenticateOps.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_noauth\n * script and override all the connection state variables supplied to the\n * getTokens() function by the test to connect to the env to record from:\n *\n * FRODO_DEBUG=1 FRODO_HOST=https://openam-volker-dev.forgeblocks.com/am \\\n * FRODO_USERNAME=volker.scheuber@forgerock.com FRODO_PASSWORD='S3cr3!S@uc3' \\\n * npm run test:record_noauth AuthenticateOps\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 AuthenticateOps\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 AuthenticateOps\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 { Authenticate, state } from '../index';\nimport {\n autoSetupPolly,\n defaultMatchRequestsBy,\n} from '../utils/AutoSetupPolly';\n\n// need to modify the default matching rules to allow the mocking to work for an authentication flow.\nconst matchConfig = defaultMatchRequestsBy();\nmatchConfig.body = false; // oauth flows are tricky because of the PKCE challenge, which is different for each request\nmatchConfig.order = true; // since we instruct Polly not to match the body, we need to enable ordering of the requests\n\nautoSetupPolly(matchConfig);\n\ndescribe('AuthenticateOps', () => {\n describe('getTokens()', () => {\n test('0: Method is implemented', async () => {\n expect(Authenticate.getTokens).toBeDefined();\n });\n\n test('1: Authenticate successfully as user', async () => {\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n state.setUsername(process.env.FRODO_USERNAME || 'mockUser');\n state.setPassword(process.env.FRODO_PASSWORD || 'mockPassword');\n const result = await Authenticate.getTokens();\n expect(result).toBe(true);\n expect(state.getDeploymentType()).toEqual('cloud');\n expect(state.getCookieName()).toBeTruthy();\n expect(state.getCookieValue()).toBeTruthy();\n expect(state.getBearerToken()).toBeTruthy();\n expect(state.getCookieName()).toMatchSnapshot();\n expect(state.getCookieValue()).toMatchSnapshot();\n expect(state.getBearerToken()).toMatchSnapshot();\n });\n });\n});\n"],"mappings":";;;;;sYAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA,IAAMA,WAAW,GAAG,IAAAC,sCAAsB,EAAC,CAAC;AAC5CD,WAAW,CAACE,IAAI,GAAG,KAAK,CAAC,CAAC;AAC1BF,WAAW,CAACG,KAAK,GAAG,IAAI,CAAC,CAAC;;AAE1B,IAAAC,8BAAc,EAACJ,WAAW,CAAC;AAE3BK,QAAQ,CAAC,iBAAiB,EAAE,MAAM;EAChCA,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC5BC,IAAI,CAAC,0BAA0B,eAAAC,iBAAA,CAAE,aAAY;MAC3CC,MAAM,CAACC,mBAAY,CAACC,SAAS,CAAC,CAACC,WAAW,CAAC,CAAC;IAC9C,CAAC,EAAC;IAEFL,IAAI,CAAC,sCAAsC,eAAAC,iBAAA,CAAE,aAAY;MACvDK,YAAK,CAACC,OAAO,CACXC,OAAO,CAACC,GAAG,CAACC,UAAU,IAAI,6CAC5B,CAAC;MACDJ,YAAK,CAACK,QAAQ,CAACH,OAAO,CAACC,GAAG,CAACG,WAAW,IAAI,OAAO,CAAC;MAClDN,YAAK,CAACO,WAAW,CAACL,OAAO,CAACC,GAAG,CAACK,cAAc,IAAI,UAAU,CAAC;MAC3DR,YAAK,CAACS,WAAW,CAACP,OAAO,CAACC,GAAG,CAACO,cAAc,IAAI,cAAc,CAAC;MAC/D,IAAMC,MAAM,SAASd,mBAAY,CAACC,SAAS,CAAC,CAAC;MAC7CF,MAAM,CAACe,MAAM,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;MACzBhB,MAAM,CAACI,YAAK,CAACa,iBAAiB,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,OAAO,CAAC;MAClDlB,MAAM,CAACI,YAAK,CAACe,aAAa,CAAC,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;MAC1CpB,MAAM,CAACI,YAAK,CAACiB,cAAc,CAAC,CAAC,CAAC,CAACD,UAAU,CAAC,CAAC;MAC3CpB,MAAM,CAACI,YAAK,CAACkB,cAAc,CAAC,CAAC,CAAC,CAACF,UAAU,CAAC,CAAC;MAC3CpB,MAAM,CAACI,YAAK,CAACe,aAAa,CAAC,CAAC,CAAC,CAACI,eAAe,CAAC,CAAC;MAC/CvB,MAAM,CAACI,YAAK,CAACiB,cAAc,CAAC,CAAC,CAAC,CAACE,eAAe,CAAC,CAAC;MAChDvB,MAAM,CAACI,YAAK,CAACkB,cAAc,CAAC,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;IAClD,CAAC,EAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -13,9 +13,9 @@ exports.importFirstCircleOfTrust = importFirstCircleOfTrust;
|
|
|
13
13
|
exports.listCirclesOfTrust = listCirclesOfTrust;
|
|
14
14
|
var _fs = _interopRequireDefault(require("fs"));
|
|
15
15
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
16
|
-
var _Console = require("./utils/Console");
|
|
17
|
-
var _CirclesOfTrustApi = require("../api/CirclesOfTrustApi");
|
|
18
|
-
var _ExportImportUtils = require("./utils/ExportImportUtils");
|
|
16
|
+
var _Console = require("./utils/Console.js");
|
|
17
|
+
var _CirclesOfTrustApi = require("../api/CirclesOfTrustApi.js");
|
|
18
|
+
var _ExportImportUtils = require("./utils/ExportImportUtils.js");
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
21
21
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CirclesOfTrustOps.js","names":["_fs","_interopRequireDefault","require","_lodash","_Console","_CirclesOfTrustApi","_ExportImportUtils","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","cot","listCirclesOfTrust","_listCirclesOfTrust","long","length","cotList","getCirclesOfTrust","result","printMessage","concat","sort","a","b","_id","localeCompare","forEach","table","createTable","push","description","status","trustedProviders","map","provider","split","join","toString","exportDependencies","_x","_x2","_exportDependencies","cotData","fileData","exportCircleOfTrust","_x3","_exportCircleOfTrust","cotId","file","fileName","getTypedFilename","createProgressIndicator","_","cloneDeep","getCircleOfTrust","updateProgressIndicator","saveJsonToFile","stopProgressIndicator","brightCyan","exportCirclesOfTrustToFile","_exportCirclesOfTrustToFile","getRealmString","allCotData","_rev","exportCirclesOfTrustToFiles","_exportCirclesOfTrustToFiles","importDependencies","_x4","_x5","_importDependencies","importCircleOfTrust","_x6","_x7","_importCircleOfTrust","fs","readFile","_ref","data","JSON","parse","validateImport","get","createCircleOfTrust","createProviderErr","response","_x10","_x11","importFirstCircleOfTrust","_x8","_importFirstCircleOfTrust","_ref2","hasOwnProperty","call","createCircleOfTrustErr","_x12","_x13","importCirclesOfTrustFromFile","_x9","_importCirclesOfTrustFromFile","_ref3","Object","keys","_x14","_x15","importCirclesOfTrustFromFiles","_importCirclesOfTrustFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["../../src/ops/CirclesOfTrustOps.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport {\n createTable,\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport {\n getCirclesOfTrust,\n getCircleOfTrust,\n createCircleOfTrust,\n} from '../api/CirclesOfTrustApi';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n validateImport,\n} from './utils/ExportImportUtils';\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n cot: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false) {\n let cotList = [];\n try {\n cotList = (await getCirclesOfTrust()).result;\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(cotData, fileData) {\n // TODO: Export dependencies\n return [cotData, fileData];\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrust(cotId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(cotId, 'cot.saml');\n }\n createProgressIndicator(1, `Exporting circle of trust ${cotId}`);\n try {\n const cotData = _.cloneDeep(getCircleOfTrust(cotId));\n delete cotData['_rev'];\n updateProgressIndicator(`Exporting ${cotId}`);\n const fileData = getFileDataTemplate();\n fileData.saml.cot[cotId] = cotData;\n await exportDependencies(cotData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${getRealmString()}CirclesOfTrust`,\n 'cot.saml'\n );\n }\n const fileData = getFileDataTemplate();\n let allCotData = [];\n try {\n allCotData = _.cloneDeep((await getCirclesOfTrust()).result);\n createProgressIndicator(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${allCotData.length} circle(s) of trust exported to ${fileName}.`\n );\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles() {\n let allCotData = [];\n try {\n allCotData = _.cloneDeep((await getCirclesOfTrust()).result);\n createProgressIndicator(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);\n const fileName = getTypedFilename(cotData._id, 'cot.saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${allCotData.length} providers exported.`);\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(cotData, fileData) {\n // TODO: Import dependencies\n return [cotData, fileData];\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrust(cotId, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing circle of trust...');\n const cotData = _.get(fileData, ['saml', 'cot', cotId]);\n if (cotData) {\n updateProgressIndicator(`Importing ${cotId}`);\n await importDependencies(cotData, fileData);\n try {\n await createCircleOfTrust(cotData);\n stopProgressIndicator(`Successfully imported ${cotId}.`);\n } catch (createProviderErr) {\n stopProgressIndicator(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n } else {\n stopProgressIndicator(\n `Circle of trust ${cotId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrust(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing circle of trust...');\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n updateProgressIndicator(`Importing ${cotId}`);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n await createCircleOfTrust(cotData);\n stopProgressIndicator(`Successfully imported ${cotId}.`);\n } catch (createCircleOfTrustErr) {\n stopProgressIndicator(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n Object.keys(fileData.saml.cot).length,\n 'Importing circles of trust...'\n );\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n updateProgressIndicator(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n stopProgressIndicator(`Circles of trust imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.cot.saml.json')\n );\n createProgressIndicator(jsonFiles.length, 'Importing circles or trust...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n total += _.keys(fileData.saml.cot).length;\n let errors = 0;\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n // updateProgressIndicator(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n errors += 1;\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n totalErrors += errors;\n updateProgressIndicator(\n `Imported ${\n _.keys(fileData.saml.cot).length - errors\n } circle(s) of trust from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} circle(s) of trust from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CirclesOfTrustOps.js","names":["_fs","_interopRequireDefault","require","_lodash","_Console","_CirclesOfTrustApi","_ExportImportUtils","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","cot","listCirclesOfTrust","_listCirclesOfTrust","long","length","cotList","getCirclesOfTrust","result","printMessage","concat","sort","a","b","_id","localeCompare","forEach","table","createTable","push","description","status","trustedProviders","map","provider","split","join","toString","exportDependencies","_x","_x2","_exportDependencies","cotData","fileData","exportCircleOfTrust","_x3","_exportCircleOfTrust","cotId","file","fileName","getTypedFilename","createProgressIndicator","_","cloneDeep","getCircleOfTrust","updateProgressIndicator","saveJsonToFile","stopProgressIndicator","brightCyan","exportCirclesOfTrustToFile","_exportCirclesOfTrustToFile","getRealmString","allCotData","_rev","exportCirclesOfTrustToFiles","_exportCirclesOfTrustToFiles","importDependencies","_x4","_x5","_importDependencies","importCircleOfTrust","_x6","_x7","_importCircleOfTrust","fs","readFile","_ref","data","JSON","parse","validateImport","get","createCircleOfTrust","createProviderErr","response","_x10","_x11","importFirstCircleOfTrust","_x8","_importFirstCircleOfTrust","_ref2","hasOwnProperty","call","createCircleOfTrustErr","_x12","_x13","importCirclesOfTrustFromFile","_x9","_importCirclesOfTrustFromFile","_ref3","Object","keys","_x14","_x15","importCirclesOfTrustFromFiles","_importCirclesOfTrustFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["../../src/ops/CirclesOfTrustOps.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport {\n createTable,\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport {\n getCirclesOfTrust,\n getCircleOfTrust,\n createCircleOfTrust,\n} from '../api/CirclesOfTrustApi';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n validateImport,\n} from './utils/ExportImportUtils';\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n cot: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false) {\n let cotList = [];\n try {\n cotList = (await getCirclesOfTrust()).result;\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(cotData, fileData) {\n // TODO: Export dependencies\n return [cotData, fileData];\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrust(cotId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(cotId, 'cot.saml');\n }\n createProgressIndicator(1, `Exporting circle of trust ${cotId}`);\n try {\n const cotData = _.cloneDeep(getCircleOfTrust(cotId));\n delete cotData['_rev'];\n updateProgressIndicator(`Exporting ${cotId}`);\n const fileData = getFileDataTemplate();\n fileData.saml.cot[cotId] = cotData;\n await exportDependencies(cotData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${getRealmString()}CirclesOfTrust`,\n 'cot.saml'\n );\n }\n const fileData = getFileDataTemplate();\n let allCotData = [];\n try {\n allCotData = _.cloneDeep((await getCirclesOfTrust()).result);\n createProgressIndicator(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${allCotData.length} circle(s) of trust exported to ${fileName}.`\n );\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles() {\n let allCotData = [];\n try {\n allCotData = _.cloneDeep((await getCirclesOfTrust()).result);\n createProgressIndicator(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);\n const fileName = getTypedFilename(cotData._id, 'cot.saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${allCotData.length} providers exported.`);\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(cotData, fileData) {\n // TODO: Import dependencies\n return [cotData, fileData];\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrust(cotId, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing circle of trust...');\n const cotData = _.get(fileData, ['saml', 'cot', cotId]);\n if (cotData) {\n updateProgressIndicator(`Importing ${cotId}`);\n await importDependencies(cotData, fileData);\n try {\n await createCircleOfTrust(cotData);\n stopProgressIndicator(`Successfully imported ${cotId}.`);\n } catch (createProviderErr) {\n stopProgressIndicator(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n } else {\n stopProgressIndicator(\n `Circle of trust ${cotId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrust(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing circle of trust...');\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n updateProgressIndicator(`Importing ${cotId}`);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n await createCircleOfTrust(cotData);\n stopProgressIndicator(`Successfully imported ${cotId}.`);\n } catch (createCircleOfTrustErr) {\n stopProgressIndicator(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n Object.keys(fileData.saml.cot).length,\n 'Importing circles of trust...'\n );\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n updateProgressIndicator(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n stopProgressIndicator(`Circles of trust imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.cot.saml.json')\n );\n createProgressIndicator(jsonFiles.length, 'Importing circles or trust...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n total += _.keys(fileData.saml.cot).length;\n let errors = 0;\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n // updateProgressIndicator(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n errors += 1;\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n totalErrors += errors;\n updateProgressIndicator(\n `Imported ${\n _.keys(fileData.saml.cot).length - errors\n } circle(s) of trust from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} circle(s) of trust from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
|
|
@@ -15,14 +15,14 @@ exports.saveConnectionProfile = saveConnectionProfile;
|
|
|
15
15
|
var _fs = _interopRequireDefault(require("fs"));
|
|
16
16
|
var _os = _interopRequireDefault(require("os"));
|
|
17
17
|
var _path = _interopRequireDefault(require("path"));
|
|
18
|
-
var state = _interopRequireWildcard(require("../shared/State"));
|
|
19
|
-
var _DataProtection = _interopRequireDefault(require("./utils/DataProtection"));
|
|
20
|
-
var _Console = require("./utils/Console");
|
|
21
|
-
var _StaticStorage = require("../storage/StaticStorage");
|
|
22
|
-
var _JoseOps = require("./JoseOps");
|
|
23
|
-
var _ServiceAccountOps = require("./cloud/ServiceAccountOps");
|
|
24
|
-
var _ExportImportUtils = require("./utils/ExportImportUtils");
|
|
25
|
-
var _OpsUtils = require("./utils/OpsUtils");
|
|
18
|
+
var state = _interopRequireWildcard(require("../shared/State.js"));
|
|
19
|
+
var _DataProtection = _interopRequireDefault(require("./utils/DataProtection.js"));
|
|
20
|
+
var _Console = require("./utils/Console.js");
|
|
21
|
+
var _StaticStorage = require("../storage/StaticStorage.js");
|
|
22
|
+
var _JoseOps = require("./JoseOps.js");
|
|
23
|
+
var _ServiceAccountOps = require("./cloud/ServiceAccountOps.js");
|
|
24
|
+
var _ExportImportUtils = require("./utils/ExportImportUtils.js");
|
|
25
|
+
var _OpsUtils = require("./utils/OpsUtils.js");
|
|
26
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
27
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.js","names":["_fs","_interopRequireDefault","require","_os","_path","state","_interopRequireWildcard","_DataProtection","_Console","_StaticStorage","_JoseOps","_ServiceAccountOps","_ExportImportUtils","_OpsUtils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","target","i","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","res","TypeError","Number","crypto","DataProtection","fileOptions","indentation","legacyProfileFilename","newProfileFilename","getConnectionProfilesPath","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","concat","os","homedir","findConnectionProfiles","connectionProfiles","host","profiles","tenant","debugMessage","includes","foundProfile","listConnectionProfiles","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","printMessage","table","createTable","c","svcacctName","svcacctId","username","logApiKey","toString","e","message","migrateFromLegacyProfile","legacyPath","newPath","existsSync","writeFileSync","stringify","copyFileSync","renameSync","initConnectionProfiles","_initConnectionProfiles","folderName","path","dirname","mkdirSync","recursive","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","getConnectionProfileByHost","_x","_getConnectionProfileByHost","p","password","decrypt","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctJwk","getConnectionProfile","_getConnectionProfile","getHost","saveConnectionProfile","_x2","_saveConnectionProfile","profile","statSync","found","setHost","verboseMessage","isValidUrl","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","saveJsonToFile","deleteConnectionProfile","stat","code","describeConnectionProfile","_x3","_x4","_describeConnectionProfile","showSecrets","present","jwk","keyMap","createObjectTable","addNewServiceAccount","_addNewServiceAccount","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["../../src/ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport * as state from '../shared/State';\nimport DataProtection from './utils/DataProtection';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n printMessage,\n verboseMessage,\n} from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { IdObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\n\nconst crypto = new DataProtection();\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath(): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`\n );\n if (tenant.includes(host)) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`\n );\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\nexport async function initConnectionProfiles() {\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath();\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await crypto.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret = await crypto.encrypt(\n connectionsData[conn]['logApiSecret']\n );\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await crypto.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost(\n host: string\n): Promise<ConnectionProfileInterface> {\n try {\n const filename = getConnectionProfilesPath();\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await crypto.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await crypto.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await crypto.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost(state.getHost());\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile(host: string): Promise<boolean> {\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: start`);\n const filename = getConnectionProfilesPath();\n debugMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles(profiles, host);\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n debugMessage(profile);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [false]`);\n return false;\n }\n }\n } catch (error) {\n debugMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await crypto.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await crypto.encrypt(state.getLogApiSecret());\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n profile.svcacctName = (\n await getServiceAccount(state.getServiceAccountId())\n ).name;\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await crypto.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (await getServiceAccount(profile.svcacctId)).name;\n debugMessage(\n `ConnectionProfileOps.saveConnectionProfile: added missing service account name`\n );\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile(orderedProfiles, filename, false);\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [true]`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile(host) {\n const filename = getConnectionProfilesPath();\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount(): Promise<IdObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount(\n name,\n description,\n 'Active',\n scope,\n jwks\n );\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.js","names":["_fs","_interopRequireDefault","require","_os","_path","state","_interopRequireWildcard","_DataProtection","_Console","_StaticStorage","_JoseOps","_ServiceAccountOps","_ExportImportUtils","_OpsUtils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","target","i","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","res","TypeError","Number","crypto","DataProtection","fileOptions","indentation","legacyProfileFilename","newProfileFilename","getConnectionProfilesPath","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","concat","os","homedir","findConnectionProfiles","connectionProfiles","host","profiles","tenant","debugMessage","includes","foundProfile","listConnectionProfiles","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","printMessage","table","createTable","c","svcacctName","svcacctId","username","logApiKey","toString","e","message","migrateFromLegacyProfile","legacyPath","newPath","existsSync","writeFileSync","stringify","copyFileSync","renameSync","initConnectionProfiles","_initConnectionProfiles","folderName","path","dirname","mkdirSync","recursive","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","getConnectionProfileByHost","_x","_getConnectionProfileByHost","p","password","decrypt","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctJwk","getConnectionProfile","_getConnectionProfile","getHost","saveConnectionProfile","_x2","_saveConnectionProfile","profile","statSync","found","setHost","verboseMessage","isValidUrl","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","saveJsonToFile","deleteConnectionProfile","stat","code","describeConnectionProfile","_x3","_x4","_describeConnectionProfile","showSecrets","present","jwk","keyMap","createObjectTable","addNewServiceAccount","_addNewServiceAccount","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["../../src/ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport * as state from '../shared/State';\nimport DataProtection from './utils/DataProtection';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n printMessage,\n verboseMessage,\n} from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { IdObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\n\nconst crypto = new DataProtection();\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath(): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`\n );\n if (tenant.includes(host)) {\n debugMessage(\n `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`\n );\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\nexport async function initConnectionProfiles() {\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath();\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await crypto.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret = await crypto.encrypt(\n connectionsData[conn]['logApiSecret']\n );\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await crypto.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost(\n host: string\n): Promise<ConnectionProfileInterface> {\n try {\n const filename = getConnectionProfilesPath();\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await crypto.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await crypto.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await crypto.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost(state.getHost());\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile(host: string): Promise<boolean> {\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: start`);\n const filename = getConnectionProfilesPath();\n debugMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles(profiles, host);\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n debugMessage(profile);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [false]`);\n return false;\n }\n }\n } catch (error) {\n debugMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await crypto.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await crypto.encrypt(state.getLogApiSecret());\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n profile.svcacctName = (\n await getServiceAccount(state.getServiceAccountId())\n ).name;\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await crypto.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (await getServiceAccount(profile.svcacctId)).name;\n debugMessage(\n `ConnectionProfileOps.saveConnectionProfile: added missing service account name`\n );\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile(orderedProfiles, filename, false);\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [true]`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile(host) {\n const filename = getConnectionProfilesPath();\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount(): Promise<IdObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount(\n name,\n description,\n 'Active',\n scope,\n jwks\n );\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var _fs = _interopRequireDefault(require("fs"));
|
|
4
4
|
var _os = require("os");
|
|
5
|
-
var _index = require("../index");
|
|
6
|
-
var _StaticStorage = require("../storage/StaticStorage");
|
|
5
|
+
var _index = require("../index.js");
|
|
6
|
+
var _StaticStorage = require("../storage/StaticStorage.js");
|
|
7
7
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
8
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
9
9
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.test.js","names":["_fs","_interopRequireDefault","require","_os","_index","_StaticStorage","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","describe","connectionProfilePath1","concat","homedir","connectionProfilePath2","connectionProfilePath3","beforeAll","fs","unlinkSync","afterAll","test","host","user","password","state","setHost","setUsername","setPassword","setConnectionProfilesPath","ConnectionProfile","saveConnectionProfile","expect","existsSync","toBeTruthy","connections","JSON","parse","readFileSync","username","toEqual","encodedPassword","FRODO_MASTER_KEY_PATH_KEY","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","getConnectionProfilesPath","FRODO_MASTER_KEY_KEY","masterKey"],"sources":["../../src/ops/ConnectionProfileOps.test.ts"],"sourcesContent":["import fs from 'fs';\nimport { homedir } from 'os';\nimport { ConnectionProfile, state } from '../index';\nimport {\n FRODO_CONNECTION_PROFILES_PATH_KEY,\n FRODO_MASTER_KEY_PATH_KEY,\n FRODO_MASTER_KEY_KEY,\n} from '../storage/StaticStorage';\n\ndescribe('ConnectionProfileOps', () => {\n const connectionProfilePath1 = `${homedir()}/connections1.json`;\n const connectionProfilePath2 = `${homedir()}/connections2.json`;\n const connectionProfilePath3 = `${homedir()}/connections3.json`;\n\n // delete all connection profile files before running the tests\n beforeAll(() => {\n try {\n fs.unlinkSync(connectionProfilePath1);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath2);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath3);\n } catch (error) {\n // ignore\n }\n });\n\n // clean up all connection profile files after running the tests\n afterAll(() => {\n try {\n fs.unlinkSync(connectionProfilePath1);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath2);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath3);\n } catch (error) {\n // ignore\n }\n });\n\n describe('saveConnectionProfile()', () => {\n test('1: Create connection profiles in location from state field', async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath(connectionProfilePath1);\n await ConnectionProfile.saveConnectionProfile(host);\n expect(fs.existsSync(connectionProfilePath1)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath1, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`2: Create connection profiles in location from env ${FRODO_MASTER_KEY_PATH_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n // set the hard-coded master key\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] = connectionProfilePath2;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath('');\n await ConnectionProfile.saveConnectionProfile(host);\n expect(ConnectionProfile.getConnectionProfilesPath()).toEqual(\n connectionProfilePath2\n );\n expect(fs.existsSync(connectionProfilePath2)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath2, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`3: Use Master Key from env ${FRODO_MASTER_KEY_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const masterKey = 'bxnQlhcU5VfyDs+BBPhRhK09yHaNtdIIk85HUMKBnqg=';\n // set the hard-coded master key\n process.env[FRODO_MASTER_KEY_KEY] = masterKey;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath(connectionProfilePath3);\n await ConnectionProfile.saveConnectionProfile(host);\n expect(fs.existsSync(connectionProfilePath3)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath3, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n });\n});\n"],"mappings":";;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,GAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.test.js","names":["_fs","_interopRequireDefault","require","_os","_index","_StaticStorage","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","describe","connectionProfilePath1","concat","homedir","connectionProfilePath2","connectionProfilePath3","beforeAll","fs","unlinkSync","afterAll","test","host","user","password","state","setHost","setUsername","setPassword","setConnectionProfilesPath","ConnectionProfile","saveConnectionProfile","expect","existsSync","toBeTruthy","connections","JSON","parse","readFileSync","username","toEqual","encodedPassword","FRODO_MASTER_KEY_PATH_KEY","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","getConnectionProfilesPath","FRODO_MASTER_KEY_KEY","masterKey"],"sources":["../../src/ops/ConnectionProfileOps.test.ts"],"sourcesContent":["import fs from 'fs';\nimport { homedir } from 'os';\nimport { ConnectionProfile, state } from '../index';\nimport {\n FRODO_CONNECTION_PROFILES_PATH_KEY,\n FRODO_MASTER_KEY_PATH_KEY,\n FRODO_MASTER_KEY_KEY,\n} from '../storage/StaticStorage';\n\ndescribe('ConnectionProfileOps', () => {\n const connectionProfilePath1 = `${homedir()}/connections1.json`;\n const connectionProfilePath2 = `${homedir()}/connections2.json`;\n const connectionProfilePath3 = `${homedir()}/connections3.json`;\n\n // delete all connection profile files before running the tests\n beforeAll(() => {\n try {\n fs.unlinkSync(connectionProfilePath1);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath2);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath3);\n } catch (error) {\n // ignore\n }\n });\n\n // clean up all connection profile files after running the tests\n afterAll(() => {\n try {\n fs.unlinkSync(connectionProfilePath1);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath2);\n } catch (error) {\n // ignore\n }\n try {\n fs.unlinkSync(connectionProfilePath3);\n } catch (error) {\n // ignore\n }\n });\n\n describe('saveConnectionProfile()', () => {\n test('1: Create connection profiles in location from state field', async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath(connectionProfilePath1);\n await ConnectionProfile.saveConnectionProfile(host);\n expect(fs.existsSync(connectionProfilePath1)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath1, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`2: Create connection profiles in location from env ${FRODO_MASTER_KEY_PATH_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n // set the hard-coded master key\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] = connectionProfilePath2;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath('');\n await ConnectionProfile.saveConnectionProfile(host);\n expect(ConnectionProfile.getConnectionProfilesPath()).toEqual(\n connectionProfilePath2\n );\n expect(fs.existsSync(connectionProfilePath2)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath2, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n\n test(`3: Use Master Key from env ${FRODO_MASTER_KEY_KEY}`, async () => {\n const host = 'https://openam-tenant-name.forgeblocks.com/am';\n const user = 'frodo.baggins@shire.me';\n const password = 'G@nd@lfTheW153';\n const masterKey = 'bxnQlhcU5VfyDs+BBPhRhK09yHaNtdIIk85HUMKBnqg=';\n // set the hard-coded master key\n process.env[FRODO_MASTER_KEY_KEY] = masterKey;\n\n state.setHost(host);\n state.setUsername(user);\n state.setPassword(password);\n state.setConnectionProfilesPath(connectionProfilePath3);\n await ConnectionProfile.saveConnectionProfile(host);\n expect(fs.existsSync(connectionProfilePath3)).toBeTruthy();\n const connections = JSON.parse(\n fs.readFileSync(connectionProfilePath3, 'utf8')\n );\n expect(connections).toBeTruthy();\n expect(connections[host]).toBeTruthy();\n expect(connections[host].username).toEqual(user);\n expect(connections[host].encodedPassword).toBeTruthy();\n });\n });\n});\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ exports.EMAIL_TEMPLATE_TYPE = void 0;
|
|
|
7
7
|
exports.getEmailTemplate = getEmailTemplate;
|
|
8
8
|
exports.getEmailTemplates = getEmailTemplates;
|
|
9
9
|
exports.putEmailTemplate = putEmailTemplate;
|
|
10
|
-
var _IdmConfigApi = require("../api/IdmConfigApi");
|
|
10
|
+
var _IdmConfigApi = require("../api/IdmConfigApi.js");
|
|
11
11
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
12
12
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
13
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailTemplateOps.js","names":["
|
|
1
|
+
{"version":3,"file":"EmailTemplateOps.js","names":["EMAIL_TEMPLATE_TYPE","exports","getEmailTemplates","_getEmailTemplates","apply","arguments","_asyncToGenerator","getConfigEntitiesByType","getEmailTemplate","_x","_getEmailTemplate","templateId","getConfigEntity","concat","putEmailTemplate","_x2","_x3","_putEmailTemplate","templateData","putConfigEntity"],"sources":["../../src/ops/EmailTemplateOps.ts"],"sourcesContent":["import {\n getConfigEntitiesByType,\n getConfigEntity,\n putConfigEntity,\n} from '../api/IdmConfigApi';\n\n/**\n * Email template type key used to build the IDM id: 'emailTemplate/<id>'\n */\nexport const EMAIL_TEMPLATE_TYPE = 'emailTemplate';\n\n/**\n * Get all email templates\n * @returns {Promise} a promise that resolves to an array of email template objects\n */\nexport async function getEmailTemplates() {\n return getConfigEntitiesByType(EMAIL_TEMPLATE_TYPE);\n}\n\n/**\n * Get email template\n * @param {string} templateId id/name of the email template without the type prefix\n * @returns {Promise} a promise that resolves an email template object\n */\nexport async function getEmailTemplate(templateId) {\n return getConfigEntity(`${EMAIL_TEMPLATE_TYPE}/${templateId}`);\n}\n\n/**\n * Put email template\n * @param {string} templateId id/name of the email template without the type prefix\n * @param {Object} templateData email template object\n * @returns {Promise} a promise that resolves to an email template object\n */\nexport async function putEmailTemplate(templateId, templateData) {\n return putConfigEntity(`${EMAIL_TEMPLATE_TYPE}/${templateId}`, templateData);\n}\n"],"mappings":";;;;;;;;;;;;AAMA;AACA;AACA;AACO,IAAMA,mBAAmB,GAAG,eAAe;;AAElD;AACA;AACA;AACA;AAHAC,OAAA,CAAAD,mBAAA,GAAAA,mBAAA;AAAA,SAIsBE,iBAAiBA,CAAA;EAAA,OAAAC,kBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAIvC;AACA;AACA;AACA;AACA;AAJA,SAAAF,mBAAA;EAAAA,kBAAA,GAAAG,iBAAA,CAJO,aAAmC;IACxC,OAAO,IAAAC,qCAAuB,EAACP,mBAAmB,CAAC;EACrD,CAAC;EAAA,OAAAG,kBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAOqBG,gBAAgBA,CAAAC,EAAA;EAAA,OAAAC,iBAAA,CAAAN,KAAA,OAAAC,SAAA;AAAA;AAItC;AACA;AACA;AACA;AACA;AACA;AALA,SAAAK,kBAAA;EAAAA,iBAAA,GAAAJ,iBAAA,CAJO,WAAgCK,UAAU,EAAE;IACjD,OAAO,IAAAC,6BAAe,KAAAC,MAAA,CAAIb,mBAAmB,OAAAa,MAAA,CAAIF,UAAU,CAAE,CAAC;EAChE,CAAC;EAAA,OAAAD,iBAAA,CAAAN,KAAA,OAAAC,SAAA;AAAA;AAAA,SAQqBS,gBAAgBA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAAb,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAY,kBAAA;EAAAA,iBAAA,GAAAX,iBAAA,CAA/B,WAAgCK,UAAU,EAAEO,YAAY,EAAE;IAC/D,OAAO,IAAAC,6BAAe,KAAAN,MAAA,CAAIb,mBAAmB,OAAAa,MAAA,CAAIF,UAAU,GAAIO,YAAY,CAAC;EAC9E,CAAC;EAAA,OAAAD,iBAAA,CAAAb,KAAA,OAAAC,SAAA;AAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _index = require("../index");
|
|
4
|
-
var _AutoSetupPolly = require("../utils/AutoSetupPolly");
|
|
3
|
+
var _index = require("../index.js");
|
|
4
|
+
var _AutoSetupPolly = require("../utils/AutoSetupPolly.js");
|
|
5
5
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
6
6
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } /**
|
|
7
7
|
* To record and update snapshots, you must perform 3 steps in order:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailTemplateOps.test.js","names":["_index","require","_AutoSetupPolly","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","autoSetupPolly","EMAIL_TEMPLATE_TYPE","EmailTemplate","stageTemplate","_x","_stageTemplate","template","create","length","IdmConfigRaw","getConfigEntity","concat","id","deleteConfigEntity","putConfigEntity","data","describe","template1","defaultLocale","displayName","enabled","from","message","en","fr","mimeType","subject","template2","template3","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","getEmailTemplate","toBeDefined","response","toMatchSnapshot","getEmailTemplates","putEmailTemplate"],"sources":["../../src/ops/EmailTemplateOps.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 EmailTemplateOps\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 EmailTemplateOps\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 EmailTemplateOps\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 { EmailTemplate, IdmConfigRaw } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\nconst { EMAIL_TEMPLATE_TYPE } = EmailTemplate;\n\nasync function stageTemplate(\n template: { id: string; data: object },\n create = true\n) {\n // delete if exists, then create\n try {\n await IdmConfigRaw.getConfigEntity(`${EMAIL_TEMPLATE_TYPE}/${template.id}`);\n await IdmConfigRaw.deleteConfigEntity(\n `${EMAIL_TEMPLATE_TYPE}/${template.id}`\n );\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await IdmConfigRaw.putConfigEntity(\n `${EMAIL_TEMPLATE_TYPE}/${template.id}`,\n template.data\n );\n }\n }\n}\n\ndescribe('EmailTemplateOps', () => {\n const template1 = {\n id: 'FrodoTestEmailTemplate1',\n data: {\n defaultLocale: 'en',\n displayName: 'Frodo Test Email Template One',\n enabled: true,\n from: '',\n message: {\n en: '<h3>Click to reset your password</h3><h4><a href=\"{{object.resumeURI}}\">Password reset link</a></h4>',\n fr: '<h3>Cliquez pour réinitialiser votre mot de passe</h3><h4><a href=\"{{object.resumeURI}}\">Mot de passe lien de réinitialisation</a></h4>',\n },\n mimeType: 'text/html',\n subject: {\n en: 'Reset your password',\n fr: 'Réinitialisez votre mot de passe',\n },\n },\n };\n const template2 = {\n id: 'FrodoTestEmailTemplate2',\n data: {\n defaultLocale: 'en',\n displayName: 'Frodo Test Email Template Two',\n enabled: true,\n from: '',\n message: {\n en: '<h3>This is your one-time password:</h3><h4>{{object.description}}</a></h4>',\n },\n mimeType: 'text/html',\n subject: {\n en: 'One-Time Password for login',\n },\n },\n };\n const template3 = {\n id: 'FrodoTestEmailTemplate3',\n data: {\n defaultLocale: 'en',\n displayName: 'Frodo Test Email Template Three',\n enabled: true,\n from: '',\n message: {\n en: '<html><body><h3>You started a login or profile update that requires MFA. </h3><h4><a href=\"{{object.resumeURI}}\">Click to Proceed</a></h4></body></html>',\n },\n mimeType: 'text/html',\n subject: {\n en: 'Multi-Factor Email for Identity Cloud login',\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 stageTemplate(template1);\n await stageTemplate(template2);\n await stageTemplate(template3, 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 stageTemplate(template1, false);\n await stageTemplate(template2, false);\n await stageTemplate(template3, false);\n }\n });\n\n describe('getEmailTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(EmailTemplate.getEmailTemplate).toBeDefined();\n });\n\n test(`1: Get email template '${template1.id}'`, async () => {\n const response = await EmailTemplate.getEmailTemplate(template1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getEmailTemplates()', () => {\n test('0: Method is implemented', async () => {\n expect(EmailTemplate.getEmailTemplates).toBeDefined();\n });\n\n test('1: Get all email templates', async () => {\n const response = await EmailTemplate.getEmailTemplates();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putEmailTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(EmailTemplate.putEmailTemplate).toBeDefined();\n });\n\n test(`1: Create email template '${template3.id}'`, async () => {\n const response = await EmailTemplate.putEmailTemplate(\n template3.id,\n template3.data\n );\n expect(response).toMatchSnapshot();\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmailTemplateOps.test.js","names":["autoSetupPolly","EMAIL_TEMPLATE_TYPE","EmailTemplate","stageTemplate","_x","_stageTemplate","apply","arguments","_asyncToGenerator","template","create","length","undefined","IdmConfigRaw","getConfigEntity","concat","id","deleteConfigEntity","error","putConfigEntity","data","describe","template1","defaultLocale","displayName","enabled","from","message","en","fr","mimeType","subject","template2","template3","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","test","expect","getEmailTemplate","toBeDefined","response","toMatchSnapshot","getEmailTemplates","putEmailTemplate"],"sources":["../../src/ops/EmailTemplateOps.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 EmailTemplateOps\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 EmailTemplateOps\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 EmailTemplateOps\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 { EmailTemplate, IdmConfigRaw } from '../index';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\nautoSetupPolly();\n\nconst { EMAIL_TEMPLATE_TYPE } = EmailTemplate;\n\nasync function stageTemplate(\n template: { id: string; data: object },\n create = true\n) {\n // delete if exists, then create\n try {\n await IdmConfigRaw.getConfigEntity(`${EMAIL_TEMPLATE_TYPE}/${template.id}`);\n await IdmConfigRaw.deleteConfigEntity(\n `${EMAIL_TEMPLATE_TYPE}/${template.id}`\n );\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await IdmConfigRaw.putConfigEntity(\n `${EMAIL_TEMPLATE_TYPE}/${template.id}`,\n template.data\n );\n }\n }\n}\n\ndescribe('EmailTemplateOps', () => {\n const template1 = {\n id: 'FrodoTestEmailTemplate1',\n data: {\n defaultLocale: 'en',\n displayName: 'Frodo Test Email Template One',\n enabled: true,\n from: '',\n message: {\n en: '<h3>Click to reset your password</h3><h4><a href=\"{{object.resumeURI}}\">Password reset link</a></h4>',\n fr: '<h3>Cliquez pour réinitialiser votre mot de passe</h3><h4><a href=\"{{object.resumeURI}}\">Mot de passe lien de réinitialisation</a></h4>',\n },\n mimeType: 'text/html',\n subject: {\n en: 'Reset your password',\n fr: 'Réinitialisez votre mot de passe',\n },\n },\n };\n const template2 = {\n id: 'FrodoTestEmailTemplate2',\n data: {\n defaultLocale: 'en',\n displayName: 'Frodo Test Email Template Two',\n enabled: true,\n from: '',\n message: {\n en: '<h3>This is your one-time password:</h3><h4>{{object.description}}</a></h4>',\n },\n mimeType: 'text/html',\n subject: {\n en: 'One-Time Password for login',\n },\n },\n };\n const template3 = {\n id: 'FrodoTestEmailTemplate3',\n data: {\n defaultLocale: 'en',\n displayName: 'Frodo Test Email Template Three',\n enabled: true,\n from: '',\n message: {\n en: '<html><body><h3>You started a login or profile update that requires MFA. </h3><h4><a href=\"{{object.resumeURI}}\">Click to Proceed</a></h4></body></html>',\n },\n mimeType: 'text/html',\n subject: {\n en: 'Multi-Factor Email for Identity Cloud login',\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 stageTemplate(template1);\n await stageTemplate(template2);\n await stageTemplate(template3, 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 stageTemplate(template1, false);\n await stageTemplate(template2, false);\n await stageTemplate(template3, false);\n }\n });\n\n describe('getEmailTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(EmailTemplate.getEmailTemplate).toBeDefined();\n });\n\n test(`1: Get email template '${template1.id}'`, async () => {\n const response = await EmailTemplate.getEmailTemplate(template1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getEmailTemplates()', () => {\n test('0: Method is implemented', async () => {\n expect(EmailTemplate.getEmailTemplates).toBeDefined();\n });\n\n test('1: Get all email templates', async () => {\n const response = await EmailTemplate.getEmailTemplates();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putEmailTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(EmailTemplate.putEmailTemplate).toBeDefined();\n });\n\n test(`1: Create email template '${template3.id}'`, async () => {\n const response = await EmailTemplate.putEmailTemplate(\n template3.id,\n template3.data\n );\n expect(response).toMatchSnapshot();\n });\n });\n});\n"],"mappings":"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"}
|
package/cjs/ops/IdmOps.js
CHANGED
|
@@ -9,8 +9,8 @@ exports.getConfigEntity = getConfigEntity;
|
|
|
9
9
|
exports.putConfigEntity = putConfigEntity;
|
|
10
10
|
exports.queryAllManagedObjectsByType = queryAllManagedObjectsByType;
|
|
11
11
|
exports.testConnectorServers = testConnectorServers;
|
|
12
|
-
var _IdmConfigApi = require("../api/IdmConfigApi");
|
|
13
|
-
var _IdmSystemApi = require("../api/IdmSystemApi");
|
|
12
|
+
var _IdmConfigApi = require("../api/IdmConfigApi.js");
|
|
13
|
+
var _IdmSystemApi = require("../api/IdmSystemApi.js");
|
|
14
14
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
15
15
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
16
16
|
/**
|