diff --git a/.github/workflows/code-analysis-lint-test.yaml b/.github/workflows/code-analysis-lint-test.yaml index d21d3af6..c50e2f36 100644 --- a/.github/workflows/code-analysis-lint-test.yaml +++ b/.github/workflows/code-analysis-lint-test.yaml @@ -123,7 +123,6 @@ jobs: needs: [build] runs-on: ubuntu-latest env: - PING_IDENTITY_CONFIG: ${{ secrets.PING_IDENTITY_CONFIG }} PINGCLI_PINGONE_WORKER_CLIENT_ID: ${{ secrets.PINGCLI_PINGONE_WORKER_CLIENT_ID }} PINGCLI_PINGONE_WORKER_CLIENT_SECRET: ${{ secrets.PINGCLI_PINGONE_WORKER_CLIENT_SECRET }} PINGCLI_PINGONE_REGION_CODE: ${{ secrets.PINGCLI_PINGONE_REGION_CODE }} @@ -145,6 +144,9 @@ jobs: PINGCLI_PINGFEDERATE_TOKEN_URL: ${{ secrets.PINGCLI_PINGFEDERATE_TOKEN_URL }} PINGCLI_PINGFEDERATE_USERNAME: ${{ secrets.PINGCLI_PINGFEDERATE_USERNAME }} PINGCLI_PINGFEDERATE_PROVIDER_VERSION: ${{ vars.PINGCLI_PINGFEDERATE_PROVIDER_VERSION }} + PING_IDENTITY_DEVOPS_USER: ${{ secrets.PING_IDENTITY_DEVOPS_USER }} + PING_IDENTITY_DEVOPS_KEY: ${{ secrets.PING_IDENTITY_DEVOPS_KEY }} + PING_IDENTITY_ACCEPT_EULA: ${{ vars.PING_IDENTITY_ACCEPT_EULA }} steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -154,4 +156,4 @@ jobs: - uses: hashicorp/setup-terraform@v3 with: terraform_wrapper: false - - run: mkdir -p $HOME/.pingidentity/ && echo "$PING_IDENTITY_CONFIG" >> $HOME/.pingidentity/config && grep -E "[a-zA-Z]" $HOME/.pingidentity/config || exit 1 && make starttestcontainer && make test && make removetestcontainer + - run: make starttestcontainer && make test && make removetestcontainer diff --git a/Makefile b/Makefile index 126f6e67..3db5c84b 100644 --- a/Makefile +++ b/Makefile @@ -1,59 +1,177 @@ SHELL := /bin/bash -.PHONY: install fmt vet test devchecknotest devcheck importfmtlint +.PHONY: install fmt vet test devchecknotest devcheck importfmtlint golangcilint starttestcontainer removetestcontainer spincontainer openlocalwebapi openapp default: install install: - go mod tidy - go install . + @echo -n "Running 'go mod tidy' to ensure all dependencies are up to date..." + @if go mod tidy; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi + + @echo -n "Running 'go install' to install pingcli..." + @if go install .; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi fmt: - go fmt ./... + @echo -n "Running 'go fmt' to format the code..." + @if go fmt ./...; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi vet: - go vet ./... + @echo -n "Running 'go vet' to check for potential issues..." + @if go vet ./...; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi + +test: --test-cmd --test-internal-commands --test-internal-configuration --test-internal-connector --test-internal-customtypes --test-internal-input --test-internal-profiles + +--test-cmd: + @echo "Running tests for cmd..." + @go test -count=1 ./cmd/... + +--test-internal-commands: + @echo "Running tests for internal/commands..." + @go test -count=1 ./internal/commands/... + +--test-internal-configuration: + @echo "Running tests for internal/configuration..." + @go test -count=1 ./internal/configuration/... + +--test-internal-connector: + @echo "Running tests for internal/connector..." + + @# Test each connector package separately to avoid configuration collision + @go test -count=1 ./internal/connector + + @# Test the resources within each connector first + @go test -count=1 ./internal/connector/pingfederate/resources + @go test -count=1 ./internal/connector/pingone/.../resources -test: - go test -parallel=4 -count=1 ./... + @# Test the connectors itegration terraform plan tests + @go test -count=1 ./internal/connector/pingfederate + @go test -count=1 ./internal/connector/pingone/*/ + +--test-internal-customtypes: + @echo "Running tests for internal/customtypes..." + @go test -count=1 ./internal/customtypes/... + +--test-internal-input: + @echo "Running tests for internal/input..." + @go test -count=1 ./internal/input/... + +--test-internal-profiles: + @echo "Running tests for internal/profiles..." + @go test -count=1 ./internal/profiles/... devchecknotest: install importfmtlint fmt vet golangcilint devcheck: devchecknotest spincontainer test removetestcontainer importfmtlint: - impi --local . --scheme stdThirdPartyLocal ./... + @echo -n "Running 'impi' to format import ordering..." + @if impi --local . --scheme stdThirdPartyLocal ./...; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi golangcilint: - golangci-lint run --timeout 5m ./... + @echo -n "Running 'golangci-lint' to check for code quality issues..." + @# Clear the cache for every run, so that the linter outputs the same results as the GH Actions workflow + @if golangci-lint cache clear && golangci-lint run --timeout 5m ./...; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi + +starttestcontainer: --checkneededpfenvvars --checkdocker --dockerrunpf --waitforpfhealthy -starttestcontainer: - docker run --name pingfederate_terraform_provider_container \ +--checkneededpfenvvars: + @echo -n "Checking for required environment variables to run PingFederate container..." + @test -n "$$PING_IDENTITY_DEVOPS_USER" || { echo " FAILED"; echo "PING_IDENTITY_DEVOPS_USER environment variable is not set.\n\nNot Registered? Register for the DevOps Program at https://devops.pingidentity.com/how-to/devopsRegistration/."; exit 1; } + @test -n "$$PING_IDENTITY_DEVOPS_KEY" || { echo " FAILED"; echo "PING_IDENTITY_DEVOPS_KEY environment variable is not set.\n\nNot Registered? Register for the DevOps Program at https://devops.pingidentity.com/how-to/devopsRegistration/."; exit 1; } + @test "YES" = "$$PING_IDENTITY_ACCEPT_EULA" || { echo " FAILED"; echo "You must accept the EULA to use the PingFederate container. Set PING_IDENTITY_ACCEPT_EULA=YES to continue."; exit 1; } + @echo " SUCCESS" + +--checkdocker: + @echo -n "Checking if Docker is running..." + @docker info > /dev/null 2>&1 || { echo " FAILED"; echo "Docker is not running. Please start Docker and try again."; exit 1; } + @echo " SUCCESS" + +--dockerrunpf: + @echo -n "Starting the PingFederate container..." + @docker run --name pingcli_test_pingfederate_container \ -d -p 9031:9031 \ -p 9999:9999 \ - --env-file "${HOME}/.pingidentity/config" \ - -v $$(pwd)/server-profiles/shared-profile:/opt/in \ - -v $$(pwd)/server-profiles/12.2/data.json:/opt/in/instance/bulk-config/data.json \ - pingidentity/pingfederate:12.2.0-latest -# Wait for the instance to become ready - sleep 1 - duration=0 - while (( duration < 240 )) && ! docker logs pingfederate_terraform_provider_container 2>&1 | grep -q "Removing Imported Bulk File\|CONTAINER FAILURE"; \ - do \ - duration=$$((duration+1)); \ + --env PING_IDENTITY_DEVOPS_USER="$${PING_IDENTITY_DEVOPS_USER}" \ + --env PING_IDENTITY_DEVOPS_KEY="$${PING_IDENTITY_DEVOPS_KEY}" \ + --env PING_IDENTITY_ACCEPT_EULA="$${PING_IDENTITY_ACCEPT_EULA}" \ + --env CREATE_INITIAL_ADMIN_USER="true" \ + -v $$(pwd)/internal/testing/pingfederate_container_files/deploy:/opt/in/instance/server/default/deploy \ + pingidentity/pingfederate:latest > /dev/null 2>&1 || { echo " FAILED"; echo "Failed to start the PingFederate container. Please check your Docker setup."; exit 1; } + @echo " SUCCESS" + +--waitforpfhealthy: + @echo -n "Waiting for the PingFederate container to become healthy..." + @timeout=240; \ + while test $$timeout -gt 0; do \ + status=$$(docker inspect --format='{{json .State.Health.Status}}' pingcli_test_pingfederate_container 2>/dev/null || echo ""); \ + if test "$$status" = '"healthy"'; then \ + echo " SUCCESS"; \ + exit 0; \ + fi; \ sleep 1; \ - done -# Fail if the container didn't become ready in time - docker logs pingfederate_terraform_provider_container 2>&1 | grep -q "Removing Imported Bulk File" || \ - { echo "PingFederate container did not become ready in time or contains errors. Logs:"; docker logs pingfederate_terraform_provider_container; exit 1; } + timeout=$$((timeout - 1)); \ + done; \ + echo " FAILED"; \ + echo "PingFederate container did not become healthy within the timeout period."; \ + echo "Current status: $$status"; \ + docker logs pingcli_test_pingfederate_container || echo "No logs available."; \ + exit 1 -removetestcontainer: - docker rm -f pingfederate_terraform_provider_container +removetestcontainer: --checkdocker + @echo -n "Stopping and removing the PingFederate container..." + @if docker rm -f pingcli_test_pingfederate_container > /dev/null 2>&1; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi spincontainer: removetestcontainer starttestcontainer openlocalwebapi: - open "https://localhost:9999/pf-admin-api/api-docs/#/" + @echo -n "Opening the PingFederate Admin API documentation in the default web browser..." + @if open "https://localhost:9999/pf-admin-api/api-docs/#/"; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi openapp: - open "https://localhost:9999/pingfederate/app" + @echo -n "Opening the PingFederate Admin Console in the default web browser..." + @if open "https://localhost:9999/pingfederate/app"; then \ + echo " SUCCESS"; \ + else \ + echo " FAILED"; \ + exit 1; \ + fi diff --git a/cmd/config/get_test.go b/cmd/config/get_test.go index f7427d30..f0399b82 100644 --- a/cmd/config/get_test.go +++ b/cmd/config/get_test.go @@ -77,11 +77,11 @@ func Example_getEmptyMaskedValue() { // https://pkg.go.dev/testing#hdr-Examples func Example_getMaskedValue() { t := testing.T{} - _ = testutils_cobra.ExecutePingcli(&t, "config", "get", options.PingFederateClientCredentialsAuthClientSecretOption.ViperKey) + _ = testutils_cobra.ExecutePingcli(&t, "config", "get", options.PingFederateBasicAuthPasswordOption.ViperKey) // Output: - // Configuration values for profile 'default' and key 'service.pingfederate.authentication.clientCredentialsAuth.clientSecret': - // service.pingfederate.authentication.clientCredentialsAuth.clientSecret=******** + // Configuration values for profile 'default' and key 'service.pingfederate.authentication.basicAuth.password': + // service.pingfederate.authentication.basicAuth.password=******** } // https://pkg.go.dev/testing#hdr-Examples diff --git a/cmd/platform/export_test.go b/cmd/platform/export_test.go index 523d9b88..329b959c 100644 --- a/cmd/platform/export_test.go +++ b/cmd/platform/export_test.go @@ -16,8 +16,8 @@ func TestPlatformExportCmd_Execute(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName) testutils.CheckExpectedError(t, err, nil) } @@ -51,16 +51,17 @@ func TestPlatformExportCmd_ServiceFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingone-protect") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT) testutils.CheckExpectedError(t, err, nil) } // Test Platform Export Command --services flag with invalid service func TestPlatformExportCmd_ServiceFlagInvalidService(t *testing.T) { expectedErrorPattern := `^invalid argument ".*" for "-s, --services" flag: failed to set ExportServices: Invalid service: .*\. Allowed services: .*$` - err := testutils_cobra.ExecutePingcli(t, "platform", "export", "--services", "invalid") + err := testutils_cobra.ExecutePingcli(t, "platform", "export", + "--"+options.PlatformExportServiceOption.CobraParamName, "invalid") testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -69,17 +70,18 @@ func TestPlatformExportCmd_ExportFormatFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--format", "HCL", - "--overwrite", - "--services", "pingone-protect") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportExportFormatOption.CobraParamName, customtypes.ENUM_EXPORT_FORMAT_HCL, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT) testutils.CheckExpectedError(t, err, nil) } // Test Platform Export Command --format flag with invalid format func TestPlatformExportCmd_ExportFormatFlagInvalidFormat(t *testing.T) { expectedErrorPattern := `^invalid argument ".*" for "-f, --format" flag: unrecognized export format '.*'\. Must be one of: .*$` - err := testutils_cobra.ExecutePingcli(t, "platform", "export", "--format", "invalid") + err := testutils_cobra.ExecutePingcli(t, "platform", "export", + "--"+options.PlatformExportExportFormatOption.CobraParamName, "invalid") testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -88,16 +90,17 @@ func TestPlatformExportCmd_OutputDirectoryFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingone-protect") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT) testutils.CheckExpectedError(t, err, nil) } // Test Platform Export Command --output-directory flag with invalid directory func TestPlatformExportCmd_OutputDirectoryFlagInvalidDirectory(t *testing.T) { expectedErrorPattern := `^failed to create output directory '\/invalid': mkdir \/invalid: .+$` - err := testutils_cobra.ExecutePingcli(t, "platform", "export", "--output-directory", "/invalid") + err := testutils_cobra.ExecutePingcli(t, "platform", "export", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, "/invalid") testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -106,9 +109,9 @@ func TestPlatformExportCmd_OverwriteFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingone-protect") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT) testutils.CheckExpectedError(t, err, nil) } @@ -124,9 +127,9 @@ func TestPlatformExportCmd_OverwriteFlagFalseWithExistingDirectory(t *testing.T) expectedErrorPattern := `^output directory '[A-Za-z0-9_\-\/]+' is not empty\. Use --overwrite to overwrite existing export data$` err = testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--services", "pingone-protect", - "--overwrite=false") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT, + "--"+options.PlatformExportOverwriteOption.CobraParamName+"=false") testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -141,9 +144,9 @@ func TestPlatformExportCmd_OverwriteFlagTrueWithExistingDirectory(t *testing.T) } err = testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--services", "pingone-protect", - "--overwrite") + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT, + "--"+options.PlatformExportOverwriteOption.CobraParamName) testutils.CheckExpectedError(t, err, nil) } @@ -156,13 +159,13 @@ func TestPlatformExportCmd_PingOneWorkerEnvironmentIdFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingone-protect", - "--pingone-worker-environment-id", os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar), - "--pingone-worker-client-id", os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar), - "--pingone-worker-client-secret", os.Getenv(options.PingOneAuthenticationWorkerClientSecretOption.EnvVar), - "--pingone-region-code", os.Getenv(options.PingOneRegionCodeOption.EnvVar)) + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT, + "--"+options.PingOneAuthenticationWorkerEnvironmentIDOption.CobraParamName, os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar), + "--"+options.PingOneAuthenticationWorkerClientIDOption.CobraParamName, os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar), + "--"+options.PingOneAuthenticationWorkerClientSecretOption.CobraParamName, os.Getenv(options.PingOneAuthenticationWorkerClientSecretOption.EnvVar), + "--"+options.PingOneRegionCodeOption.CobraParamName, os.Getenv(options.PingOneRegionCodeOption.EnvVar)) testutils.CheckExpectedError(t, err, nil) } @@ -170,7 +173,7 @@ func TestPlatformExportCmd_PingOneWorkerEnvironmentIdFlag(t *testing.T) { func TestPlatformExportCmd_PingOneWorkerEnvironmentIdFlagRequiredTogether(t *testing.T) { expectedErrorPattern := `^if any flags in the group \[pingone-worker-environment-id pingone-worker-client-id pingone-worker-client-secret pingone-region-code] are set they must all be set; missing \[pingone-region-code pingone-worker-client-id pingone-worker-client-secret]$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--pingone-worker-environment-id", os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar)) + "--"+options.PingOneAuthenticationWorkerEnvironmentIDOption.CobraParamName, os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar)) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -179,12 +182,12 @@ func TestPlatformExportCmd_PingFederateBasicAuthFlags(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-username", os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), - "--pingfederate-password", os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), - "--pingfederate-authentication-type", "basicAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, nil) } @@ -193,7 +196,7 @@ func TestPlatformExportCmd_PingFederateBasicAuthFlags(t *testing.T) { func TestPlatformExportCmd_PingFederateBasicAuthFlagsRequiredTogether(t *testing.T) { expectedErrorPattern := `^if any flags in the group \[pingfederate-username pingfederate-password] are set they must all be set; missing \[pingfederate-password]$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--pingfederate-username", "Administrator") + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar)) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -203,13 +206,13 @@ func TestPlatformExportCmd_PingOneClientCredentialFlagsInvalid(t *testing.T) { expectedErrorPattern := `^failed to initialize pingone API client\. Check worker client ID, worker client secret, worker environment ID, and pingone region code configuration values\. oauth2: \"invalid_client\" \"Request denied: Unsupported authentication method \(Correlation ID: .*\)\"$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingone-protect", - "--pingone-worker-environment-id", os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar), - "--pingone-worker-client-id", os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar), - "--pingone-worker-client-secret", "invalid", - "--pingone-region-code", os.Getenv(options.PingOneRegionCodeOption.EnvVar), + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGONE_PROTECT, + "--"+options.PingOneAuthenticationWorkerEnvironmentIDOption.CobraParamName, os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar), + "--"+options.PingOneAuthenticationWorkerClientIDOption.CobraParamName, os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar), + "--"+options.PingOneAuthenticationWorkerClientSecretOption.CobraParamName, "invalid", + "--"+options.PingOneRegionCodeOption.CobraParamName, os.Getenv(options.PingOneRegionCodeOption.EnvVar), ) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -220,38 +223,21 @@ func TestPlatformExportCmd_PingFederateBasicAuthFlagsInvalid(t *testing.T) { expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-username", "Administrator", - "--pingfederate-password", "invalid", - "--pingfederate-authentication-type", "basicAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, "invalid", + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } -// Test Platform Export command with PingFederate Client Credentials Auth flags -func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlags(t *testing.T) { - outputDir := t.TempDir() - - err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-client-id", os.Getenv(options.PingFederateClientCredentialsAuthClientIDOption.EnvVar), - "--pingfederate-client-secret", os.Getenv(options.PingFederateClientCredentialsAuthClientSecretOption.EnvVar), - "--pingfederate-scopes", os.Getenv(options.PingFederateClientCredentialsAuthScopesOption.EnvVar), - "--pingfederate-token-url", os.Getenv(options.PingFederateClientCredentialsAuthTokenURLOption.EnvVar), - "--pingfederate-authentication-type", "clientCredentialsAuth", - ) - testutils.CheckExpectedError(t, err, nil) -} - // Test Platform Export Command fails when not provided required PingFederate Client Credentials Auth flags together func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsRequiredTogether(t *testing.T) { expectedErrorPattern := `^if any flags in the group \[pingfederate-client-id pingfederate-client-secret pingfederate-token-url] are set they must all be set; missing \[pingfederate-client-secret pingfederate-token-url]$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--pingfederate-client-id", "test") + "--"+options.PingFederateClientCredentialsAuthClientIDOption.CobraParamName, os.Getenv(options.PingFederateClientCredentialsAuthClientIDOption.EnvVar)) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -261,13 +247,14 @@ func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsInvalid(t *test expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-client-id", "test", - "--pingfederate-client-secret", "invalid", - "--pingfederate-token-url", "https://localhost:9031/as/token.oauth2", - "--pingfederate-authentication-type", "clientCredentialsAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateClientCredentialsAuthClientIDOption.CobraParamName, os.Getenv(options.PingFederateClientCredentialsAuthClientIDOption.EnvVar), + "--"+options.PingFederateClientCredentialsAuthClientSecretOption.CobraParamName, "invalid", + "--"+options.PingFederateClientCredentialsAuthTokenURLOption.CobraParamName, os.Getenv(options.PingFederateClientCredentialsAuthTokenURLOption.EnvVar), + "--"+options.PingFederateClientCredentialsAuthScopesOption.CobraParamName, os.Getenv(options.PingFederateClientCredentialsAuthScopesOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_CLIENT_CREDENTIALS, ) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -278,13 +265,13 @@ func TestPlatformExportCmd_PingFederateClientCredentialsAuthFlagsInvalidTokenURL expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-client-id", os.Getenv(options.PingFederateClientCredentialsAuthClientIDOption.EnvVar), - "--pingfederate-client-secret", os.Getenv(options.PingFederateClientCredentialsAuthClientSecretOption.EnvVar), - "--pingfederate-token-url", "https://localhost:9031/as/invalid", - "--pingfederate-authentication-type", "clientCredentialsAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateClientCredentialsAuthClientIDOption.CobraParamName, os.Getenv(options.PingFederateClientCredentialsAuthClientIDOption.EnvVar), + "--"+options.PingFederateClientCredentialsAuthClientSecretOption.CobraParamName, os.Getenv(options.PingFederateClientCredentialsAuthClientSecretOption.EnvVar), + "--"+options.PingFederateClientCredentialsAuthTokenURLOption.CobraParamName, "https://localhost:9031/as/invalid", + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_CLIENT_CREDENTIALS, ) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -294,13 +281,13 @@ func TestPlatformExportCmd_PingFederateXBypassHeaderFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-x-bypass-external-validation-header", - "--pingfederate-username", os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), - "--pingfederate-password", os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), - "--pingfederate-authentication-type", "basicAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateXBypassExternalValidationHeaderOption.CobraParamName, + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, nil) } @@ -310,13 +297,13 @@ func TestPlatformExportCmd_PingFederateTrustAllTLSFlag(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-insecure-trust-all-tls", - "--pingfederate-username", os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), - "--pingfederate-password", os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), - "--pingfederate-authentication-type", "basicAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateInsecureTrustAllTLSOption.CobraParamName, + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, nil) } @@ -327,13 +314,13 @@ func TestPlatformExportCmd_PingFederateTrustAllTLSFlagFalse(t *testing.T) { expectedErrorPattern := `^failed to initialize PingFederate Go Client. Check authentication type and credentials$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-insecure-trust-all-tls=false", - "--pingfederate-username", os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), - "--pingfederate-password", os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), - "--pingfederate-authentication-type", "basicAuth", + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateInsecureTrustAllTLSOption.CobraParamName+"=false", + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } @@ -345,14 +332,14 @@ func TestPlatformExportCmd_PingFederateCaCertificatePemFiles(t *testing.T) { outputDir := t.TempDir() err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--output-directory", outputDir, - "--overwrite", - "--services", "pingfederate", - "--pingfederate-insecure-trust-all-tls=false", - "--pingfederate-ca-certificate-pem-files", "testdata/ssl-server-crt.pem", - "--pingfederate-username", os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), - "--pingfederate-password", os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), - "--pingfederate-authentication-type", customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, + "--"+options.PlatformExportOutputDirectoryOption.CobraParamName, outputDir, + "--"+options.PlatformExportOverwriteOption.CobraParamName, + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateInsecureTrustAllTLSOption.CobraParamName+"=true", + "--"+options.PingFederateCACertificatePemFilesOption.CobraParamName, "testdata/ssl-server-crt.pem", + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, nil) } @@ -361,11 +348,11 @@ func TestPlatformExportCmd_PingFederateCaCertificatePemFiles(t *testing.T) { func TestPlatformExportCmd_PingFederateCaCertificatePemFilesInvalid(t *testing.T) { expectedErrorPattern := `^failed to read CA certificate PEM file '.*': open .*: no such file or directory$` err := testutils_cobra.ExecutePingcli(t, "platform", "export", - "--services", "pingfederate", - "--pingfederate-ca-certificate-pem-files", "invalid/crt.pem", - "--pingfederate-username", os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), - "--pingfederate-password", os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), - "--pingfederate-authentication-type", "basicAuth", + "--"+options.PlatformExportServiceOption.CobraParamName, customtypes.ENUM_EXPORT_SERVICE_PINGFEDERATE, + "--"+options.PingFederateCACertificatePemFilesOption.CobraParamName, "invalid/crt.pem", + "--"+options.PingFederateBasicAuthUsernameOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + "--"+options.PingFederateBasicAuthPasswordOption.CobraParamName, os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), + "--"+options.PingFederateAuthenticationTypeOption.CobraParamName, customtypes.ENUM_PINGFEDERATE_AUTHENTICATION_TYPE_BASIC, ) testutils.CheckExpectedError(t, err, &expectedErrorPattern) } diff --git a/cmd/root.go b/cmd/root.go index c3f34f7a..e821455d 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -183,6 +183,7 @@ func loadMainViperConfig(cfgFile string) { mainViper := profiles.GetMainConfig().ViperInstance() // Use config file from the flag. mainViper.SetConfigFile(cfgFile) + mainViper.SetConfigType("yaml") // If a config file is found, read it in. if err := mainViper.ReadInConfig(); err != nil { diff --git a/go.mod b/go.mod index d6231954..ae02929d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/pingidentity/pingcli -go 1.24.0 +go 1.24.1 tool ( github.com/golangci/golangci-lint/cmd/golangci-lint @@ -11,16 +11,17 @@ require ( github.com/fatih/color v1.18.0 github.com/hashicorp/go-uuid v1.0.3 github.com/manifoldco/promptui v0.9.0 - github.com/patrickcping/pingone-go-sdk-v2 v0.12.9 + github.com/patrickcping/pingone-go-sdk-v2 v0.12.13 github.com/patrickcping/pingone-go-sdk-v2/authorize v0.8.0 - github.com/patrickcping/pingone-go-sdk-v2/management v0.49.0 + github.com/patrickcping/pingone-go-sdk-v2/management v0.53.0 github.com/patrickcping/pingone-go-sdk-v2/mfa v0.23.0 github.com/patrickcping/pingone-go-sdk-v2/risk v0.19.0 - github.com/pingidentity/pingfederate-go-client/v1210 v1210.0.5 + github.com/pingidentity/pingfederate-go-client/v1220 v1220.0.0 github.com/rs/zerolog v1.33.0 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 - github.com/spf13/viper v1.19.0 + github.com/spf13/viper v1.20.0 + golang.org/x/mod v0.24.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -67,7 +68,7 @@ require ( github.com/ettle/strcase v0.2.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.5 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.9 // indirect github.com/go-critic/go-critic v0.12.0 // indirect @@ -100,7 +101,6 @@ require ( github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jgautheron/goconst v1.7.1 // indirect @@ -121,7 +121,6 @@ require ( github.com/ldez/usetesting v0.4.2 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/macabu/inamedparam v0.1.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect github.com/matoous/godox v1.1.0 // indirect @@ -131,7 +130,6 @@ require ( github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mgechev/revive v1.6.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect @@ -158,8 +156,7 @@ require ( github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect @@ -172,7 +169,7 @@ require ( github.com/sourcegraph/conc v0.3.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.12.0 // indirect - github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cast v1.7.1 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -199,16 +196,13 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.9.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.23.0 // indirect - golang.org/x/oauth2 v0.26.0 // indirect + golang.org/x/oauth2 v0.28.0 // indirect golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/tools v0.30.0 // indirect google.golang.org/protobuf v1.36.4 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect honnef.co/go/tools v0.6.0 // indirect mvdan.cc/gofumpt v0.7.0 // indirect diff --git a/go.sum b/go.sum index 24d08f5c..d7ece9c4 100644 --- a/go.sum +++ b/go.sum @@ -153,8 +153,8 @@ github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6 github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= @@ -307,8 +307,6 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -369,8 +367,6 @@ github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84Yrj github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= @@ -397,8 +393,6 @@ github.com/mgechev/revive v1.6.1 h1:ncK0ZCMWtb8GXwVAmk+IeWF2ULIDsvRxSRfg5sTwQ2w= github.com/mgechev/revive v1.6.1/go.mod h1:/2tfHWVO8UQi/hqJsIYNEKELi+DJy/e+PQpLgTB1v88= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -429,14 +423,14 @@ github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/patrickcping/pingone-go-sdk-v2 v0.12.9 h1:EznRTRLzpgHeqkBtXHBrwjIMlfLamqOurODgIKNyoBY= -github.com/patrickcping/pingone-go-sdk-v2 v0.12.9/go.mod h1:ZA09d5Rw6Mp7MBT7iJageVfzU1k6yjEjsQCLpIlFyRQ= +github.com/patrickcping/pingone-go-sdk-v2 v0.12.13 h1:Kyktdn+jnZ87zgfKwaPTZy+qKVQHYtkj7smPez3UKEk= +github.com/patrickcping/pingone-go-sdk-v2 v0.12.13/go.mod h1:JHqqA/Q11OK5LOyslrtczTfyO92pK/0oI25w6zX5VB8= github.com/patrickcping/pingone-go-sdk-v2/authorize v0.8.0 h1:gEPzZToJlBcJh2Ft12dP1GCSGzsNFQFEHS7Bql86RQk= github.com/patrickcping/pingone-go-sdk-v2/authorize v0.8.0/go.mod h1:2PDrgC1ufXk2IDIk4JQHx6r34r2xpkbnzKIpXFv8gYs= github.com/patrickcping/pingone-go-sdk-v2/credentials v0.11.0 h1:pLiiBkROks/40vhFWJEcr/tiIEqqYdP4FWsHtfCLdIs= github.com/patrickcping/pingone-go-sdk-v2/credentials v0.11.0/go.mod h1:yRGf7+tsB3/AQYsNjIIs4ScJhR885mvDYMgwHiQeMl0= -github.com/patrickcping/pingone-go-sdk-v2/management v0.49.0 h1:F1zE2PhxgZCu08TObPylcnXzKqdbaAXkDODWegTE7WM= -github.com/patrickcping/pingone-go-sdk-v2/management v0.49.0/go.mod h1:oLB/jjAkn4oEA60nC5/0KAobvcNJbflOWnVaS6lKxv8= +github.com/patrickcping/pingone-go-sdk-v2/management v0.53.0 h1:psDOY/ARaLlJnRrPdMs/o3FGUFb5fHUCnBuwC3b4+n0= +github.com/patrickcping/pingone-go-sdk-v2/management v0.53.0/go.mod h1:oLB/jjAkn4oEA60nC5/0KAobvcNJbflOWnVaS6lKxv8= github.com/patrickcping/pingone-go-sdk-v2/mfa v0.23.0 h1:k133OY6PNO3tgNK3LBoEI+Uf9bRNKsvAkMMVUf99/Q0= github.com/patrickcping/pingone-go-sdk-v2/mfa v0.23.0/go.mod h1:Q+Ym6kktv5Y6VnVhDt//lWoOhmIKfyjo6ejRx5mLttY= github.com/patrickcping/pingone-go-sdk-v2/risk v0.19.0 h1:qGdwnfjsexHhTUAyBaUzheyeKWhR3Q8groqVpprzzOw= @@ -447,8 +441,8 @@ github.com/pavius/impi v0.0.3 h1:DND6MzU+BLABhOZXbELR3FU8b+zDgcq4dOCNLhiTYuI= github.com/pavius/impi v0.0.3/go.mod h1:x/hU0bfdWIhuOT1SKwiJg++yvkk6EuOtJk8WtDZqgr8= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= -github.com/pingidentity/pingfederate-go-client/v1210 v1210.0.5 h1:Hem1TdVF0CZivFKwCMLUYwL978MaeyPL2WWE3eM6qjQ= -github.com/pingidentity/pingfederate-go-client/v1210 v1210.0.5/go.mod h1:UeqdbbpFTqN4llGpjQJqHWu73is6F9CZCBShEEffSa8= +github.com/pingidentity/pingfederate-go-client/v1220 v1220.0.0 h1:rCYn/ELV74uLO9dDWNgax03pjn9sw8YVNeIK94qkDmA= +github.com/pingidentity/pingfederate-go-client/v1220 v1220.0.0/go.mod h1:oA+IsXxQB8Glkq90fWakWb6tJ742An5Ca5vwn9GobM4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -508,10 +502,8 @@ github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= @@ -541,15 +533,15 @@ github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCp github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY= +github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= @@ -688,8 +680,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -738,8 +730,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= -golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= +golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -983,8 +975,6 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/internal/commands/platform/export_internal.go b/internal/commands/platform/export_internal.go index c047bfa7..225991b7 100644 --- a/internal/commands/platform/export_internal.go +++ b/internal/commands/platform/export_internal.go @@ -26,7 +26,7 @@ import ( "github.com/pingidentity/pingcli/internal/logger" "github.com/pingidentity/pingcli/internal/output" "github.com/pingidentity/pingcli/internal/profiles" - pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1210/configurationapi" + pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" ) var ( diff --git a/internal/commands/platform/export_internal_test.go b/internal/commands/platform/export_internal_test.go index 05924eb8..22a8a20f 100644 --- a/internal/commands/platform/export_internal_test.go +++ b/internal/commands/platform/export_internal_test.go @@ -14,7 +14,7 @@ import ( "github.com/pingidentity/pingcli/internal/profiles" "github.com/pingidentity/pingcli/internal/testing/testutils" "github.com/pingidentity/pingcli/internal/testing/testutils_viper" - pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1210/configurationapi" + pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" ) // Test RunInternalExport function @@ -73,8 +73,8 @@ func TestInitPingFederateServices(t *testing.T) { } // check pf context has auth values included - if pingfederateContext.Value(pingfederateGoClient.ContextOAuth2) == nil { - t.Errorf("initPingFederateServices() pingfederateContext.Value = %v, want non-nil", pingfederateContext.Value(pingfederateGoClient.ContextOAuth2)) + if pingfederateContext.Value(pingfederateGoClient.ContextBasicAuth) == nil { + t.Errorf("initPingFederateServices() pingfederateContext.Value = %v, want non-nil", pingfederateContext.Value(pingfederateGoClient.ContextBasicAuth)) } } diff --git a/internal/connector/common/resources_common.go b/internal/connector/common/resources_common.go index dbb84b37..5e49b498 100644 --- a/internal/connector/common/resources_common.go +++ b/internal/connector/common/resources_common.go @@ -13,6 +13,28 @@ const ( SINGLETON_ID_COMMENT_DATA = "This resource is a singleton, so the value of 'ID' in the import block does not matter - it is just a placeholder and required by terraform." ) +func CheckSingletonResource(response *http.Response, err error, apiFuncName, resourceType string) (bool, error) { + ok, err := HandleClientResponse(response, err, apiFuncName, resourceType) + if err != nil { + return false, err + } + if !ok { + return false, nil + } + + if response.StatusCode == 204 { + output.Warn("API client 204 No Content response.", map[string]interface{}{ + "API Function Name": apiFuncName, + "Resource Type": resourceType, + "Response Code": response.Status, + "Response Body": response.Body, + }) + return false, nil + } + + return true, nil +} + func HandleClientResponse(response *http.Response, err error, apiFunctionName string, resourceType string) (bool, error) { if err != nil { // Only warn the user on client error and skip export of resource diff --git a/internal/connector/exportable_resource.go b/internal/connector/exportable_resource.go index e0bc6a91..2b34891a 100644 --- a/internal/connector/exportable_resource.go +++ b/internal/connector/exportable_resource.go @@ -6,7 +6,7 @@ import ( "regexp" pingoneGoClient "github.com/patrickcping/pingone-go-sdk-v2/pingone" - pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1210/configurationapi" + pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" ) type ImportBlock struct { @@ -16,16 +16,13 @@ type ImportBlock struct { ResourceID string } -type PingOneClientInfo struct { - ApiClient *pingoneGoClient.Client - ApiClientId *string - Context context.Context - ExportEnvironmentID string -} - -type PingFederateClientInfo struct { - ApiClient *pingfederateGoClient.APIClient - Context context.Context +type ClientInfo struct { + PingFederateApiClient *pingfederateGoClient.APIClient + PingFederateContext context.Context + PingOneApiClient *pingoneGoClient.Client + PingOneApiClientId string + PingOneContext context.Context + PingOneExportEnvironmentID string } // A connector that allows exporting configuration diff --git a/internal/connector/pingfederate/pingfederate_connector.go b/internal/connector/pingfederate/pingfederate_connector.go index 9a7ec18d..b869b07c 100644 --- a/internal/connector/pingfederate/pingfederate_connector.go +++ b/internal/connector/pingfederate/pingfederate_connector.go @@ -7,7 +7,7 @@ import ( "github.com/pingidentity/pingcli/internal/connector/common" "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" "github.com/pingidentity/pingcli/internal/logger" - pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1210/configurationapi" + pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" ) const ( @@ -21,15 +21,15 @@ var ( ) type PingFederateConnector struct { - clientInfo connector.PingFederateClientInfo + clientInfo connector.ClientInfo } // Utility method for creating a PingFederateConnector func PFConnector(ctx context.Context, apiClient *pingfederateGoClient.APIClient) *PingFederateConnector { return &PingFederateConnector{ - clientInfo: connector.PingFederateClientInfo{ - ApiClient: apiClient, - Context: ctx, + clientInfo: connector.ClientInfo{ + PingFederateApiClient: apiClient, + PingFederateContext: ctx, }, } } @@ -49,17 +49,17 @@ func (c *PingFederateConnector) Export(format, outputDir string, overwriteExport resources.AuthenticationSelector(&c.clientInfo), resources.CaptchaProvider(&c.clientInfo), resources.CaptchaProviderSettings(&c.clientInfo), - resources.CertificateCA(&c.clientInfo), - resources.CertificatesRevocationOCSPCertificate(&c.clientInfo), + resources.CertificateCa(&c.clientInfo), + resources.CertificatesRevocationOcspCertificate(&c.clientInfo), resources.CertificatesRevocationSettings(&c.clientInfo), resources.ClusterSettings(&c.clientInfo), resources.ConfigurationEncryptionKeysRotate(&c.clientInfo), resources.DataStore(&c.clientInfo), - resources.DefaultURLs(&c.clientInfo), + resources.DefaultUrls(&c.clientInfo), resources.ExtendedProperties(&c.clientInfo), resources.IdentityStoreProvisioner(&c.clientInfo), - resources.IDPAdapter(&c.clientInfo), - resources.IDPSPConnection(&c.clientInfo), + resources.IdpAdapter(&c.clientInfo), + resources.IdpSpConnection(&c.clientInfo), resources.IdpStsRequestParametersContract(&c.clientInfo), resources.IdpTokenProcessor(&c.clientInfo), resources.IdpToSpAdapterMapping(&c.clientInfo), @@ -74,24 +74,24 @@ func (c *PingFederateConnector) Export(format, outputDir string, overwriteExport resources.MetadataUrl(&c.clientInfo), resources.NotificationPublisher(&c.clientInfo), resources.NotificationPublisherSettings(&c.clientInfo), - resources.OAuthAccessTokenManager(&c.clientInfo), - resources.OAuthAccessTokenManagerSettings(&c.clientInfo), - resources.OAuthAccessTokenMapping(&c.clientInfo), - resources.OAuthAuthenticationPolicyContractMapping(&c.clientInfo), - resources.OAuthCibaServerPolicyRequestPolicy(&c.clientInfo), - resources.OAuthCIBAServerPolicySettings(&c.clientInfo), - resources.OAuthClient(&c.clientInfo), - resources.OAuthClientRegistrationPolicy(&c.clientInfo), - resources.OAuthClientSettings(&c.clientInfo), - resources.OAuthIdpAdapterMapping(&c.clientInfo), - resources.OAuthIssuer(&c.clientInfo), - resources.OAuthServerSettings(&c.clientInfo), - resources.OAuthTokenExchangeGeneratorSettings(&c.clientInfo), - resources.OAuthTokenExchangeTokenGeneratorMapping(&c.clientInfo), - resources.OpenIDConnectPolicy(&c.clientInfo), - resources.OpenIDConnectSettings(&c.clientInfo), + resources.OauthAccessTokenManager(&c.clientInfo), + resources.OauthAccessTokenManagerSettings(&c.clientInfo), + resources.OauthAccessTokenMapping(&c.clientInfo), + resources.OauthAuthenticationPolicyContractMapping(&c.clientInfo), + resources.OauthCibaServerPolicyRequestPolicy(&c.clientInfo), + resources.OauthCibaServerPolicySettings(&c.clientInfo), + resources.OauthClient(&c.clientInfo), + resources.OauthClientRegistrationPolicy(&c.clientInfo), + resources.OauthClientSettings(&c.clientInfo), + resources.OauthIdpAdapterMapping(&c.clientInfo), + resources.OauthIssuer(&c.clientInfo), + resources.OauthServerSettings(&c.clientInfo), + resources.OauthTokenExchangeGeneratorSettings(&c.clientInfo), + resources.OauthTokenExchangeTokenGeneratorMapping(&c.clientInfo), + resources.OpenidConnectPolicy(&c.clientInfo), + resources.OpenidConnectSettings(&c.clientInfo), resources.PasswordCredentialValidator(&c.clientInfo), - resources.PingOneConnection(&c.clientInfo), + resources.PingoneConnection(&c.clientInfo), resources.ProtocolMetadataLifetimeSettings(&c.clientInfo), resources.ProtocolMetadataSigningSettings(&c.clientInfo), resources.RedirectValidation(&c.clientInfo), @@ -108,7 +108,7 @@ func (c *PingFederateConnector) Export(format, outputDir string, overwriteExport resources.SessionAuthenticationPolicy(&c.clientInfo), resources.SessionSettings(&c.clientInfo), resources.SpAdapter(&c.clientInfo), - resources.SPAuthenticationPolicyContractMapping(&c.clientInfo), + resources.SpAuthenticationPolicyContractMapping(&c.clientInfo), resources.SpIdpConnection(&c.clientInfo), resources.SpTargetUrlMappings(&c.clientInfo), resources.TokenProcessorToTokenGeneratorMapping(&c.clientInfo), diff --git a/internal/connector/pingfederate/pingfederate_connector_test.go b/internal/connector/pingfederate/pingfederate_connector_test.go index 763d02fd..0be87b6a 100644 --- a/internal/connector/pingfederate/pingfederate_connector_test.go +++ b/internal/connector/pingfederate/pingfederate_connector_test.go @@ -3,402 +3,406 @@ package pingfederate_test import ( "testing" - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" "github.com/pingidentity/pingcli/internal/testing/testutils_terraform" ) func TestPingFederateTerraformPlan(t *testing.T) { - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) + pingFederateClientInfo := testutils.GetClientInfo(t) testutils_terraform.InitPingFederateTerraform(t) testCases := []struct { - name string - resource connector.ExportableResource - ignoredErrors []string + name string + testableResource *testutils_resource.TestableResource + ignoredErrors []string }{ { - name: "PingFederateAuthenticationApiApplication", - resource: resources.AuthenticationApiApplication(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationApiApplication", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationApiApplication(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateAuthenticationApiSettings", - resource: resources.AuthenticationApiSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationApiSettings", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationApiSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateAuthenticationPolicies", - resource: resources.AuthenticationPolicies(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationPolicies", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationPolicies(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateAuthenticationPoliciesFragment", - resource: resources.AuthenticationPoliciesFragment(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationPoliciesFragment", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationPoliciesFragment(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateAuthenticationPoliciesSettings", - resource: resources.AuthenticationPoliciesSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationPoliciesSettings", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationPoliciesSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateAuthenticationPolicyContract", - resource: resources.AuthenticationPolicyContract(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationPolicyContract", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationPolicyContract(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateAuthenticationSelector", - resource: resources.AuthenticationSelector(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateAuthenticationSelector", + testableResource: pingfederate.TestableResource_PingFederateAuthenticationSelector(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateCaptchaProvider", - resource: resources.CaptchaProvider(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateCaptchaProvider", + testableResource: pingfederate.TestableResource_PingFederateCaptchaProvider(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateCaptchaProviderSettings", - resource: resources.CaptchaProviderSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateCaptchaProviderSettings", + testableResource: pingfederate.TestableResource_PingFederateCaptchaProviderSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateCertificateCA", - resource: resources.CertificateCA(PingFederateClientInfo), + name: "PingFederateCertificateCa", + testableResource: pingfederate.TestableResource_PingFederateCertificateCa(t, pingFederateClientInfo), ignoredErrors: []string{ "Error: Invalid Attribute Value Length", }, }, { - name: "PingFederateCertificatesRevocationOCSPCertificate", - resource: resources.CertificatesRevocationOCSPCertificate(PingFederateClientInfo), + name: "PingFederateCertificatesRevocationOcspCertificate", + testableResource: pingfederate.TestableResource_PingFederateCertificatesRevocationOcspCertificate(t, pingFederateClientInfo), ignoredErrors: []string{ "Error: Missing Configuration for Required Attribute", }, }, { - name: "PingFederateCertificatesRevocationSettings", - resource: resources.CertificatesRevocationSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateCertificatesRevocationSettings", + testableResource: pingfederate.TestableResource_PingFederateCertificatesRevocationSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateClusterSettings", - resource: resources.ClusterSettings(PingFederateClientInfo), + name: "PingFederateClusterSettings", + testableResource: pingfederate.TestableResource_PingFederateClusterSettings(t, pingFederateClientInfo), ignoredErrors: []string{ "Error: PingFederate API error", }, }, { - name: "PingFederateConfigurationEncryptionKeysRotate", - resource: resources.ConfigurationEncryptionKeysRotate(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateConfigurationEncryptionKeysRotate", + testableResource: pingfederate.TestableResource_PingFederateConfigurationEncryptionKeysRotate(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateDataStore", - resource: resources.DataStore(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateDataStore", + testableResource: pingfederate.TestableResource_PingFederateDataStore(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateDefaultURLs", - resource: resources.DefaultURLs(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateDefaultUrls", + testableResource: pingfederate.TestableResource_PingFederateDefaultUrls(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateExtendedProperties", - resource: resources.ExtendedProperties(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateExtendedProperties", + testableResource: pingfederate.TestableResource_PingFederateExtendedProperties(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIdentityStoreProvisioner", - resource: resources.IdentityStoreProvisioner(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIdentityStoreProvisioner", + testableResource: pingfederate.TestableResource_PingFederateIdentityStoreProvisioner(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIDPAdapter", - resource: resources.IDPAdapter(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIdpAdapter", + testableResource: pingfederate.TestableResource_PingFederateIdpAdapter(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIDPSPConnection", - resource: resources.IDPSPConnection(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIdpSpConnection", + testableResource: pingfederate.TestableResource_PingFederateIdpSpConnection(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIdpStsRequestParametersContract", - resource: resources.IdpStsRequestParametersContract(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIdpStsRequestParametersContract", + testableResource: pingfederate.TestableResource_PingFederateIdpStsRequestParametersContract(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIdpTokenProcessor", - resource: resources.IdpTokenProcessor(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIdpTokenProcessor", + testableResource: pingfederate.TestableResource_PingFederateIdpTokenProcessor(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIdpToSpAdapterMapping", - resource: resources.IdpToSpAdapterMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIdpToSpAdapterMapping", + testableResource: pingfederate.TestableResource_PingFederateIdpToSpAdapterMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateIncomingProxySettings", - resource: resources.IncomingProxySettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateIncomingProxySettings", + testableResource: pingfederate.TestableResource_PingFederateIncomingProxySettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateKerberosRealm", - resource: resources.KerberosRealm(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateKerberosRealm", + testableResource: pingfederate.TestableResource_PingFederateKerberosRealm(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateKerberosRealmSettings", - resource: resources.KerberosRealmSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateKerberosRealmSettings", + testableResource: pingfederate.TestableResource_PingFederateKerberosRealmSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateKeypairsOauthOpenidConnect", - resource: resources.KeypairsOauthOpenidConnect(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateKeypairsOauthOpenidConnect", + testableResource: pingfederate.TestableResource_PingFederateKeypairsOauthOpenidConnect(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateKeypairsOauthOpenidConnectAdditionalKeySet", - resource: resources.KeypairsOauthOpenidConnectAdditionalKeySet(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateKeypairsOauthOpenidConnectAdditionalKeySet", + testableResource: pingfederate.TestableResource_PingFederateKeypairsOauthOpenidConnectAdditionalKeySet(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateKeypairsSigningKeyRotationSettings", - resource: resources.KeypairsSigningKeyRotationSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateKeypairsSigningKeyRotationSettings", + testableResource: pingfederate.TestableResource_PingFederateKeypairsSigningKeyRotationSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateKeypairsSslServerSettings", - resource: resources.KeypairsSslServerSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateKeypairsSslServerSettings", + testableResource: pingfederate.TestableResource_PingFederateKeypairsSslServerSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateLocalIdentityProfile", - resource: resources.LocalIdentityProfile(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateLocalIdentityProfile", + testableResource: pingfederate.TestableResource_PingFederateLocalIdentityProfile(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateMetadataUrl", - resource: resources.MetadataUrl(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateMetadataUrl", + testableResource: pingfederate.TestableResource_PingFederateMetadataUrl(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateNotificationPublisher", - resource: resources.NotificationPublisher(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateNotificationPublisher", + testableResource: pingfederate.TestableResource_PingFederateNotificationPublisher(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateNotificationPublishersSettings", - resource: resources.NotificationPublisherSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateNotificationPublisherSettings", + testableResource: pingfederate.TestableResource_PingFederateNotificationPublisherSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthAccessTokenManager", - resource: resources.OAuthAccessTokenManager(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthAccessTokenManager", + testableResource: pingfederate.TestableResource_PingFederateOauthAccessTokenManager(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthAccessTokenManagerSettings", - resource: resources.OAuthAccessTokenManagerSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthAccessTokenManagerSettings", + testableResource: pingfederate.TestableResource_PingFederateOauthAccessTokenManagerSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthAccessTokenMapping", - resource: resources.OAuthAccessTokenMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthAccessTokenMapping", + testableResource: pingfederate.TestableResource_PingFederateOauthAccessTokenMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthAuthenticationPolicyContractMapping", - resource: resources.OAuthAuthenticationPolicyContractMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthAuthenticationPolicyContractMapping", + testableResource: pingfederate.TestableResource_PingFederateOauthAuthenticationPolicyContractMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, + // TODO: Re-enable this test after PingFederate OOB Plugin API is triaged + // { + // name: "PingFederateOauthCibaServerPolicyRequestPolicy", + // testableResource: pingfederate.TestableResource_PingFederateOauthCibaServerPolicyRequestPolicy(t, pingFederateClientInfo), + // ignoredErrors: nil, + // }, { - name: "PingFederateOAuthCibaServerPolicyRequestPolicy", - resource: resources.OAuthCibaServerPolicyRequestPolicy(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthCibaServerPolicySettings", + testableResource: pingfederate.TestableResource_PingFederateOauthCibaServerPolicySettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthCIBAServerPolicySettings", - resource: resources.OAuthCIBAServerPolicySettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthClient", + testableResource: pingfederate.TestableResource_PingFederateOauthClient(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthClient", - resource: resources.OAuthClient(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthClientRegistrationPolicy", + testableResource: pingfederate.TestableResource_PingFederateOauthClientRegistrationPolicy(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthClientRegistrationPolicy", - resource: resources.OAuthClientRegistrationPolicy(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthClientSettings", + testableResource: pingfederate.TestableResource_PingFederateOauthClientSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthClientSettings", - resource: resources.OAuthClientSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthIdpAdapterMapping", + testableResource: pingfederate.TestableResource_PingFederateOauthIdpAdapterMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthIdpAdapterMapping", - resource: resources.OAuthIdpAdapterMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthIssuer", + testableResource: pingfederate.TestableResource_PingFederateOauthIssuer(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthIssuer", - resource: resources.OAuthIssuer(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthServerSettings", + testableResource: pingfederate.TestableResource_PingFederateOauthServerSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthServerSettings", - resource: resources.OAuthServerSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthTokenExchangeGeneratorSettings", + testableResource: pingfederate.TestableResource_PingFederateOauthTokenExchangeGeneratorSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthTokenExchangeGeneratorSettings", - resource: resources.OAuthTokenExchangeGeneratorSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOauthTokenExchangeTokenGeneratorMapping", + testableResource: pingfederate.TestableResource_PingFederateOauthTokenExchangeTokenGeneratorMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOAuthTokenExchangeTokenGeneratorMapping", - resource: resources.OAuthTokenExchangeTokenGeneratorMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOpenidConnectPolicy", + testableResource: pingfederate.TestableResource_PingFederateOpenidConnectPolicy(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOpenIDConnectPolicy", - resource: resources.OpenIDConnectPolicy(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateOpenidConnectSettings", + testableResource: pingfederate.TestableResource_PingFederateOpenidConnectSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateOpenIDConnectSettings", - resource: resources.OpenIDConnectSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederatePasswordCredentialValidator", + testableResource: pingfederate.TestableResource_PingFederatePasswordCredentialValidator(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederatePasswordCredentialValidator", - resource: resources.PasswordCredentialValidator(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederatePingoneConnection", + testableResource: pingfederate.TestableResource_PingFederatePingoneConnection(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederatePingOneConnection", - resource: resources.PingOneConnection(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateProtocolMetadataLifetimeSettings", + testableResource: pingfederate.TestableResource_PingFederateProtocolMetadataLifetimeSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateProtocolMetadataLifetimeSettings", - resource: resources.ProtocolMetadataLifetimeSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateProtocolMetadataSigningSettings", + testableResource: pingfederate.TestableResource_PingFederateProtocolMetadataSigningSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateProtocolMetadataSigningSettings", - resource: resources.ProtocolMetadataSigningSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateRedirectValidation", + testableResource: pingfederate.TestableResource_PingFederateRedirectValidation(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateRedirectValidation", - resource: resources.RedirectValidation(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSecretManager", + testableResource: pingfederate.TestableResource_PingFederateSecretManager(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSecretManager", - resource: resources.SecretManager(PingFederateClientInfo), - ignoredErrors: nil, - }, - { - name: "PingFederateServerSettings", - resource: resources.ServerSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateServerSettings", + testableResource: pingfederate.TestableResource_PingFederateServerSettings(t, pingFederateClientInfo), + ignoredErrors: []string{ + "Error: Invalid Attribute Value Length", + }, }, { - name: "PingFederateServerSettingsGeneral", - resource: resources.ServerSettingsGeneral(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateServerSettingsGeneral", + testableResource: pingfederate.TestableResource_PingFederateServerSettingsGeneral(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateServerSettingsLogging", - resource: resources.ServerSettingsLogging(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateServerSettingsLogging", + testableResource: pingfederate.TestableResource_PingFederateServerSettingsLogging(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateServerSettingsSystemKeysRotate", - resource: resources.ServerSettingsSystemKeysRotate(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateServerSettingsSystemKeysRotate", + testableResource: pingfederate.TestableResource_PingFederateServerSettingsSystemKeysRotate(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateServerSettingsWsTrustStsSettings", - resource: resources.ServerSettingsWsTrustStsSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateServerSettingsWsTrustStsSettings", + testableResource: pingfederate.TestableResource_PingFederateServerSettingsWsTrustStsSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateServerSettingsWsTrustStsSettingsIssuerCertificate", - resource: resources.ServerSettingsWsTrustStsSettingsIssuerCertificate(PingFederateClientInfo), + name: "PingFederateServerSettingsWsTrustStsSettingsIssuerCertificate", + testableResource: pingfederate.TestableResource_PingFederateServerSettingsWsTrustStsSettingsIssuerCertificate(t, pingFederateClientInfo), ignoredErrors: []string{ "Error: Missing Configuration for Required Attribute", }, }, { - name: "PingFederateServiceAuthentication", - resource: resources.ServiceAuthentication(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateServiceAuthentication", + testableResource: pingfederate.TestableResource_PingFederateServiceAuthentication(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSessionApplicationPolicy", - resource: resources.SessionApplicationPolicy(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSessionApplicationPolicy", + testableResource: pingfederate.TestableResource_PingFederateSessionApplicationPolicy(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSessionAuthenticationPoliciesGlobal", - resource: resources.SessionAuthenticationPoliciesGlobal(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSessionAuthenticationPoliciesGlobal", + testableResource: pingfederate.TestableResource_PingFederateSessionAuthenticationPoliciesGlobal(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSessionAuthenticationPolicy", - resource: resources.SessionAuthenticationPolicy(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSessionAuthenticationPolicy", + testableResource: pingfederate.TestableResource_PingFederateSessionAuthenticationPolicy(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSessionSettings", - resource: resources.SessionSettings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSessionSettings", + testableResource: pingfederate.TestableResource_PingFederateSessionSettings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSpAdapter", - resource: resources.SpAdapter(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSpAdapter", + testableResource: pingfederate.TestableResource_PingFederateSpAdapter(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSPAuthenticationPolicyContractMapping", - resource: resources.SPAuthenticationPolicyContractMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSpAuthenticationPolicyContractMapping", + testableResource: pingfederate.TestableResource_PingFederateSpAuthenticationPolicyContractMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSpIdpConnection", - resource: resources.SpIdpConnection(PingFederateClientInfo), - ignoredErrors: []string{ - "Error: Invalid Object Attribute Type", - }, + name: "PingFederateSpIdpConnection", + testableResource: pingfederate.TestableResource_PingFederateSpIdpConnection(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateSpTargetUrlMappings", - resource: resources.SpTargetUrlMappings(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateSpTargetUrlMappings", + testableResource: pingfederate.TestableResource_PingFederateSpTargetUrlMappings(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateTokenProcessorToTokenGeneratorMapping", - resource: resources.TokenProcessorToTokenGeneratorMapping(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateTokenProcessorToTokenGeneratorMapping", + testableResource: pingfederate.TestableResource_PingFederateTokenProcessorToTokenGeneratorMapping(t, pingFederateClientInfo), + ignoredErrors: nil, }, { - name: "PingFederateVirtualHostNames", - resource: resources.VirtualHostNames(PingFederateClientInfo), - ignoredErrors: nil, + name: "PingFederateVirtualHostNames", + testableResource: pingfederate.TestableResource_PingFederateVirtualHostNames(t, pingFederateClientInfo), + ignoredErrors: nil, }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - testutils_terraform.ValidateTerraformPlan(t, tc.resource, tc.ignoredErrors) + tc.testableResource.CreateResource(t) + defer tc.testableResource.DeleteResource(t) + + testutils_terraform.ValidateTerraformPlan(t, tc.testableResource.ExportableResource, tc.ignoredErrors) }) } } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_api_application.go b/internal/connector/pingfederate/resources/authentication_api_application.go similarity index 52% rename from internal/connector/pingfederate/resources/pingfederate_authentication_api_application.go rename to internal/connector/pingfederate/resources/authentication_api_application.go index 1bde0167..767f9305 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_api_application.go +++ b/internal/connector/pingfederate/resources/authentication_api_application.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationApiApplicationResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationApiApplicationResource -func AuthenticationApiApplication(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationApiApplicationResource { +func AuthenticationApiApplication(clientInfo *connector.ClientInfo) *PingFederateAuthenticationApiApplicationResource { return &PingFederateAuthenticationApiApplicationResource{ clientInfo: clientInfo, } @@ -32,22 +32,22 @@ func (r *PingFederateAuthenticationApiApplicationResource) ExportAll() (*[]conne importBlocks := []connector.ImportBlock{} - applicationData, err := r.getApplicationData() + authenticationApiApplicationData, err := r.getAuthenticationApiApplicationData() if err != nil { return nil, err } - for appId, appName := range applicationData { + for authenticationApiApplicationId, authenticationApiApplicationName := range authenticationApiApplicationData { commentData := map[string]string{ - "Authentication API Application ID": appId, - "Authentication API Application Name": appName, + "Authentication Api Application ID": authenticationApiApplicationId, + "Authentication Api Application Name": authenticationApiApplicationName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: appName, - ResourceID: appId, + ResourceName: authenticationApiApplicationName, + ResourceID: authenticationApiApplicationId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -57,10 +57,10 @@ func (r *PingFederateAuthenticationApiApplicationResource) ExportAll() (*[]conne return &importBlocks, nil } -func (r *PingFederateAuthenticationApiApplicationResource) getApplicationData() (map[string]string, error) { - applicationData := make(map[string]string) +func (r *PingFederateAuthenticationApiApplicationResource) getAuthenticationApiApplicationData() (map[string]string, error) { + authenticationApiApplicationData := make(map[string]string) - authnApiApplications, response, err := r.clientInfo.ApiClient.AuthenticationApiAPI.GetAuthenticationApiApplications(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.AuthenticationApiAPI.GetAuthenticationApiApplications(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetAuthenticationApiApplications", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateAuthenticationApiApplicationResource) getApplicationData() return nil, nil } - if authnApiApplications == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - authnApiApplicationsItems, authnApiApplicationsItemsOk := authnApiApplications.GetItemsOk() - if !authnApiApplicationsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, authnApiApplication := range authnApiApplicationsItems { - authnApiApplicationId, authnApiApplicationIdOk := authnApiApplication.GetIdOk() - authnApiApplicationName, authnApiApplicationNameOk := authnApiApplication.GetNameOk() + for _, authenticationApiApplication := range items { + authenticationApiApplicationId, authenticationApiApplicationIdOk := authenticationApiApplication.GetIdOk() + authenticationApiApplicationName, authenticationApiApplicationNameOk := authenticationApiApplication.GetNameOk() - if authnApiApplicationIdOk && authnApiApplicationNameOk { - applicationData[*authnApiApplicationId] = *authnApiApplicationName + if authenticationApiApplicationIdOk && authenticationApiApplicationNameOk { + authenticationApiApplicationData[*authenticationApiApplicationId] = *authenticationApiApplicationName } } - return applicationData, nil + return authenticationApiApplicationData, nil } diff --git a/internal/connector/pingfederate/resources/authentication_api_application_test.go b/internal/connector/pingfederate/resources/authentication_api_application_test.go new file mode 100644 index 00000000..5115162a --- /dev/null +++ b/internal/connector/pingfederate/resources/authentication_api_application_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateAuthenticationApiApplication(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateAuthenticationApiApplication(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_api_settings.go b/internal/connector/pingfederate/resources/authentication_api_settings.go similarity index 77% rename from internal/connector/pingfederate/resources/pingfederate_authentication_api_settings.go rename to internal/connector/pingfederate/resources/authentication_api_settings.go index 4d983b97..6192c996 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_api_settings.go +++ b/internal/connector/pingfederate/resources/authentication_api_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationApiSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationApiSettingsResource -func AuthenticationApiSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationApiSettingsResource { +func AuthenticationApiSettings(clientInfo *connector.ClientInfo) *PingFederateAuthenticationApiSettingsResource { return &PingFederateAuthenticationApiSettingsResource{ clientInfo: clientInfo, } @@ -32,8 +32,8 @@ func (r *PingFederateAuthenticationApiSettingsResource) ExportAll() (*[]connecto importBlocks := []connector.ImportBlock{} - authnApiSettingsId := "authentication_api_settings_singleton_id" - authnApiSettingsName := "Authentication API Settings" + authenticationApiSettingsId := "authentication_api_settings_singleton_id" + authenticationApiSettingsName := "Authentication Api Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateAuthenticationApiSettingsResource) ExportAll() (*[]connecto importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: authnApiSettingsName, - ResourceID: authnApiSettingsId, + ResourceName: authenticationApiSettingsName, + ResourceID: authenticationApiSettingsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_api_settings_test.go b/internal/connector/pingfederate/resources/authentication_api_settings_test.go similarity index 51% rename from internal/connector/pingfederate/resources/pingfederate_authentication_api_settings_test.go rename to internal/connector/pingfederate/resources/authentication_api_settings_test.go index b636a3d0..b91aa1fa 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_api_settings_test.go +++ b/internal/connector/pingfederate/resources/authentication_api_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateAuthenticationApiSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationApiSettings(PingFederateClientInfo) +func Test_PingFederateAuthenticationApiSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.AuthenticationApiSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_authentication_api_settings", - ResourceName: "Authentication API Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Authentication Api Settings", ResourceID: "authentication_api_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policies.go b/internal/connector/pingfederate/resources/authentication_policies.go similarity index 78% rename from internal/connector/pingfederate/resources/pingfederate_authentication_policies.go rename to internal/connector/pingfederate/resources/authentication_policies.go index 9759f12f..94392ecc 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policies.go +++ b/internal/connector/pingfederate/resources/authentication_policies.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationPoliciesResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationPoliciesResource -func AuthenticationPolicies(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationPoliciesResource { +func AuthenticationPolicies(clientInfo *connector.ClientInfo) *PingFederateAuthenticationPoliciesResource { return &PingFederateAuthenticationPoliciesResource{ clientInfo: clientInfo, } @@ -32,8 +32,8 @@ func (r *PingFederateAuthenticationPoliciesResource) ExportAll() (*[]connector.I importBlocks := []connector.ImportBlock{} - authnPoliciesId := "authentication_policies_singleton_id" - authnPoliciesName := "Authentication Policies" + authenticationPoliciesId := "authentication_policies_singleton_id" + authenticationPoliciesName := "Authentication Policies" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateAuthenticationPoliciesResource) ExportAll() (*[]connector.I importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: authnPoliciesName, - ResourceID: authnPoliciesId, + ResourceName: authenticationPoliciesName, + ResourceID: authenticationPoliciesId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_fragment.go b/internal/connector/pingfederate/resources/authentication_policies_fragment.go similarity index 53% rename from internal/connector/pingfederate/resources/pingfederate_authentication_policies_fragment.go rename to internal/connector/pingfederate/resources/authentication_policies_fragment.go index 66132c30..62287c9c 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_fragment.go +++ b/internal/connector/pingfederate/resources/authentication_policies_fragment.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationPoliciesFragmentResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationPoliciesFragmentResource -func AuthenticationPoliciesFragment(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationPoliciesFragmentResource { +func AuthenticationPoliciesFragment(clientInfo *connector.ClientInfo) *PingFederateAuthenticationPoliciesFragmentResource { return &PingFederateAuthenticationPoliciesFragmentResource{ clientInfo: clientInfo, } @@ -32,22 +32,22 @@ func (r *PingFederateAuthenticationPoliciesFragmentResource) ExportAll() (*[]con importBlocks := []connector.ImportBlock{} - fragmentData, err := r.getFragmentData() + authenticationPoliciesFragmentData, err := r.getAuthenticationPoliciesFragmentData() if err != nil { return nil, err } - for fragmentId, fragmentName := range fragmentData { + for authenticationPoliciesFragmentId, authenticationPoliciesFragmentName := range authenticationPoliciesFragmentData { commentData := map[string]string{ - "Authentication Policies Fragment ID": fragmentId, - "Authentication Policies Fragment Name": fragmentName, + "Authentication Policies Fragment ID": authenticationPoliciesFragmentId, + "Authentication Policies Fragment Name": authenticationPoliciesFragmentName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: fragmentName, - ResourceID: fragmentId, + ResourceName: authenticationPoliciesFragmentName, + ResourceID: authenticationPoliciesFragmentId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -57,10 +57,10 @@ func (r *PingFederateAuthenticationPoliciesFragmentResource) ExportAll() (*[]con return &importBlocks, nil } -func (r *PingFederateAuthenticationPoliciesFragmentResource) getFragmentData() (map[string]string, error) { - fragmentData := make(map[string]string) +func (r *PingFederateAuthenticationPoliciesFragmentResource) getAuthenticationPoliciesFragmentData() (map[string]string, error) { + authenticationPoliciesFragmentData := make(map[string]string) - authnPoliciesFragments, response, err := r.clientInfo.ApiClient.AuthenticationPoliciesAPI.GetFragments(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.AuthenticationPoliciesAPI.GetFragments(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetFragments", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateAuthenticationPoliciesFragmentResource) getFragmentData() ( return nil, nil } - if authnPoliciesFragments == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - authnPoliciesFragmentsItems, authnPoliciesFragmentsItemsOk := authnPoliciesFragments.GetItemsOk() - if !authnPoliciesFragmentsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, authnPoliciesFragment := range authnPoliciesFragmentsItems { - authnPoliciesFragmentId, authnPoliciesFragmentIdOk := authnPoliciesFragment.GetIdOk() - authnPoliciesFragmentName, authnPoliciesFragmentNameOk := authnPoliciesFragment.GetNameOk() + for _, authenticationPoliciesFragment := range items { + authenticationPoliciesFragmentId, authenticationPoliciesFragmentIdOk := authenticationPoliciesFragment.GetIdOk() + authenticationPoliciesFragmentName, authenticationPoliciesFragmentNameOk := authenticationPoliciesFragment.GetNameOk() - if authnPoliciesFragmentIdOk && authnPoliciesFragmentNameOk { - fragmentData[*authnPoliciesFragmentId] = *authnPoliciesFragmentName + if authenticationPoliciesFragmentIdOk && authenticationPoliciesFragmentNameOk { + authenticationPoliciesFragmentData[*authenticationPoliciesFragmentId] = *authenticationPoliciesFragmentName } } - return fragmentData, nil + return authenticationPoliciesFragmentData, nil } diff --git a/internal/connector/pingfederate/resources/authentication_policies_fragment_test.go b/internal/connector/pingfederate/resources/authentication_policies_fragment_test.go new file mode 100644 index 00000000..e62918c2 --- /dev/null +++ b/internal/connector/pingfederate/resources/authentication_policies_fragment_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateAuthenticationPoliciesFragment(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateAuthenticationPoliciesFragment(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_settings.go b/internal/connector/pingfederate/resources/authentication_policies_settings.go similarity index 75% rename from internal/connector/pingfederate/resources/pingfederate_authentication_policies_settings.go rename to internal/connector/pingfederate/resources/authentication_policies_settings.go index d551199b..ba776aad 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_settings.go +++ b/internal/connector/pingfederate/resources/authentication_policies_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationPoliciesSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationPoliciesSettingsResource -func AuthenticationPoliciesSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationPoliciesSettingsResource { +func AuthenticationPoliciesSettings(clientInfo *connector.ClientInfo) *PingFederateAuthenticationPoliciesSettingsResource { return &PingFederateAuthenticationPoliciesSettingsResource{ clientInfo: clientInfo, } @@ -32,8 +32,8 @@ func (r *PingFederateAuthenticationPoliciesSettingsResource) ExportAll() (*[]con importBlocks := []connector.ImportBlock{} - authnPoliciesSettingsId := "authentication_policies_settings_singleton_id" - authnPoliciesSettingsName := "Authentication Policies Settings" + authenticationPoliciesSettingsId := "authentication_policies_settings_singleton_id" + authenticationPoliciesSettingsName := "Authentication Policies Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateAuthenticationPoliciesSettingsResource) ExportAll() (*[]con importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: authnPoliciesSettingsName, - ResourceID: authnPoliciesSettingsId, + ResourceName: authenticationPoliciesSettingsName, + ResourceID: authenticationPoliciesSettingsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_settings_test.go b/internal/connector/pingfederate/resources/authentication_policies_settings_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_authentication_policies_settings_test.go rename to internal/connector/pingfederate/resources/authentication_policies_settings_test.go index 22a6f8c1..fe792311 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_settings_test.go +++ b/internal/connector/pingfederate/resources/authentication_policies_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateAuthenticationPoliciesSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationPoliciesSettings(PingFederateClientInfo) +func Test_PingFederateAuthenticationPoliciesSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.AuthenticationPoliciesSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_authentication_policies_settings", + ResourceType: resource.ResourceType(), ResourceName: "Authentication Policies Settings", ResourceID: "authentication_policies_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_test.go b/internal/connector/pingfederate/resources/authentication_policies_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_authentication_policies_test.go rename to internal/connector/pingfederate/resources/authentication_policies_test.go index 001ff946..344929b4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_test.go +++ b/internal/connector/pingfederate/resources/authentication_policies_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateAuthenticationPoliciesExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationPolicies(PingFederateClientInfo) +func Test_PingFederateAuthenticationPolicies(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.AuthenticationPolicies(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_authentication_policies", + ResourceType: resource.ResourceType(), ResourceName: "Authentication Policies", ResourceID: "authentication_policies_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policy_contract.go b/internal/connector/pingfederate/resources/authentication_policy_contract.go similarity index 61% rename from internal/connector/pingfederate/resources/pingfederate_authentication_policy_contract.go rename to internal/connector/pingfederate/resources/authentication_policy_contract.go index ce43e22d..ddf4c0d4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policy_contract.go +++ b/internal/connector/pingfederate/resources/authentication_policy_contract.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationPolicyContractResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationPolicyContractResource -func AuthenticationPolicyContract(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationPolicyContractResource { +func AuthenticationPolicyContract(clientInfo *connector.ClientInfo) *PingFederateAuthenticationPolicyContractResource { return &PingFederateAuthenticationPolicyContractResource{ clientInfo: clientInfo, } @@ -37,17 +37,17 @@ func (r *PingFederateAuthenticationPolicyContractResource) ExportAll() (*[]conne return nil, err } - for authnPolicyContractId, authnPolicyContractName := range authenticationPolicyContractData { + for authenticationPolicyContractId, authenticationPolicyContractName := range authenticationPolicyContractData { commentData := map[string]string{ - "Authentication Policy Contract ID": authnPolicyContractId, - "Authentication Policy Contract Name": authnPolicyContractName, + "Authentication Policy Contract ID": authenticationPolicyContractId, + "Authentication Policy Contract Name": authenticationPolicyContractName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: authnPolicyContractName, - ResourceID: authnPolicyContractId, + ResourceName: authenticationPolicyContractName, + ResourceID: authenticationPolicyContractId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -60,7 +60,7 @@ func (r *PingFederateAuthenticationPolicyContractResource) ExportAll() (*[]conne func (r *PingFederateAuthenticationPolicyContractResource) getAuthenticationPolicyContractData() (map[string]string, error) { authenticationPolicyContractData := make(map[string]string) - authnPolicyContracts, response, err := r.clientInfo.ApiClient.AuthenticationPolicyContractsAPI.GetAuthenticationPolicyContracts(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.AuthenticationPolicyContractsAPI.GetAuthenticationPolicyContracts(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetAuthenticationPolicyContracts", r.ResourceType()) if err != nil { return nil, err @@ -69,21 +69,21 @@ func (r *PingFederateAuthenticationPolicyContractResource) getAuthenticationPoli return nil, nil } - if authnPolicyContracts == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - authnPolicyContractsItems, authnPolicyContractsItemsOk := authnPolicyContracts.GetItemsOk() - if !authnPolicyContractsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, authnPolicyContract := range authnPolicyContractsItems { - authnPolicyContractId, authnPolicyContractIdOk := authnPolicyContract.GetIdOk() - authnPolicyContractName, authnPolicyContractNameOk := authnPolicyContract.GetNameOk() + for _, authenticationPolicyContract := range items { + authenticationPolicyContractId, authenticationPolicyContractIdOk := authenticationPolicyContract.GetIdOk() + authenticationPolicyContractName, authenticationPolicyContractNameOk := authenticationPolicyContract.GetNameOk() - if authnPolicyContractIdOk && authnPolicyContractNameOk { - authenticationPolicyContractData[*authnPolicyContractId] = *authnPolicyContractName + if authenticationPolicyContractIdOk && authenticationPolicyContractNameOk { + authenticationPolicyContractData[*authenticationPolicyContractId] = *authenticationPolicyContractName } } diff --git a/internal/connector/pingfederate/resources/authentication_policy_contract_test.go b/internal/connector/pingfederate/resources/authentication_policy_contract_test.go new file mode 100644 index 00000000..d8c672a3 --- /dev/null +++ b/internal/connector/pingfederate/resources/authentication_policy_contract_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateAuthenticationPolicyContract(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateAuthenticationPolicyContract(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_selector.go b/internal/connector/pingfederate/resources/authentication_selector.go similarity index 63% rename from internal/connector/pingfederate/resources/pingfederate_authentication_selector.go rename to internal/connector/pingfederate/resources/authentication_selector.go index 8036160f..c2e78b99 100644 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_selector.go +++ b/internal/connector/pingfederate/resources/authentication_selector.go @@ -12,11 +12,11 @@ var ( ) type PingFederateAuthenticationSelectorResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateAuthenticationSelectorResource -func AuthenticationSelector(clientInfo *connector.PingFederateClientInfo) *PingFederateAuthenticationSelectorResource { +func AuthenticationSelector(clientInfo *connector.ClientInfo) *PingFederateAuthenticationSelectorResource { return &PingFederateAuthenticationSelectorResource{ clientInfo: clientInfo, } @@ -37,17 +37,17 @@ func (r *PingFederateAuthenticationSelectorResource) ExportAll() (*[]connector.I return nil, err } - for authnSelectorId, authnSelectorName := range authenticationSelectorData { + for authenticationSelectorId, authenticationSelectorName := range authenticationSelectorData { commentData := map[string]string{ - "Authentication Selector ID": authnSelectorId, - "Authentication Selector Name": authnSelectorName, + "Authentication Selector ID": authenticationSelectorId, + "Authentication Selector Name": authenticationSelectorName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: authnSelectorName, - ResourceID: authnSelectorId, + ResourceName: authenticationSelectorName, + ResourceID: authenticationSelectorId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -60,7 +60,7 @@ func (r *PingFederateAuthenticationSelectorResource) ExportAll() (*[]connector.I func (r *PingFederateAuthenticationSelectorResource) getAuthenticationSelectorData() (map[string]string, error) { authenticationSelectorData := make(map[string]string) - authnSelectors, response, err := r.clientInfo.ApiClient.AuthenticationSelectorsAPI.GetAuthenticationSelectors(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.AuthenticationSelectorsAPI.GetAuthenticationSelectors(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetAuthenticationSelectors", r.ResourceType()) if err != nil { return nil, err @@ -69,21 +69,21 @@ func (r *PingFederateAuthenticationSelectorResource) getAuthenticationSelectorDa return nil, nil } - if authnSelectors == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - authnSelectorsItems, authnSelectorsItemsOk := authnSelectors.GetItemsOk() - if !authnSelectorsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, authnSelector := range authnSelectorsItems { - authnSelectorId, authnSelectorIdOk := authnSelector.GetIdOk() - authnSelectorName, authnSelectorNameOk := authnSelector.GetNameOk() + for _, authenticationSelector := range items { + authenticationSelectorId, authenticationSelectorIdOk := authenticationSelector.GetIdOk() + authenticationSelectorName, authenticationSelectorNameOk := authenticationSelector.GetNameOk() - if authnSelectorIdOk && authnSelectorNameOk { - authenticationSelectorData[*authnSelectorId] = *authnSelectorName + if authenticationSelectorIdOk && authenticationSelectorNameOk { + authenticationSelectorData[*authenticationSelectorId] = *authenticationSelectorName } } diff --git a/internal/connector/pingfederate/resources/authentication_selector_test.go b/internal/connector/pingfederate/resources/authentication_selector_test.go new file mode 100644 index 00000000..20649728 --- /dev/null +++ b/internal/connector/pingfederate/resources/authentication_selector_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateAuthenticationSelector(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateAuthenticationSelector(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_captcha_provider.go b/internal/connector/pingfederate/resources/captcha_provider.go similarity index 81% rename from internal/connector/pingfederate/resources/pingfederate_captcha_provider.go rename to internal/connector/pingfederate/resources/captcha_provider.go index c77b87e1..eb134a31 100644 --- a/internal/connector/pingfederate/resources/pingfederate_captcha_provider.go +++ b/internal/connector/pingfederate/resources/captcha_provider.go @@ -12,11 +12,11 @@ var ( ) type PingFederateCaptchaProviderResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateCaptchaProviderResource -func CaptchaProvider(clientInfo *connector.PingFederateClientInfo) *PingFederateCaptchaProviderResource { +func CaptchaProvider(clientInfo *connector.ClientInfo) *PingFederateCaptchaProviderResource { return &PingFederateCaptchaProviderResource{ clientInfo: clientInfo, } @@ -40,7 +40,7 @@ func (r *PingFederateCaptchaProviderResource) ExportAll() (*[]connector.ImportBl for captchaProviderId, captchaProviderName := range captchaProviderData { commentData := map[string]string{ "Captcha Provider ID": captchaProviderId, - "Captcha Provider Name": captchaProviderId, + "Captcha Provider Name": captchaProviderName, "Resource Type": r.ResourceType(), } @@ -60,7 +60,7 @@ func (r *PingFederateCaptchaProviderResource) ExportAll() (*[]connector.ImportBl func (r *PingFederateCaptchaProviderResource) getCaptchaProviderData() (map[string]string, error) { captchaProviderData := make(map[string]string) - captchaProviders, response, err := r.clientInfo.ApiClient.CaptchaProvidersAPI.GetCaptchaProviders(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.CaptchaProvidersAPI.GetCaptchaProviders(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetCaptchaProviders", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateCaptchaProviderResource) getCaptchaProviderData() (map[stri return nil, nil } - if captchaProviders == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - captchaProvidersItems, captchaProvidersItemsOk := captchaProviders.GetItemsOk() - if !captchaProvidersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, captchaProvider := range captchaProvidersItems { + for _, captchaProvider := range items { captchaProviderId, captchaProviderIdOk := captchaProvider.GetIdOk() captchaProviderName, captchaProviderNameOk := captchaProvider.GetNameOk() diff --git a/internal/connector/pingfederate/resources/pingfederate_captcha_provider_settings.go b/internal/connector/pingfederate/resources/captcha_provider_settings.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_captcha_provider_settings.go rename to internal/connector/pingfederate/resources/captcha_provider_settings.go index 6431973b..8d47f0f8 100644 --- a/internal/connector/pingfederate/resources/pingfederate_captcha_provider_settings.go +++ b/internal/connector/pingfederate/resources/captcha_provider_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateCaptchaProviderSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateCaptchaProviderSettingsResource -func CaptchaProviderSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateCaptchaProviderSettingsResource { +func CaptchaProviderSettings(clientInfo *connector.ClientInfo) *PingFederateCaptchaProviderSettingsResource { return &PingFederateCaptchaProviderSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_captcha_provider_settings_test.go b/internal/connector/pingfederate/resources/captcha_provider_settings_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_captcha_provider_settings_test.go rename to internal/connector/pingfederate/resources/captcha_provider_settings_test.go index 227d8bc9..5c6defd4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_captcha_provider_settings_test.go +++ b/internal/connector/pingfederate/resources/captcha_provider_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateCaptchaProviderSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.CaptchaProviderSettings(PingFederateClientInfo) +func Test_PingFederateCaptchaProviderSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.CaptchaProviderSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_captcha_provider_settings", + ResourceType: resource.ResourceType(), ResourceName: "Captcha Provider Settings", ResourceID: "captcha_provider_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/captcha_provider_test.go b/internal/connector/pingfederate/resources/captcha_provider_test.go new file mode 100644 index 00000000..694b169f --- /dev/null +++ b/internal/connector/pingfederate/resources/captcha_provider_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateCaptchaProvider(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateCaptchaProvider(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/certificate_ca.go b/internal/connector/pingfederate/resources/certificate_ca.go new file mode 100644 index 00000000..bd4b9aaf --- /dev/null +++ b/internal/connector/pingfederate/resources/certificate_ca.go @@ -0,0 +1,98 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateCertificateCaResource{} +) + +type PingFederateCertificateCaResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateCertificateCaResource +func CertificateCa(clientInfo *connector.ClientInfo) *PingFederateCertificateCaResource { + return &PingFederateCertificateCaResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateCertificateCaResource) ResourceType() string { + return "pingfederate_certificate_ca" +} + +func (r *PingFederateCertificateCaResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + certificateCaData, err := r.getCertificateCaData() + if err != nil { + return nil, err + } + + for certificateCaId, certificateCaInfo := range certificateCaData { + certificateCaIssuerDn := certificateCaInfo[0] + certificateCaSerialNumber := certificateCaInfo[1] + + commentData := map[string]string{ + "Certificate Ca ID": certificateCaId, + "Certificate Ca Issuer DN": certificateCaIssuerDn, + "Certificate Ca Serial Number": certificateCaSerialNumber, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", certificateCaIssuerDn, certificateCaSerialNumber), + ResourceID: certificateCaId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateCertificateCaResource) getCertificateCaData() (map[string][]string, error) { + certificateCaData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.CertificatesCaAPI.GetTrustedCAs(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetTrustedCAs", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, certificateCa := range items { + certificateCaId, certificateCaIdOk := certificateCa.GetIdOk() + certificateCaIssuerDn, certificateCaIssuerDnOk := certificateCa.GetIssuerDNOk() + certificateCaSerialNumber, certificateCaSerialNumberOk := certificateCa.GetSerialNumberOk() + + if certificateCaIdOk && certificateCaIssuerDnOk && certificateCaSerialNumberOk { + certificateCaData[*certificateCaId] = []string{*certificateCaIssuerDn, *certificateCaSerialNumber} + } + } + + return certificateCaData, nil +} diff --git a/internal/connector/pingfederate/resources/certificate_ca_test.go b/internal/connector/pingfederate/resources/certificate_ca_test.go new file mode 100644 index 00000000..edcfb6fa --- /dev/null +++ b/internal/connector/pingfederate/resources/certificate_ca_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateCertificateCa(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateCertificateCa(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", creationInfo[testutils_resource.ENUM_ISSUER_DN], creationInfo[testutils_resource.ENUM_SERIAL_NUMBER]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/certificates_revocation_ocsp_certificate.go b/internal/connector/pingfederate/resources/certificates_revocation_ocsp_certificate.go new file mode 100644 index 00000000..8b211ab7 --- /dev/null +++ b/internal/connector/pingfederate/resources/certificates_revocation_ocsp_certificate.go @@ -0,0 +1,98 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateCertificatesRevocationOcspCertificateResource{} +) + +type PingFederateCertificatesRevocationOcspCertificateResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateCertificatesRevocationOcspCertificateResource +func CertificatesRevocationOcspCertificate(clientInfo *connector.ClientInfo) *PingFederateCertificatesRevocationOcspCertificateResource { + return &PingFederateCertificatesRevocationOcspCertificateResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateCertificatesRevocationOcspCertificateResource) ResourceType() string { + return "pingfederate_certificates_revocation_ocsp_certificate" +} + +func (r *PingFederateCertificatesRevocationOcspCertificateResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + certificatesRevocationOcspCertificateData, err := r.getCertificatesRevocationOcspCertificateData() + if err != nil { + return nil, err + } + + for certificatesRevocationOcspCertificateId, certificatesRevocationOcspCertificateInfo := range certificatesRevocationOcspCertificateData { + certificatesRevocationOcspCertificateIssuerDn := certificatesRevocationOcspCertificateInfo[0] + certificatesRevocationOcspCertificateSerialNumber := certificatesRevocationOcspCertificateInfo[1] + + commentData := map[string]string{ + "Certificates Revocation Ocsp Certificate ID": certificatesRevocationOcspCertificateId, + "Certificates Revocation Ocsp Certificate Issuer DN": certificatesRevocationOcspCertificateIssuerDn, + "Certificates Revocation Ocsp Certificate Serial Number": certificatesRevocationOcspCertificateSerialNumber, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", certificatesRevocationOcspCertificateIssuerDn, certificatesRevocationOcspCertificateSerialNumber), + ResourceID: certificatesRevocationOcspCertificateId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateCertificatesRevocationOcspCertificateResource) getCertificatesRevocationOcspCertificateData() (map[string][]string, error) { + certificatesRevocationOcspCertificateData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.CertificatesRevocationAPI.GetOcspCertificates(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetOcspCertificates", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, certificatesRevocationOcspCertificate := range items { + certificatesRevocationOcspCertificateId, certificatesRevocationOcspCertificateIdOk := certificatesRevocationOcspCertificate.GetIdOk() + certificatesRevocationOcspCertificateIssuerDn, certificatesRevocationOcspCertificateIssuerDnOk := certificatesRevocationOcspCertificate.GetIssuerDNOk() + certificatesRevocationOcspCertificateSerialNumber, certificatesRevocationOcspCertificateSerialNumberOk := certificatesRevocationOcspCertificate.GetSerialNumberOk() + + if certificatesRevocationOcspCertificateIdOk && certificatesRevocationOcspCertificateIssuerDnOk && certificatesRevocationOcspCertificateSerialNumberOk { + certificatesRevocationOcspCertificateData[*certificatesRevocationOcspCertificateId] = []string{*certificatesRevocationOcspCertificateIssuerDn, *certificatesRevocationOcspCertificateSerialNumber} + } + } + + return certificatesRevocationOcspCertificateData, nil +} diff --git a/internal/connector/pingfederate/resources/certificates_revocation_ocsp_certificate_test.go b/internal/connector/pingfederate/resources/certificates_revocation_ocsp_certificate_test.go new file mode 100644 index 00000000..f80e1d1a --- /dev/null +++ b/internal/connector/pingfederate/resources/certificates_revocation_ocsp_certificate_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateCertificatesRevocationOcspCertificate(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateCertificatesRevocationOcspCertificate(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", creationInfo[testutils_resource.ENUM_ISSUER_DN], creationInfo[testutils_resource.ENUM_SERIAL_NUMBER]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_settings.go b/internal/connector/pingfederate/resources/certificates_revocation_settings.go similarity index 89% rename from internal/connector/pingfederate/resources/pingfederate_certificates_revocation_settings.go rename to internal/connector/pingfederate/resources/certificates_revocation_settings.go index ec5155d2..d395b3f3 100644 --- a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_settings.go +++ b/internal/connector/pingfederate/resources/certificates_revocation_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateCertificatesRevocationSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateCertificatesRevocationSettingsResource -func CertificatesRevocationSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateCertificatesRevocationSettingsResource { +func CertificatesRevocationSettings(clientInfo *connector.ClientInfo) *PingFederateCertificatesRevocationSettingsResource { return &PingFederateCertificatesRevocationSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_settings_test.go b/internal/connector/pingfederate/resources/certificates_revocation_settings_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_certificates_revocation_settings_test.go rename to internal/connector/pingfederate/resources/certificates_revocation_settings_test.go index 8ac444b7..cb876e63 100644 --- a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_settings_test.go +++ b/internal/connector/pingfederate/resources/certificates_revocation_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateCertificatesRevocationSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.CertificatesRevocationSettings(PingFederateClientInfo) +func Test_PingFederateCertificatesRevocationSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.CertificatesRevocationSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_certificates_revocation_settings", + ResourceType: resource.ResourceType(), ResourceName: "Certificates Revocation Settings", ResourceID: "certificates_revocation_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_cluster_settings.go b/internal/connector/pingfederate/resources/cluster_settings.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_cluster_settings.go rename to internal/connector/pingfederate/resources/cluster_settings.go index af7f5c4c..e6112cf4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_cluster_settings.go +++ b/internal/connector/pingfederate/resources/cluster_settings.go @@ -1,9 +1,13 @@ package resources import ( + "fmt" + "strings" + "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" "github.com/pingidentity/pingcli/internal/logger" + "golang.org/x/mod/semver" ) // Verify that the resource satisfies the exportable resource interface @@ -12,11 +16,11 @@ var ( ) type PingFederateClusterSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateClusterSettingsResource -func ClusterSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateClusterSettingsResource { +func ClusterSettings(clientInfo *connector.ClientInfo) *PingFederateClusterSettingsResource { return &PingFederateClusterSettingsResource{ clientInfo: clientInfo, } @@ -32,6 +36,15 @@ func (r *PingFederateClusterSettingsResource) ExportAll() (*[]connector.ImportBl importBlocks := []connector.ImportBlock{} + valid, err := r.ValidPingFederateVersion() + if err != nil { + return nil, err + } + if !valid { + l.Warn().Msgf("'%s' Resource is not supported in the version of PingFederate used. Skipping export.", r.ResourceType()) + return &importBlocks, nil + } + clusterSettingsId := "cluster_settings_singleton_id" clusterSettingsName := "Cluster Settings" @@ -51,3 +64,23 @@ func (r *PingFederateClusterSettingsResource) ExportAll() (*[]connector.ImportBl return &importBlocks, nil } + +func (r *PingFederateClusterSettingsResource) ValidPingFederateVersion() (bool, error) { + versionObj, response, err := r.clientInfo.PingFederateApiClient.VersionAPI.GetVersion(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetVersion", r.ResourceType()) + if err != nil { + return false, err + } + if !ok { + return false, nil + } + + version, versionOk := versionObj.GetVersionOk() + if !versionOk { + return false, common.DataNilError(r.ResourceType(), response) + } + + semVer := (*version)[:strings.LastIndex(*version, ".")] + compareResult := semver.Compare(fmt.Sprintf("v%s", semVer), "v12.0.0") + return compareResult >= 0, nil +} diff --git a/internal/connector/pingfederate/resources/cluster_settings_test.go b/internal/connector/pingfederate/resources/cluster_settings_test.go new file mode 100644 index 00000000..649bd791 --- /dev/null +++ b/internal/connector/pingfederate/resources/cluster_settings_test.go @@ -0,0 +1,34 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" +) + +func Test_PingFederateClusterSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ClusterSettings(clientInfo) + + valid, err := resource.ValidPingFederateVersion() + if err != nil { + t.Errorf("Error checking version compatibility: %v", err) + } + if !valid { + t.Skipf("'%s' Resource is not supported in the version of PingFederate used. Skipping export test.", resource.ResourceType()) + } + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: resource.ResourceType(), + ResourceName: "Cluster Settings", + ResourceID: "cluster_settings_singleton_id", + }, + } + + testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_configuration_encryption_keys_rotate.go b/internal/connector/pingfederate/resources/configuration_encryption_keys_rotate.go similarity index 89% rename from internal/connector/pingfederate/resources/pingfederate_configuration_encryption_keys_rotate.go rename to internal/connector/pingfederate/resources/configuration_encryption_keys_rotate.go index af038dfd..c8d89620 100644 --- a/internal/connector/pingfederate/resources/pingfederate_configuration_encryption_keys_rotate.go +++ b/internal/connector/pingfederate/resources/configuration_encryption_keys_rotate.go @@ -12,11 +12,11 @@ var ( ) type PingFederateConfigurationEncryptionKeysRotateResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateConfigurationEncryptionKeysRotateResource -func ConfigurationEncryptionKeysRotate(clientInfo *connector.PingFederateClientInfo) *PingFederateConfigurationEncryptionKeysRotateResource { +func ConfigurationEncryptionKeysRotate(clientInfo *connector.ClientInfo) *PingFederateConfigurationEncryptionKeysRotateResource { return &PingFederateConfigurationEncryptionKeysRotateResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_configuration_encryption_keys_rotate_test.go b/internal/connector/pingfederate/resources/configuration_encryption_keys_rotate_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_configuration_encryption_keys_rotate_test.go rename to internal/connector/pingfederate/resources/configuration_encryption_keys_rotate_test.go index 67e0a389..0d1f9f29 100644 --- a/internal/connector/pingfederate/resources/pingfederate_configuration_encryption_keys_rotate_test.go +++ b/internal/connector/pingfederate/resources/configuration_encryption_keys_rotate_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateConfigurationEncryptionKeysRotateExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ConfigurationEncryptionKeysRotate(PingFederateClientInfo) +func Test_PingFederateConfigurationEncryptionKeysRotate(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ConfigurationEncryptionKeysRotate(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_configuration_encryption_keys_rotate", + ResourceType: resource.ResourceType(), ResourceName: "Configuration Encryption Keys Rotate", ResourceID: "configuration_encryption_keys_rotate_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_data_store.go b/internal/connector/pingfederate/resources/data_store.go similarity index 84% rename from internal/connector/pingfederate/resources/pingfederate_data_store.go rename to internal/connector/pingfederate/resources/data_store.go index 889abc13..61ae5e9c 100644 --- a/internal/connector/pingfederate/resources/pingfederate_data_store.go +++ b/internal/connector/pingfederate/resources/data_store.go @@ -14,11 +14,11 @@ var ( ) type PingFederateDataStoreResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateDataStoreResource -func DataStore(clientInfo *connector.PingFederateClientInfo) *PingFederateDataStoreResource { +func DataStore(clientInfo *connector.ClientInfo) *PingFederateDataStoreResource { return &PingFederateDataStoreResource{ clientInfo: clientInfo, } @@ -62,7 +62,7 @@ func (r *PingFederateDataStoreResource) ExportAll() (*[]connector.ImportBlock, e func (r *PingFederateDataStoreResource) getDataStoreData() (map[string]string, error) { dataStoreData := make(map[string]string) - dataStores, response, err := r.clientInfo.ApiClient.DataStoresAPI.GetDataStores(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.DataStoresAPI.GetDataStores(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetDataStores", r.ResourceType()) if err != nil { return nil, err @@ -71,16 +71,16 @@ func (r *PingFederateDataStoreResource) getDataStoreData() (map[string]string, e return nil, nil } - if dataStores == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - dataStoresItems, dataStoresItemsOk := dataStores.GetItemsOk() - if !dataStoresItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, dataStore := range dataStoresItems { + for _, dataStore := range items { dataStoreId, dataStoreIdOk := dataStore.GetIdOk() dataStoreType, dataStoreTypeOk := dataStore.GetTypeOk() diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_client_test.go b/internal/connector/pingfederate/resources/data_store_test.go similarity index 50% rename from internal/connector/pingfederate/resources/pingfederate_oauth_client_test.go rename to internal/connector/pingfederate/resources/data_store_test.go index 2992fdfd..267e33d2 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_client_test.go +++ b/internal/connector/pingfederate/resources/data_store_test.go @@ -8,19 +8,20 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateOAuthClientExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthClient(PingFederateClientInfo) +func Test_PingFederateDataStore(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + // Data store resource is already created, so no need to use a testable resource + resource := resources.DataStore(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_oauth_client", - ResourceName: "test", - ResourceID: "test", + ResourceType: resource.ResourceType(), + ResourceName: "ProvisionerDS_JDBC", + ResourceID: "ProvisionerDS", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_default_urls.go b/internal/connector/pingfederate/resources/default_urls.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_default_urls.go rename to internal/connector/pingfederate/resources/default_urls.go index 44577828..8d9d8615 100644 --- a/internal/connector/pingfederate/resources/pingfederate_default_urls.go +++ b/internal/connector/pingfederate/resources/default_urls.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateExtendedPropertiesResource{} + _ connector.ExportableResource = &PingFederateDefaultUrlsResource{} ) -type PingFederateDefaultURLsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateDefaultUrlsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateDefaultURLsResource -func DefaultURLs(clientInfo *connector.PingFederateClientInfo) *PingFederateDefaultURLsResource { - return &PingFederateDefaultURLsResource{ +// Utility method for creating a PingFederateDefaultUrlsResource +func DefaultUrls(clientInfo *connector.ClientInfo) *PingFederateDefaultUrlsResource { + return &PingFederateDefaultUrlsResource{ clientInfo: clientInfo, } } -func (r *PingFederateDefaultURLsResource) ResourceType() string { +func (r *PingFederateDefaultUrlsResource) ResourceType() string { return "pingfederate_default_urls" } -func (r *PingFederateDefaultURLsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateDefaultUrlsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - defaultURLsId := "default_urls_singleton_id" - defaultURLsName := "Default URLs" + defaultUrlsId := "default_urls_singleton_id" + defaultUrlsName := "Default Urls" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateDefaultURLsResource) ExportAll() (*[]connector.ImportBlock, importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: defaultURLsName, - ResourceID: defaultURLsId, + ResourceName: defaultUrlsName, + ResourceID: defaultUrlsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_default_urls_test.go b/internal/connector/pingfederate/resources/default_urls_test.go similarity index 53% rename from internal/connector/pingfederate/resources/pingfederate_default_urls_test.go rename to internal/connector/pingfederate/resources/default_urls_test.go index ca879d3c..6699ed00 100644 --- a/internal/connector/pingfederate/resources/pingfederate_default_urls_test.go +++ b/internal/connector/pingfederate/resources/default_urls_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateIDPDefaultURLsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.DefaultURLs(PingFederateClientInfo) +func Test_PingFederateDefaultUrls(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.DefaultUrls(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_default_urls", - ResourceName: "Default URLs", + ResourceType: resource.ResourceType(), + ResourceName: "Default Urls", ResourceID: "default_urls_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_extended_properties.go b/internal/connector/pingfederate/resources/extended_properties.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_extended_properties.go rename to internal/connector/pingfederate/resources/extended_properties.go index 8e7b8f2a..4d992b79 100644 --- a/internal/connector/pingfederate/resources/pingfederate_extended_properties.go +++ b/internal/connector/pingfederate/resources/extended_properties.go @@ -12,11 +12,11 @@ var ( ) type PingFederateExtendedPropertiesResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateExtendedPropertiesResource -func ExtendedProperties(clientInfo *connector.PingFederateClientInfo) *PingFederateExtendedPropertiesResource { +func ExtendedProperties(clientInfo *connector.ClientInfo) *PingFederateExtendedPropertiesResource { return &PingFederateExtendedPropertiesResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_extended_properties_test.go b/internal/connector/pingfederate/resources/extended_properties_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_extended_properties_test.go rename to internal/connector/pingfederate/resources/extended_properties_test.go index bac7a70f..74a76def 100644 --- a/internal/connector/pingfederate/resources/pingfederate_extended_properties_test.go +++ b/internal/connector/pingfederate/resources/extended_properties_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateExtendedPropertiesExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ExtendedProperties(PingFederateClientInfo) +func Test_PingFederateExtendedProperties(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ExtendedProperties(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_extended_properties", + ResourceType: resource.ResourceType(), ResourceName: "Extended Properties", ResourceID: "extended_properties_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_identity_store_provisioner.go b/internal/connector/pingfederate/resources/identity_store_provisioner.go similarity index 81% rename from internal/connector/pingfederate/resources/pingfederate_identity_store_provisioner.go rename to internal/connector/pingfederate/resources/identity_store_provisioner.go index e4446ffa..dc7e68bd 100644 --- a/internal/connector/pingfederate/resources/pingfederate_identity_store_provisioner.go +++ b/internal/connector/pingfederate/resources/identity_store_provisioner.go @@ -12,11 +12,11 @@ var ( ) type PingFederateIdentityStoreProvisionerResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateIdentityStoreProvisionerResource -func IdentityStoreProvisioner(clientInfo *connector.PingFederateClientInfo) *PingFederateIdentityStoreProvisionerResource { +func IdentityStoreProvisioner(clientInfo *connector.ClientInfo) *PingFederateIdentityStoreProvisionerResource { return &PingFederateIdentityStoreProvisionerResource{ clientInfo: clientInfo, } @@ -60,7 +60,7 @@ func (r *PingFederateIdentityStoreProvisionerResource) ExportAll() (*[]connector func (r *PingFederateIdentityStoreProvisionerResource) getIdentityStoreProvisionerData() (map[string]string, error) { identityStoreProvisionerData := make(map[string]string) - identityStoreProvisioners, response, err := r.clientInfo.ApiClient.IdentityStoreProvisionersAPI.GetIdentityStoreProvisioners(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.IdentityStoreProvisionersAPI.GetIdentityStoreProvisioners(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetIdentityStoreProvisioners", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateIdentityStoreProvisionerResource) getIdentityStoreProvision return nil, nil } - if identityStoreProvisioners == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - identityStoreProvisionersItems, identityStoreProvisionersItemsOk := identityStoreProvisioners.GetItemsOk() - if !identityStoreProvisionersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, identityStoreProvisioner := range identityStoreProvisionersItems { + for _, identityStoreProvisioner := range items { identityStoreProvisionerId, identityStoreProvisionerIdOk := identityStoreProvisioner.GetIdOk() identityStoreProvisionerName, identityStoreProvisionerNameOk := identityStoreProvisioner.GetNameOk() diff --git a/internal/connector/pingfederate/resources/identity_store_provisioner_test.go b/internal/connector/pingfederate/resources/identity_store_provisioner_test.go new file mode 100644 index 00000000..21e2ce12 --- /dev/null +++ b/internal/connector/pingfederate/resources/identity_store_provisioner_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateIdentityStoreProvisioner(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateIdentityStoreProvisioner(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_adapter.go b/internal/connector/pingfederate/resources/idp_adapter.go similarity index 63% rename from internal/connector/pingfederate/resources/pingfederate_idp_adapter.go rename to internal/connector/pingfederate/resources/idp_adapter.go index c341d4ef..fecaa301 100644 --- a/internal/connector/pingfederate/resources/pingfederate_idp_adapter.go +++ b/internal/connector/pingfederate/resources/idp_adapter.go @@ -8,39 +8,39 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateIDPAdapterResource{} + _ connector.ExportableResource = &PingFederateIdpAdapterResource{} ) -type PingFederateIDPAdapterResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateIdpAdapterResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateIDPAdapterResource -func IDPAdapter(clientInfo *connector.PingFederateClientInfo) *PingFederateIDPAdapterResource { - return &PingFederateIDPAdapterResource{ +// Utility method for creating a PingFederateIdpAdapterResource +func IdpAdapter(clientInfo *connector.ClientInfo) *PingFederateIdpAdapterResource { + return &PingFederateIdpAdapterResource{ clientInfo: clientInfo, } } -func (r *PingFederateIDPAdapterResource) ResourceType() string { +func (r *PingFederateIdpAdapterResource) ResourceType() string { return "pingfederate_idp_adapter" } -func (r *PingFederateIDPAdapterResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateIdpAdapterResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - idpAdapterData, err := r.getIDPAdapterData() + idpAdapterData, err := r.getIdpAdapterData() if err != nil { return nil, err } for idpAdapterId, idpAdapterName := range idpAdapterData { commentData := map[string]string{ - "IDP Adapter ID": idpAdapterId, - "IDP Adapter Name": idpAdapterName, + "Idp Adapter ID": idpAdapterId, + "Idp Adapter Name": idpAdapterName, "Resource Type": r.ResourceType(), } @@ -57,10 +57,10 @@ func (r *PingFederateIDPAdapterResource) ExportAll() (*[]connector.ImportBlock, return &importBlocks, nil } -func (r *PingFederateIDPAdapterResource) getIDPAdapterData() (map[string]string, error) { +func (r *PingFederateIdpAdapterResource) getIdpAdapterData() (map[string]string, error) { idpAdapterData := make(map[string]string) - idpAdapters, response, err := r.clientInfo.ApiClient.IdpAdaptersAPI.GetIdpAdapters(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.IdpAdaptersAPI.GetIdpAdapters(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetIdpAdapters", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateIDPAdapterResource) getIDPAdapterData() (map[string]string, return nil, nil } - if idpAdapters == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - idpAdaptersItems, idpAdaptersItemsOk := idpAdapters.GetItemsOk() - if !idpAdaptersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, idpAdapter := range idpAdaptersItems { + for _, idpAdapter := range items { idpAdapterId, idpAdapterIdOk := idpAdapter.GetIdOk() idpAdapterName, idpAdapterNameOk := idpAdapter.GetNameOk() diff --git a/internal/connector/pingfederate/resources/idp_adapter_test.go b/internal/connector/pingfederate/resources/idp_adapter_test.go new file mode 100644 index 00000000..d0212ac9 --- /dev/null +++ b/internal/connector/pingfederate/resources/idp_adapter_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateIdpAdapter(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateIdpAdapter(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/idp_sp_connection.go b/internal/connector/pingfederate/resources/idp_sp_connection.go new file mode 100644 index 00000000..03e06f8c --- /dev/null +++ b/internal/connector/pingfederate/resources/idp_sp_connection.go @@ -0,0 +1,91 @@ +package resources + +import ( + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateIdpSpConnectionResource{} +) + +type PingFederateIdpSpConnectionResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateIdpSpConnectionResource +func IdpSpConnection(clientInfo *connector.ClientInfo) *PingFederateIdpSpConnectionResource { + return &PingFederateIdpSpConnectionResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateIdpSpConnectionResource) ResourceType() string { + return "pingfederate_idp_sp_connection" +} + +func (r *PingFederateIdpSpConnectionResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + idpSpConnectionData, err := r.getIdpSpConnectionData() + if err != nil { + return nil, err + } + + for idpSpConnectionId, idpSpConnectionName := range idpSpConnectionData { + commentData := map[string]string{ + "Idp Sp Connection ID": idpSpConnectionId, + "Idp Sp Connection Name": idpSpConnectionName, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: idpSpConnectionName, + ResourceID: idpSpConnectionId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateIdpSpConnectionResource) getIdpSpConnectionData() (map[string]string, error) { + idpSpConnectionData := make(map[string]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.IdpSpConnectionsAPI.GetSpConnections(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetSpConnections", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, idpSpConnection := range items { + idpSpConnectionId, idpSpConnectionIdOk := idpSpConnection.GetIdOk() + idpSpConnectionName, idpSpConnectionNameOk := idpSpConnection.GetNameOk() + + if idpSpConnectionIdOk && idpSpConnectionNameOk { + idpSpConnectionData[*idpSpConnectionId] = *idpSpConnectionName + } + } + + return idpSpConnectionData, nil +} diff --git a/internal/connector/pingfederate/resources/idp_sp_connection_test.go b/internal/connector/pingfederate/resources/idp_sp_connection_test.go new file mode 100644 index 00000000..1aa35f98 --- /dev/null +++ b/internal/connector/pingfederate/resources/idp_sp_connection_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateIdpSpConnection(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateIdpSpConnection(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_sts_request_parameters_contract.go b/internal/connector/pingfederate/resources/idp_sts_request_parameters_contract.go similarity index 52% rename from internal/connector/pingfederate/resources/pingfederate_idp_sts_request_parameters_contract.go rename to internal/connector/pingfederate/resources/idp_sts_request_parameters_contract.go index 8afc529b..e4d383a4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_idp_sts_request_parameters_contract.go +++ b/internal/connector/pingfederate/resources/idp_sts_request_parameters_contract.go @@ -12,11 +12,11 @@ var ( ) type PingFederateIdpStsRequestParametersContractResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateIdpStsRequestParametersContractResource -func IdpStsRequestParametersContract(clientInfo *connector.PingFederateClientInfo) *PingFederateIdpStsRequestParametersContractResource { +func IdpStsRequestParametersContract(clientInfo *connector.ClientInfo) *PingFederateIdpStsRequestParametersContractResource { return &PingFederateIdpStsRequestParametersContractResource{ clientInfo: clientInfo, } @@ -32,22 +32,22 @@ func (r *PingFederateIdpStsRequestParametersContractResource) ExportAll() (*[]co importBlocks := []connector.ImportBlock{} - stsRequestParamContractData, err := r.getStsRequestParamContractData() + idpStsRequestParametersContractData, err := r.getIdpStsRequestParametersContractData() if err != nil { return nil, err } - for stsRequestParamContractId, stsRequestParamContractName := range stsRequestParamContractData { + for idpStsRequestParametersContractId, idpStsRequestParametersContractName := range idpStsRequestParametersContractData { commentData := map[string]string{ - "IDP STS Request Parameters Contract ID": stsRequestParamContractId, - "IDP STS Request Parameters Contract Name": stsRequestParamContractName, + "Idp Sts Request Parameters Contract ID": idpStsRequestParametersContractId, + "Idp Sts Request Parameters Contract Name": idpStsRequestParametersContractName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: stsRequestParamContractName, - ResourceID: stsRequestParamContractId, + ResourceName: idpStsRequestParametersContractName, + ResourceID: idpStsRequestParametersContractId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -57,10 +57,10 @@ func (r *PingFederateIdpStsRequestParametersContractResource) ExportAll() (*[]co return &importBlocks, nil } -func (r *PingFederateIdpStsRequestParametersContractResource) getStsRequestParamContractData() (map[string]string, error) { - stsRequestParamContractData := make(map[string]string) +func (r *PingFederateIdpStsRequestParametersContractResource) getIdpStsRequestParametersContractData() (map[string]string, error) { + idpStsRequestParametersContractData := make(map[string]string) - stsRequestParamContracts, response, err := r.clientInfo.ApiClient.IdpStsRequestParametersContractsAPI.GetStsRequestParamContracts(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.IdpStsRequestParametersContractsAPI.GetStsRequestParamContracts(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetStsRequestParamContracts", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateIdpStsRequestParametersContractResource) getStsRequestParam return nil, nil } - if stsRequestParamContracts == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - stsRequestParamContractsItems, stsRequestParamContractsOk := stsRequestParamContracts.GetItemsOk() - if !stsRequestParamContractsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, stsRequestParamContract := range stsRequestParamContractsItems { - stsRequestParamContractId, stsRequestParamContractIdOk := stsRequestParamContract.GetIdOk() - stsRequestParamContractName, stsRequestParamContractNameOk := stsRequestParamContract.GetNameOk() + for _, idpStsRequestParametersContract := range items { + idpStsRequestParametersContractId, idpStsRequestParametersContractIdOk := idpStsRequestParametersContract.GetIdOk() + idpStsRequestParametersContractName, idpStsRequestParametersContractNameOk := idpStsRequestParametersContract.GetNameOk() - if stsRequestParamContractIdOk && stsRequestParamContractNameOk { - stsRequestParamContractData[*stsRequestParamContractId] = *stsRequestParamContractName + if idpStsRequestParametersContractIdOk && idpStsRequestParametersContractNameOk { + idpStsRequestParametersContractData[*idpStsRequestParametersContractId] = *idpStsRequestParametersContractName } } - return stsRequestParamContractData, nil + return idpStsRequestParametersContractData, nil } diff --git a/internal/connector/pingfederate/resources/idp_sts_request_parameters_contract_test.go b/internal/connector/pingfederate/resources/idp_sts_request_parameters_contract_test.go new file mode 100644 index 00000000..e90d36db --- /dev/null +++ b/internal/connector/pingfederate/resources/idp_sts_request_parameters_contract_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateIdpStsRequestParametersContract(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateIdpStsRequestParametersContract(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_to_sp_adapter_mapping.go b/internal/connector/pingfederate/resources/idp_to_sp_adapter_mapping.go similarity index 79% rename from internal/connector/pingfederate/resources/pingfederate_idp_to_sp_adapter_mapping.go rename to internal/connector/pingfederate/resources/idp_to_sp_adapter_mapping.go index b8a68a6d..0b32f8c6 100644 --- a/internal/connector/pingfederate/resources/pingfederate_idp_to_sp_adapter_mapping.go +++ b/internal/connector/pingfederate/resources/idp_to_sp_adapter_mapping.go @@ -14,11 +14,11 @@ var ( ) type PingFederateIdpToSpAdapterMappingResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateIdpToSpAdapterMappingResource -func IdpToSpAdapterMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateIdpToSpAdapterMappingResource { +func IdpToSpAdapterMapping(clientInfo *connector.ClientInfo) *PingFederateIdpToSpAdapterMappingResource { return &PingFederateIdpToSpAdapterMappingResource{ clientInfo: clientInfo, } @@ -41,8 +41,8 @@ func (r *PingFederateIdpToSpAdapterMappingResource) ExportAll() (*[]connector.Im for idpToSpAdapterMappingSourceId, idpToSpAdapterMappingTargetId := range idpToSpAdapterMappingData { commentData := map[string]string{ - "IDP To SP Adapter Mapping IDP ID": idpToSpAdapterMappingSourceId, - "IDP To SP Adapter Mapping SP ID": idpToSpAdapterMappingTargetId, + "Idp To Sp Adapter Mapping IDP ID": idpToSpAdapterMappingSourceId, + "Idp To Sp Adapter Mapping SP ID": idpToSpAdapterMappingTargetId, "Resource Type": r.ResourceType(), } @@ -62,7 +62,7 @@ func (r *PingFederateIdpToSpAdapterMappingResource) ExportAll() (*[]connector.Im func (r *PingFederateIdpToSpAdapterMappingResource) getIdpToSpAdapterMappingData() (map[string]string, error) { idpToSpAdapterMappingData := make(map[string]string) - idpToSpAdapterMappings, response, err := r.clientInfo.ApiClient.IdpToSpAdapterMappingAPI.GetIdpToSpAdapterMappings(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.IdpToSpAdapterMappingAPI.GetIdpToSpAdapterMappings(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetIdpToSpAdapterMappings", r.ResourceType()) if err != nil { return nil, err @@ -71,16 +71,16 @@ func (r *PingFederateIdpToSpAdapterMappingResource) getIdpToSpAdapterMappingData return nil, nil } - if idpToSpAdapterMappings == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - idpToSpAdapterMappingsItems, idpToSpAdapterMappingsItemsOk := idpToSpAdapterMappings.GetItemsOk() - if !idpToSpAdapterMappingsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, idpToSpAdapterMapping := range idpToSpAdapterMappingsItems { + for _, idpToSpAdapterMapping := range items { idpToSpAdapterMappingSourceId, idpToSpAdapterMappingSourceIdOk := idpToSpAdapterMapping.GetSourceIdOk() idpToSpAdapterMappingTargetId, idpToSpAdapterMappingTargetIdOk := idpToSpAdapterMapping.GetTargetIdOk() diff --git a/internal/connector/pingfederate/resources/idp_to_sp_adapter_mapping_test.go b/internal/connector/pingfederate/resources/idp_to_sp_adapter_mapping_test.go new file mode 100644 index 00000000..967dabed --- /dev/null +++ b/internal/connector/pingfederate/resources/idp_to_sp_adapter_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateIdpToSpAdapterMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateIdpToSpAdapterMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", creationInfo[testutils_resource.ENUM_SOURCE_ID], creationInfo[testutils_resource.ENUM_TARGET_ID]), + ResourceID: fmt.Sprintf("%s|%s", creationInfo[testutils_resource.ENUM_SOURCE_ID], creationInfo[testutils_resource.ENUM_TARGET_ID]), + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_token_processor.go b/internal/connector/pingfederate/resources/idp_token_processor.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_idp_token_processor.go rename to internal/connector/pingfederate/resources/idp_token_processor.go index 70f411c2..d24196e5 100644 --- a/internal/connector/pingfederate/resources/pingfederate_idp_token_processor.go +++ b/internal/connector/pingfederate/resources/idp_token_processor.go @@ -12,11 +12,11 @@ var ( ) type PingFederateIdpTokenProcessorResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateIdpTokenProcessorResource -func IdpTokenProcessor(clientInfo *connector.PingFederateClientInfo) *PingFederateIdpTokenProcessorResource { +func IdpTokenProcessor(clientInfo *connector.ClientInfo) *PingFederateIdpTokenProcessorResource { return &PingFederateIdpTokenProcessorResource{ clientInfo: clientInfo, } @@ -32,22 +32,22 @@ func (r *PingFederateIdpTokenProcessorResource) ExportAll() (*[]connector.Import importBlocks := []connector.ImportBlock{} - tokenProcessorData, err := r.getTokenProcessorData() + idpTokenProcessorData, err := r.getIdpTokenProcessorData() if err != nil { return nil, err } - for tokenProcessorId, tokenProcessorName := range tokenProcessorData { + for idpTokenProcessorId, idpTokenProcessorName := range idpTokenProcessorData { commentData := map[string]string{ - "IDP Token Processor ID": tokenProcessorId, - "IDP Token Processor Name": tokenProcessorName, + "Idp Token Processor ID": idpTokenProcessorId, + "Idp Token Processor Name": idpTokenProcessorName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: tokenProcessorName, - ResourceID: tokenProcessorId, + ResourceName: idpTokenProcessorName, + ResourceID: idpTokenProcessorId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -57,10 +57,10 @@ func (r *PingFederateIdpTokenProcessorResource) ExportAll() (*[]connector.Import return &importBlocks, nil } -func (r *PingFederateIdpTokenProcessorResource) getTokenProcessorData() (map[string]string, error) { - tokenProcessorData := make(map[string]string) +func (r *PingFederateIdpTokenProcessorResource) getIdpTokenProcessorData() (map[string]string, error) { + idpTokenProcessorData := make(map[string]string) - tokenProcessors, response, err := r.clientInfo.ApiClient.IdpTokenProcessorsAPI.GetTokenProcessors(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.IdpTokenProcessorsAPI.GetTokenProcessors(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetTokenProcessors", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateIdpTokenProcessorResource) getTokenProcessorData() (map[str return nil, nil } - if tokenProcessors == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - tokenProcessorsItems, tokenProcessorsItemsOk := tokenProcessors.GetItemsOk() - if !tokenProcessorsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, tokenProcessor := range tokenProcessorsItems { - tokenProcessorId, tokenProcessorIdOk := tokenProcessor.GetIdOk() - tokenProcessorName, tokenProcessorNameOk := tokenProcessor.GetNameOk() + for _, idpTokenProcessor := range items { + idpTokenProcessorId, idpTokenProcessorIdOk := idpTokenProcessor.GetIdOk() + idpTokenProcessorName, idpTokenProcessorNameOk := idpTokenProcessor.GetNameOk() - if tokenProcessorIdOk && tokenProcessorNameOk { - tokenProcessorData[*tokenProcessorId] = *tokenProcessorName + if idpTokenProcessorIdOk && idpTokenProcessorNameOk { + idpTokenProcessorData[*idpTokenProcessorId] = *idpTokenProcessorName } } - return tokenProcessorData, nil + return idpTokenProcessorData, nil } diff --git a/internal/connector/pingfederate/resources/idp_token_processor_test.go b/internal/connector/pingfederate/resources/idp_token_processor_test.go new file mode 100644 index 00000000..02f3e10b --- /dev/null +++ b/internal/connector/pingfederate/resources/idp_token_processor_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateIdpTokenProcessor(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateIdpTokenProcessor(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_incoming_proxy_settings.go b/internal/connector/pingfederate/resources/incoming_proxy_settings.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_incoming_proxy_settings.go rename to internal/connector/pingfederate/resources/incoming_proxy_settings.go index bfe59bf1..e9da780c 100644 --- a/internal/connector/pingfederate/resources/pingfederate_incoming_proxy_settings.go +++ b/internal/connector/pingfederate/resources/incoming_proxy_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateIncomingProxySettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateIncomingProxySettingsResource -func IncomingProxySettings(clientInfo *connector.PingFederateClientInfo) *PingFederateIncomingProxySettingsResource { +func IncomingProxySettings(clientInfo *connector.ClientInfo) *PingFederateIncomingProxySettingsResource { return &PingFederateIncomingProxySettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_incoming_proxy_settings_test.go b/internal/connector/pingfederate/resources/incoming_proxy_settings_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_incoming_proxy_settings_test.go rename to internal/connector/pingfederate/resources/incoming_proxy_settings_test.go index 5a69783c..9197c9d0 100644 --- a/internal/connector/pingfederate/resources/pingfederate_incoming_proxy_settings_test.go +++ b/internal/connector/pingfederate/resources/incoming_proxy_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateIncomingProxySettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IncomingProxySettings(PingFederateClientInfo) +func Test_PingFederateIncomingProxySettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.IncomingProxySettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_incoming_proxy_settings", + ResourceType: resource.ResourceType(), ResourceName: "Incoming Proxy Settings", ResourceID: "incoming_proxy_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm.go b/internal/connector/pingfederate/resources/kerberos_realm.go similarity index 83% rename from internal/connector/pingfederate/resources/pingfederate_kerberos_realm.go rename to internal/connector/pingfederate/resources/kerberos_realm.go index 90556baa..5d94e427 100644 --- a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm.go +++ b/internal/connector/pingfederate/resources/kerberos_realm.go @@ -12,11 +12,11 @@ var ( ) type PingFederateKerberosRealmResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateKerberosRealmResource -func KerberosRealm(clientInfo *connector.PingFederateClientInfo) *PingFederateKerberosRealmResource { +func KerberosRealm(clientInfo *connector.ClientInfo) *PingFederateKerberosRealmResource { return &PingFederateKerberosRealmResource{ clientInfo: clientInfo, } @@ -60,7 +60,7 @@ func (r *PingFederateKerberosRealmResource) ExportAll() (*[]connector.ImportBloc func (r *PingFederateKerberosRealmResource) getKerberosRealmData() (map[string]string, error) { kerberosRealmData := make(map[string]string) - kerberosRealms, response, err := r.clientInfo.ApiClient.KerberosRealmsAPI.GetKerberosRealms(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.KerberosRealmsAPI.GetKerberosRealms(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetKerberosRealms", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateKerberosRealmResource) getKerberosRealmData() (map[string]s return nil, nil } - if kerberosRealms == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - kerberosRealmsItems, kerberosRealmsItemsOk := kerberosRealms.GetItemsOk() - if !kerberosRealmsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, kerberosRealm := range kerberosRealmsItems { + for _, kerberosRealm := range items { kerberosRealmId, kerberosRealmIdOk := kerberosRealm.GetIdOk() kerberosRealmName, kerberosRealmNameOk := kerberosRealm.GetKerberosRealmNameOk() diff --git a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_settings.go b/internal/connector/pingfederate/resources/kerberos_realm_settings.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_kerberos_realm_settings.go rename to internal/connector/pingfederate/resources/kerberos_realm_settings.go index 84156cb2..c0571084 100644 --- a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_settings.go +++ b/internal/connector/pingfederate/resources/kerberos_realm_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateKerberosRealmSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateKerberosRealmSettingsResource -func KerberosRealmSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateKerberosRealmSettingsResource { +func KerberosRealmSettings(clientInfo *connector.ClientInfo) *PingFederateKerberosRealmSettingsResource { return &PingFederateKerberosRealmSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_settings_test.go b/internal/connector/pingfederate/resources/kerberos_realm_settings_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_kerberos_realm_settings_test.go rename to internal/connector/pingfederate/resources/kerberos_realm_settings_test.go index ca554e98..243856f2 100644 --- a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_settings_test.go +++ b/internal/connector/pingfederate/resources/kerberos_realm_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateKerberosRealmSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.KerberosRealmSettings(PingFederateClientInfo) +func Test_PingFederateKerberosRealmSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.KerberosRealmSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_kerberos_realm_settings", + ResourceType: resource.ResourceType(), ResourceName: "Kerberos Realm Settings", ResourceID: "kerberos_realm_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/kerberos_realm_test.go b/internal/connector/pingfederate/resources/kerberos_realm_test.go new file mode 100644 index 00000000..719248e1 --- /dev/null +++ b/internal/connector/pingfederate/resources/kerberos_realm_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateKerberosRealm(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateKerberosRealm(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect.go b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect.go similarity index 86% rename from internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect.go rename to internal/connector/pingfederate/resources/keypairs_oauth_openid_connect.go index 9b02c052..a77dfa5a 100644 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect.go +++ b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect.go @@ -12,11 +12,11 @@ var ( ) type PingFederateKeypairsOauthOpenidConnectResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateKeypairsOauthOpenidConnectResource -func KeypairsOauthOpenidConnect(clientInfo *connector.PingFederateClientInfo) *PingFederateKeypairsOauthOpenidConnectResource { +func KeypairsOauthOpenidConnect(clientInfo *connector.ClientInfo) *PingFederateKeypairsOauthOpenidConnectResource { return &PingFederateKeypairsOauthOpenidConnectResource{ clientInfo: clientInfo, } @@ -33,7 +33,7 @@ func (r *PingFederateKeypairsOauthOpenidConnectResource) ExportAll() (*[]connect importBlocks := []connector.ImportBlock{} keypairsOauthOpenidConnectId := "keypairs_oauth_openid_connect_singleton_id" - keypairsOauthOpenidConnectName := "Keypairs OAuth OpenID Connect" + keypairsOauthOpenidConnectName := "Keypairs Oauth Openid Connect" commentData := map[string]string{ "Resource Type": r.ResourceType(), diff --git a/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_additional_key_set.go b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_additional_key_set.go new file mode 100644 index 00000000..823f5556 --- /dev/null +++ b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_additional_key_set.go @@ -0,0 +1,91 @@ +package resources + +import ( + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource{} +) + +type PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource +func KeypairsOauthOpenidConnectAdditionalKeySet(clientInfo *connector.ClientInfo) *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource { + return &PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource) ResourceType() string { + return "pingfederate_keypairs_oauth_openid_connect_additional_key_set" +} + +func (r *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + keypairsOauthOpenidConnectAdditionalKeySetData, err := r.getKeypairsOauthOpenidConnectAdditionalKeySetData() + if err != nil { + return nil, err + } + + for keypairsOauthOpenidConnectAdditionalKeySetId, keypairsOauthOpenidConnectAdditionalKeySetName := range keypairsOauthOpenidConnectAdditionalKeySetData { + commentData := map[string]string{ + "Keypairs Oauth Openid Connect Additional Key Set ID": keypairsOauthOpenidConnectAdditionalKeySetId, + "Keypairs Oauth Openid Connect Additional Key Set Name": keypairsOauthOpenidConnectAdditionalKeySetName, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: keypairsOauthOpenidConnectAdditionalKeySetName, + ResourceID: keypairsOauthOpenidConnectAdditionalKeySetId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource) getKeypairsOauthOpenidConnectAdditionalKeySetData() (map[string]string, error) { + keypairsOauthOpenidConnectAdditionalKeySetData := make(map[string]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.KeyPairsOauthOpenIdConnectAPI.GetKeySets(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetKeySets", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, keypairsOauthOpenidConnectAdditionalKeySet := range items { + keypairsOauthOpenidConnectAdditionalKeySetId, keypairsOauthOpenidConnectAdditionalKeySetIdOk := keypairsOauthOpenidConnectAdditionalKeySet.GetIdOk() + keypairsOauthOpenidConnectAdditionalKeySetName, keypairsOauthOpenidConnectAdditionalKeySetNameOk := keypairsOauthOpenidConnectAdditionalKeySet.GetNameOk() + + if keypairsOauthOpenidConnectAdditionalKeySetIdOk && keypairsOauthOpenidConnectAdditionalKeySetNameOk { + keypairsOauthOpenidConnectAdditionalKeySetData[*keypairsOauthOpenidConnectAdditionalKeySetId] = *keypairsOauthOpenidConnectAdditionalKeySetName + } + } + + return keypairsOauthOpenidConnectAdditionalKeySetData, nil +} diff --git a/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_additional_key_set_test.go b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_additional_key_set_test.go new file mode 100644 index 00000000..052a925b --- /dev/null +++ b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_additional_key_set_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateKeypairsOauthOpenidConnectAdditionalKeySet(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateKeypairsOauthOpenidConnectAdditionalKeySet(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_test.go b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_test.go similarity index 50% rename from internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_test.go rename to internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_test.go index d911b608..aadb7726 100644 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_test.go +++ b/internal/connector/pingfederate/resources/keypairs_oauth_openid_connect_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateKeypairsOauthOpenidConnectExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.KeypairsOauthOpenidConnect(PingFederateClientInfo) +func Test_PingFederateKeypairsOauthOpenidConnect(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.KeypairsOauthOpenidConnect(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_keypairs_oauth_openid_connect", - ResourceName: "Keypairs OAuth OpenID Connect", + ResourceType: resource.ResourceType(), + ResourceName: "Keypairs Oauth Openid Connect", ResourceID: "keypairs_oauth_openid_connect_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_signing_key_rotation_settings.go b/internal/connector/pingfederate/resources/keypairs_signing_key_rotation_settings.go similarity index 58% rename from internal/connector/pingfederate/resources/pingfederate_keypairs_signing_key_rotation_settings.go rename to internal/connector/pingfederate/resources/keypairs_signing_key_rotation_settings.go index 91e5c34d..47b1e406 100644 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_signing_key_rotation_settings.go +++ b/internal/connector/pingfederate/resources/keypairs_signing_key_rotation_settings.go @@ -14,11 +14,11 @@ var ( ) type PingFederateKeypairsSigningKeyRotationSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateKeypairsSigningKeyRotationSettingsResource -func KeypairsSigningKeyRotationSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateKeypairsSigningKeyRotationSettingsResource { +func KeypairsSigningKeyRotationSettings(clientInfo *connector.ClientInfo) *PingFederateKeypairsSigningKeyRotationSettingsResource { return &PingFederateKeypairsSigningKeyRotationSettingsResource{ clientInfo: clientInfo, } @@ -34,26 +34,34 @@ func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) ExportAll() (*[ importBlocks := []connector.ImportBlock{} - signingKeyPairData, err := r.getSigningKeyPairData() + keypairsSigningKeyData, err := r.getKeypairsSigningKeyData() if err != nil { return nil, err } - for signingKeyPairId, signingKeyPairInfo := range signingKeyPairData { - signingKeyPairIssuerDN := signingKeyPairInfo[0] - signingKeyPairSerialNumber := signingKeyPairInfo[1] + for keypairsSigningKeyId, keypairsSigningKeyInfo := range keypairsSigningKeyData { + ok, err := r.checkKeypairsSigningKeyRotationSettingsData(keypairsSigningKeyId) + if err != nil { + return nil, err + } + if !ok { + continue + } + + keypairsSigningKeyIssuerDn := keypairsSigningKeyInfo[0] + keypairsSigningKeySerialNumber := keypairsSigningKeyInfo[1] commentData := map[string]string{ - "Signing Keypair ID": signingKeyPairId, - "Signing Keypair Issuer DN": signingKeyPairIssuerDN, - "Signing Keypair Serial Number": signingKeyPairSerialNumber, - "Resource Type": r.ResourceType(), + "Keypairs Signing Key ID": keypairsSigningKeyId, + "Keypairs Signing Key Issuer DN": keypairsSigningKeyIssuerDn, + "Keypairs Signing Key Serial Number": keypairsSigningKeySerialNumber, + "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_%s_rotation_settings", signingKeyPairIssuerDN, signingKeyPairSerialNumber), - ResourceID: signingKeyPairId, + ResourceName: fmt.Sprintf("%s_%s_rotation_settings", keypairsSigningKeyIssuerDn, keypairsSigningKeySerialNumber), + ResourceID: keypairsSigningKeyId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -63,10 +71,10 @@ func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) ExportAll() (*[ return &importBlocks, nil } -func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) getSigningKeyPairData() (map[string][]string, error) { +func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) getKeypairsSigningKeyData() (map[string][]string, error) { signingKeyPairData := make(map[string][]string) - signingKeyPairs, response, err := r.clientInfo.ApiClient.KeyPairsSigningAPI.GetSigningKeyPairs(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.KeyPairsSigningAPI.GetSigningKeyPairs(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetSigningKeyPairs", r.ResourceType()) if err != nil { return nil, err @@ -75,16 +83,16 @@ func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) getSigningKeyPa return nil, nil } - if signingKeyPairs == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - signingKeyPairsItems, signingKeyPairsItemsOk := signingKeyPairs.GetItemsOk() - if !signingKeyPairsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, signingKeyPair := range signingKeyPairsItems { + for _, signingKeyPair := range items { _, signingKeyPairRotationSettingsOk := signingKeyPair.GetRotationSettingsOk() if signingKeyPairRotationSettingsOk { @@ -100,3 +108,8 @@ func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) getSigningKeyPa return signingKeyPairData, nil } + +func (r *PingFederateKeypairsSigningKeyRotationSettingsResource) checkKeypairsSigningKeyRotationSettingsData(id string) (bool, error) { + _, response, err := r.clientInfo.PingFederateApiClient.KeyPairsSigningAPI.GetRotationSettings(r.clientInfo.PingFederateContext, id).Execute() + return common.CheckSingletonResource(response, err, "GetRotationSettings", r.ResourceType()) +} diff --git a/internal/connector/pingfederate/resources/keypairs_signing_key_rotation_settings_test.go b/internal/connector/pingfederate/resources/keypairs_signing_key_rotation_settings_test.go new file mode 100644 index 00000000..5dbe3e15 --- /dev/null +++ b/internal/connector/pingfederate/resources/keypairs_signing_key_rotation_settings_test.go @@ -0,0 +1,34 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateKeypairsSigningKeyRotationSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateKeypairsSigningKeyRotationSettings(t, clientInfo) + + _ = tr.CreateResource(t) + defer tr.DeleteResource(t) + + // Test_PingFederateKeypairsSigningKeyRotationSettings only has one dependency + keypairTr := tr.Dependencies[0] + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s_rotation_settings", keypairTr.CreationInfo[testutils_resource.ENUM_ISSUER_DN], keypairTr.CreationInfo[testutils_resource.ENUM_SERIAL_NUMBER]), + ResourceID: keypairTr.CreationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_ssl_server_settings.go b/internal/connector/pingfederate/resources/keypairs_ssl_server_settings.go similarity index 86% rename from internal/connector/pingfederate/resources/pingfederate_keypairs_ssl_server_settings.go rename to internal/connector/pingfederate/resources/keypairs_ssl_server_settings.go index cf7e35af..7b2610d6 100644 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_ssl_server_settings.go +++ b/internal/connector/pingfederate/resources/keypairs_ssl_server_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateKeypairsSslServerSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateKeypairsSslServerSettingsResource -func KeypairsSslServerSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateKeypairsSslServerSettingsResource { +func KeypairsSslServerSettings(clientInfo *connector.ClientInfo) *PingFederateKeypairsSslServerSettingsResource { return &PingFederateKeypairsSslServerSettingsResource{ clientInfo: clientInfo, } @@ -33,7 +33,7 @@ func (r *PingFederateKeypairsSslServerSettingsResource) ExportAll() (*[]connecto importBlocks := []connector.ImportBlock{} keypairsSslServerSettingsId := "keypairs_ssl_server_settings_singleton_id" - keypairsSslServerSettingsName := "Keypairs SSL Server Settings" + keypairsSslServerSettingsName := "Keypairs Ssl Server Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_ssl_server_settings_test.go b/internal/connector/pingfederate/resources/keypairs_ssl_server_settings_test.go similarity index 51% rename from internal/connector/pingfederate/resources/pingfederate_keypairs_ssl_server_settings_test.go rename to internal/connector/pingfederate/resources/keypairs_ssl_server_settings_test.go index 36014527..361b2e57 100644 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_ssl_server_settings_test.go +++ b/internal/connector/pingfederate/resources/keypairs_ssl_server_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateKeypairsSslServerSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.KeypairsSslServerSettings(PingFederateClientInfo) +func Test_PingFederateKeypairsSslServerSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.KeypairsSslServerSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_keypairs_ssl_server_settings", - ResourceName: "Keypairs SSL Server Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Keypairs Ssl Server Settings", ResourceID: "keypairs_ssl_server_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_local_identity_profile.go b/internal/connector/pingfederate/resources/local_identity_profile.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_local_identity_profile.go rename to internal/connector/pingfederate/resources/local_identity_profile.go index 40607f08..ac5a8ba9 100644 --- a/internal/connector/pingfederate/resources/pingfederate_local_identity_profile.go +++ b/internal/connector/pingfederate/resources/local_identity_profile.go @@ -12,11 +12,11 @@ var ( ) type PingFederateLocalIdentityProfileResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateLocalIdentityProfileResource -func LocalIdentityProfile(clientInfo *connector.PingFederateClientInfo) *PingFederateLocalIdentityProfileResource { +func LocalIdentityProfile(clientInfo *connector.ClientInfo) *PingFederateLocalIdentityProfileResource { return &PingFederateLocalIdentityProfileResource{ clientInfo: clientInfo, } @@ -32,22 +32,22 @@ func (r *PingFederateLocalIdentityProfileResource) ExportAll() (*[]connector.Imp importBlocks := []connector.ImportBlock{} - identityProfileData, err := r.getIdentityProfileData() + localIdentityProfileData, err := r.getLocalIdentityProfileData() if err != nil { return nil, err } - for identityProfileId, identityProfileName := range identityProfileData { + for localIdentityProfileId, localIdentityProfileName := range localIdentityProfileData { commentData := map[string]string{ - "Local Identity Profile ID": identityProfileId, - "Local Identity Profile Name": identityProfileName, + "Local Identity Profile ID": localIdentityProfileId, + "Local Identity Profile Name": localIdentityProfileName, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: identityProfileName, - ResourceID: identityProfileId, + ResourceName: localIdentityProfileName, + ResourceID: localIdentityProfileId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -57,10 +57,10 @@ func (r *PingFederateLocalIdentityProfileResource) ExportAll() (*[]connector.Imp return &importBlocks, nil } -func (r *PingFederateLocalIdentityProfileResource) getIdentityProfileData() (map[string]string, error) { - identityProfileData := make(map[string]string) +func (r *PingFederateLocalIdentityProfileResource) getLocalIdentityProfileData() (map[string]string, error) { + localIdentityProfileData := make(map[string]string) - identityProfiles, response, err := r.clientInfo.ApiClient.LocalIdentityIdentityProfilesAPI.GetIdentityProfiles(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.LocalIdentityIdentityProfilesAPI.GetIdentityProfiles(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetIdentityProfiles", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateLocalIdentityProfileResource) getIdentityProfileData() (map return nil, nil } - if identityProfiles == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - identityProfilesItems, identityProfilesItemsOk := identityProfiles.GetItemsOk() - if !identityProfilesItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, identityProfile := range identityProfilesItems { - identityProfileId, identityProfileIdOk := identityProfile.GetIdOk() - identityProfileName, identityProfileNameOk := identityProfile.GetNameOk() + for _, localIdentityProfile := range items { + localIdentityProfileId, localIdentityProfileIdOk := localIdentityProfile.GetIdOk() + localIdentityProfileName, localIdentityProfileNameOk := localIdentityProfile.GetNameOk() - if identityProfileIdOk && identityProfileNameOk { - identityProfileData[*identityProfileId] = *identityProfileName + if localIdentityProfileIdOk && localIdentityProfileNameOk { + localIdentityProfileData[*localIdentityProfileId] = *localIdentityProfileName } } - return identityProfileData, nil + return localIdentityProfileData, nil } diff --git a/internal/connector/pingfederate/resources/local_identity_profile_test.go b/internal/connector/pingfederate/resources/local_identity_profile_test.go new file mode 100644 index 00000000..33f6c7f0 --- /dev/null +++ b/internal/connector/pingfederate/resources/local_identity_profile_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateLocalIdentityProfile(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateLocalIdentityProfile(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_metadata_url.go b/internal/connector/pingfederate/resources/metadata_url.go similarity index 80% rename from internal/connector/pingfederate/resources/pingfederate_metadata_url.go rename to internal/connector/pingfederate/resources/metadata_url.go index 5eabc773..63e278eb 100644 --- a/internal/connector/pingfederate/resources/pingfederate_metadata_url.go +++ b/internal/connector/pingfederate/resources/metadata_url.go @@ -12,11 +12,11 @@ var ( ) type PingFederateMetadataUrlResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateMetadataUrlResource -func MetadataUrl(clientInfo *connector.PingFederateClientInfo) *PingFederateMetadataUrlResource { +func MetadataUrl(clientInfo *connector.ClientInfo) *PingFederateMetadataUrlResource { return &PingFederateMetadataUrlResource{ clientInfo: clientInfo, } @@ -39,8 +39,8 @@ func (r *PingFederateMetadataUrlResource) ExportAll() (*[]connector.ImportBlock, for metadataUrlId, metadataUrlName := range metadataUrlData { commentData := map[string]string{ - "Metadata URL ID": metadataUrlId, - "Metadata URL Name": metadataUrlName, + "Metadata Url ID": metadataUrlId, + "Metadata Url Name": metadataUrlName, "Resource Type": r.ResourceType(), } @@ -60,7 +60,7 @@ func (r *PingFederateMetadataUrlResource) ExportAll() (*[]connector.ImportBlock, func (r *PingFederateMetadataUrlResource) getMetadataUrlData() (map[string]string, error) { metadataUrlData := make(map[string]string) - metadataUrls, response, err := r.clientInfo.ApiClient.MetadataUrlsAPI.GetMetadataUrls(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.MetadataUrlsAPI.GetMetadataUrls(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetMetadataUrls", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateMetadataUrlResource) getMetadataUrlData() (map[string]strin return nil, nil } - if metadataUrls == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - metadataUrlsItems, metadataUrlsItemsOk := metadataUrls.GetItemsOk() - if !metadataUrlsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, metadataUrl := range metadataUrlsItems { + for _, metadataUrl := range items { metadataUrlId, metadataUrlIdOk := metadataUrl.GetIdOk() metadataUrlName, metadataUrlNameOk := metadataUrl.GetNameOk() diff --git a/internal/connector/pingfederate/resources/metadata_url_test.go b/internal/connector/pingfederate/resources/metadata_url_test.go new file mode 100644 index 00000000..8a1c86dd --- /dev/null +++ b/internal/connector/pingfederate/resources/metadata_url_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateMetadataUrl(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateMetadataUrl(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_notification_publisher.go b/internal/connector/pingfederate/resources/notification_publisher.go similarity index 82% rename from internal/connector/pingfederate/resources/pingfederate_notification_publisher.go rename to internal/connector/pingfederate/resources/notification_publisher.go index a8b5c3dd..9c83610f 100644 --- a/internal/connector/pingfederate/resources/pingfederate_notification_publisher.go +++ b/internal/connector/pingfederate/resources/notification_publisher.go @@ -12,11 +12,11 @@ var ( ) type PingFederateNotificationPublisherResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateNotificationPublisherResource -func NotificationPublisher(clientInfo *connector.PingFederateClientInfo) *PingFederateNotificationPublisherResource { +func NotificationPublisher(clientInfo *connector.ClientInfo) *PingFederateNotificationPublisherResource { return &PingFederateNotificationPublisherResource{ clientInfo: clientInfo, } @@ -60,7 +60,7 @@ func (r *PingFederateNotificationPublisherResource) ExportAll() (*[]connector.Im func (r *PingFederateNotificationPublisherResource) getNotificationPublisherData() (map[string]string, error) { notificationPublisherData := make(map[string]string) - notificationPublishers, response, err := r.clientInfo.ApiClient.NotificationPublishersAPI.GetNotificationPublishers(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.NotificationPublishersAPI.GetNotificationPublishers(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetNotificationPublishers", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateNotificationPublisherResource) getNotificationPublisherData return nil, nil } - if notificationPublishers == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - notificationPublishersItems, notificationPublishersItemsOk := notificationPublishers.GetItemsOk() - if !notificationPublishersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, notificationPublisher := range notificationPublishersItems { + for _, notificationPublisher := range items { notificationPublisherId, notificationPublisherIdOk := notificationPublisher.GetIdOk() notificationPublisherName, notificationPublisherNameOk := notificationPublisher.GetNameOk() diff --git a/internal/connector/pingfederate/resources/pingfederate_notification_publisher_settings.go b/internal/connector/pingfederate/resources/notification_publisher_settings.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_notification_publisher_settings.go rename to internal/connector/pingfederate/resources/notification_publisher_settings.go index ed899fbb..a63a039c 100644 --- a/internal/connector/pingfederate/resources/pingfederate_notification_publisher_settings.go +++ b/internal/connector/pingfederate/resources/notification_publisher_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateNotificationPublisherSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateNotificationPublisherSettingsResource -func NotificationPublisherSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateNotificationPublisherSettingsResource { +func NotificationPublisherSettings(clientInfo *connector.ClientInfo) *PingFederateNotificationPublisherSettingsResource { return &PingFederateNotificationPublisherSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_notification_publisher_settings_test.go b/internal/connector/pingfederate/resources/notification_publisher_settings_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_notification_publisher_settings_test.go rename to internal/connector/pingfederate/resources/notification_publisher_settings_test.go index 9a3d1b30..9b8ee6aa 100644 --- a/internal/connector/pingfederate/resources/pingfederate_notification_publisher_settings_test.go +++ b/internal/connector/pingfederate/resources/notification_publisher_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateNotificationPublisherSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.NotificationPublisherSettings(PingFederateClientInfo) +func Test_PingFederateNotificationPublisherSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.NotificationPublisherSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_notification_publisher_settings", + ResourceType: resource.ResourceType(), ResourceName: "Notification Publisher Settings", ResourceID: "notification_publisher_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/notification_publisher_test.go b/internal/connector/pingfederate/resources/notification_publisher_test.go new file mode 100644 index 00000000..4d8c437b --- /dev/null +++ b/internal/connector/pingfederate/resources/notification_publisher_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateNotificationPublisher(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateNotificationPublisher(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/oauth_access_token_manager.go b/internal/connector/pingfederate/resources/oauth_access_token_manager.go new file mode 100644 index 00000000..bec74cc6 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_access_token_manager.go @@ -0,0 +1,91 @@ +package resources + +import ( + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthAccessTokenManagerResource{} +) + +type PingFederateOauthAccessTokenManagerResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthAccessTokenManagerResource +func OauthAccessTokenManager(clientInfo *connector.ClientInfo) *PingFederateOauthAccessTokenManagerResource { + return &PingFederateOauthAccessTokenManagerResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthAccessTokenManagerResource) ResourceType() string { + return "pingfederate_oauth_access_token_manager" +} + +func (r *PingFederateOauthAccessTokenManagerResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthAccessTokenManagerData, err := r.getOauthAccessTokenManagerData() + if err != nil { + return nil, err + } + + for oauthAccessTokenManagerId, oauthAccessTokenManagerName := range oauthAccessTokenManagerData { + commentData := map[string]string{ + "Oauth Access Token Manager ID": oauthAccessTokenManagerId, + "Oauth Access Token Manager Name": oauthAccessTokenManagerName, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: oauthAccessTokenManagerName, + ResourceID: oauthAccessTokenManagerId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthAccessTokenManagerResource) getOauthAccessTokenManagerData() (map[string]string, error) { + oauthAccessTokenManagerData := make(map[string]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthAccessTokenManagersAPI.GetTokenManagers(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetTokenManagers", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, oauthAccessTokenManager := range items { + oauthAccessTokenManagerId, oauthAccessTokenManagerIdOk := oauthAccessTokenManager.GetIdOk() + oauthAccessTokenManagerName, oauthAccessTokenManagerNameOk := oauthAccessTokenManager.GetNameOk() + + if oauthAccessTokenManagerIdOk && oauthAccessTokenManagerNameOk { + oauthAccessTokenManagerData[*oauthAccessTokenManagerId] = *oauthAccessTokenManagerName + } + } + + return oauthAccessTokenManagerData, nil +} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_settings.go b/internal/connector/pingfederate/resources/oauth_access_token_manager_settings.go similarity index 58% rename from internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_settings.go rename to internal/connector/pingfederate/resources/oauth_access_token_manager_settings.go index 7363d688..f60dc183 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_settings.go +++ b/internal/connector/pingfederate/resources/oauth_access_token_manager_settings.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthAccessTokenManagerSettingsResource{} + _ connector.ExportableResource = &PingFederateOauthAccessTokenManagerSettingsResource{} ) -type PingFederateOAuthAccessTokenManagerSettingsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthAccessTokenManagerSettingsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthAccessTokenManagerSettingsResource -func OAuthAccessTokenManagerSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthAccessTokenManagerSettingsResource { - return &PingFederateOAuthAccessTokenManagerSettingsResource{ +// Utility method for creating a PingFederateOauthAccessTokenManagerSettingsResource +func OauthAccessTokenManagerSettings(clientInfo *connector.ClientInfo) *PingFederateOauthAccessTokenManagerSettingsResource { + return &PingFederateOauthAccessTokenManagerSettingsResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthAccessTokenManagerSettingsResource) ResourceType() string { +func (r *PingFederateOauthAccessTokenManagerSettingsResource) ResourceType() string { return "pingfederate_oauth_access_token_manager_settings" } -func (r *PingFederateOAuthAccessTokenManagerSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthAccessTokenManagerSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oauthAccessTokenManagerSettingsId := "oauth_access_token_manager_settings_singleton_id" // #nosec G101 // These variables do not contain sensitive token information - oauthAccessTokenManagerSettingsName := "OAuth Access Token Manager Settings" // #nosec G101 // These variables do not contain sensitive token information + oauthAccessTokenManagerSettingsId := "oauth_access_token_manager_settings_singleton_id" //#nosec G101 -- This is not hard-coded credentials + oauthAccessTokenManagerSettingsName := "Oauth Access Token Manager Settings" //#nosec G101 -- This is not hard-coded credentials commentData := map[string]string{ "Resource Type": r.ResourceType(), diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_settings_test.go b/internal/connector/pingfederate/resources/oauth_access_token_manager_settings_test.go similarity index 50% rename from internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_settings_test.go rename to internal/connector/pingfederate/resources/oauth_access_token_manager_settings_test.go index 68650de0..c56b8315 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_settings_test.go +++ b/internal/connector/pingfederate/resources/oauth_access_token_manager_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateOAuthAccessTokenManagerSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthAccessTokenManagerSettings(PingFederateClientInfo) +func Test_PingFederateOauthAccessTokenManagerSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.OauthAccessTokenManagerSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_oauth_access_token_manager_settings", - ResourceName: "OAuth Access Token Manager Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Oauth Access Token Manager Settings", ResourceID: "oauth_access_token_manager_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/oauth_access_token_manager_test.go b/internal/connector/pingfederate/resources/oauth_access_token_manager_test.go new file mode 100644 index 00000000..a85f5599 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_access_token_manager_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthAccessTokenManager(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthAccessTokenManager(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/oauth_access_token_mapping.go b/internal/connector/pingfederate/resources/oauth_access_token_mapping.go new file mode 100644 index 00000000..59543e47 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_access_token_mapping.go @@ -0,0 +1,88 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthAccessTokenMappingResource{} +) + +type PingFederateOauthAccessTokenMappingResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthAccessTokenMappingResource +func OauthAccessTokenMapping(clientInfo *connector.ClientInfo) *PingFederateOauthAccessTokenMappingResource { + return &PingFederateOauthAccessTokenMappingResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthAccessTokenMappingResource) ResourceType() string { + return "pingfederate_oauth_access_token_mapping" +} + +func (r *PingFederateOauthAccessTokenMappingResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthAccessTokenMappingData, err := r.getOauthAccessTokenMappingData() + if err != nil { + return nil, err + } + + for oauthAccessTokenMappingId, oauthAccessTokenMappingContextType := range oauthAccessTokenMappingData { + commentData := map[string]string{ + "Oauth Access Token Mapping ID": oauthAccessTokenMappingId, + "Oauth Access Token Mapping Context Type": oauthAccessTokenMappingContextType, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", oauthAccessTokenMappingId, oauthAccessTokenMappingContextType), + ResourceID: oauthAccessTokenMappingId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthAccessTokenMappingResource) getOauthAccessTokenMappingData() (map[string]string, error) { + oauthAccessTokenMappingData := make(map[string]string) + + mappings, response, err := r.clientInfo.PingFederateApiClient.OauthAccessTokenMappingsAPI.GetMappings(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetMappings", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + for _, oauthAccessTokenMapping := range mappings { + oauthAccessTokenMappingId, oauthAccessTokenMappingIdOk := oauthAccessTokenMapping.GetIdOk() + oauthAccessTokenMappingContext, oauthAccessTokenMappingContextOk := oauthAccessTokenMapping.GetContextOk() + + if oauthAccessTokenMappingIdOk && oauthAccessTokenMappingContextOk { + oauthAccessTokenMappingContextType, oauthAccessTokenMappingContextTypeOk := oauthAccessTokenMappingContext.GetTypeOk() + + if oauthAccessTokenMappingContextTypeOk { + oauthAccessTokenMappingData[*oauthAccessTokenMappingId] = *oauthAccessTokenMappingContextType + } + } + } + + return oauthAccessTokenMappingData, nil +} diff --git a/internal/connector/pingfederate/resources/oauth_access_token_mapping_test.go b/internal/connector/pingfederate/resources/oauth_access_token_mapping_test.go new file mode 100644 index 00000000..432c2620 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_access_token_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthAccessTokenMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthAccessTokenMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", creationInfo[testutils_resource.ENUM_ID], creationInfo[testutils_resource.ENUM_CONTEXT_TYPE]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/oauth_authentication_policy_contract_mapping.go b/internal/connector/pingfederate/resources/oauth_authentication_policy_contract_mapping.go new file mode 100644 index 00000000..50a14702 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_authentication_policy_contract_mapping.go @@ -0,0 +1,91 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthAuthenticationPolicyContractMappingResource{} +) + +type PingFederateOauthAuthenticationPolicyContractMappingResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthAuthenticationPolicyContractMappingResource +func OauthAuthenticationPolicyContractMapping(clientInfo *connector.ClientInfo) *PingFederateOauthAuthenticationPolicyContractMappingResource { + return &PingFederateOauthAuthenticationPolicyContractMappingResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthAuthenticationPolicyContractMappingResource) ResourceType() string { + return "pingfederate_oauth_authentication_policy_contract_mapping" +} + +func (r *PingFederateOauthAuthenticationPolicyContractMappingResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthAuthenticationPolicyContractMappingData, err := r.getOauthAuthenticationPolicyContractMappingData() + if err != nil { + return nil, err + } + + for _, oauthAuthenticationPolicyContractMappingId := range oauthAuthenticationPolicyContractMappingData { + commentData := map[string]string{ + "Oauth Authentication Policy Contract Mapping ID": oauthAuthenticationPolicyContractMappingId, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_mapping", oauthAuthenticationPolicyContractMappingId), + ResourceID: oauthAuthenticationPolicyContractMappingId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthAuthenticationPolicyContractMappingResource) getOauthAuthenticationPolicyContractMappingData() ([]string, error) { + oauthAuthenticationPolicyContractMappingData := []string{} + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthAuthenticationPolicyContractMappingsAPI.GetApcMappings(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetApcMappings", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, oauthAuthenticationPolicyContractMapping := range items { + oauthAuthenticationPolicyContractMappingId, oauthAuthenticationPolicyContractMappingIdOk := oauthAuthenticationPolicyContractMapping.GetIdOk() + + if oauthAuthenticationPolicyContractMappingIdOk { + oauthAuthenticationPolicyContractMappingData = append(oauthAuthenticationPolicyContractMappingData, *oauthAuthenticationPolicyContractMappingId) + } + } + + return oauthAuthenticationPolicyContractMappingData, nil +} diff --git a/internal/connector/pingfederate/resources/oauth_authentication_policy_contract_mapping_test.go b/internal/connector/pingfederate/resources/oauth_authentication_policy_contract_mapping_test.go new file mode 100644 index 00000000..ddd84b3a --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_authentication_policy_contract_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthAuthenticationPolicyContractMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthAuthenticationPolicyContractMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_mapping", creationInfo[testutils_resource.ENUM_ID]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/oauth_ciba_server_policy_request_policy.go b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_request_policy.go new file mode 100644 index 00000000..9a863e49 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_request_policy.go @@ -0,0 +1,91 @@ +package resources + +import ( + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthCibaServerPolicyRequestPolicyResource{} +) + +type PingFederateOauthCibaServerPolicyRequestPolicyResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthCibaServerPolicyRequestPolicyResource +func OauthCibaServerPolicyRequestPolicy(clientInfo *connector.ClientInfo) *PingFederateOauthCibaServerPolicyRequestPolicyResource { + return &PingFederateOauthCibaServerPolicyRequestPolicyResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthCibaServerPolicyRequestPolicyResource) ResourceType() string { + return "pingfederate_oauth_ciba_server_policy_request_policy" +} + +func (r *PingFederateOauthCibaServerPolicyRequestPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthCibaServerPolicyRequestPolicyData, err := r.getOauthCibaServerPolicyRequestPolicyData() + if err != nil { + return nil, err + } + + for oauthCibaServerPolicyRequestPolicyId, oauthCibaServerPolicyRequestPolicyName := range oauthCibaServerPolicyRequestPolicyData { + commentData := map[string]string{ + "Oauth Ciba Server Policy Request Policy ID": oauthCibaServerPolicyRequestPolicyId, + "Oauth Ciba Server Policy Request Policy Name": oauthCibaServerPolicyRequestPolicyName, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: oauthCibaServerPolicyRequestPolicyName, + ResourceID: oauthCibaServerPolicyRequestPolicyId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthCibaServerPolicyRequestPolicyResource) getOauthCibaServerPolicyRequestPolicyData() (map[string]string, error) { + oauthCibaServerPolicyRequestPolicyData := make(map[string]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthCibaServerPolicyAPI.GetCibaServerPolicies(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetCibaServerPolicies", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, oauthCibaServerPolicyRequestPolicy := range items { + oauthCibaServerPolicyRequestPolicyId, oauthCibaServerPolicyRequestPolicyIdOk := oauthCibaServerPolicyRequestPolicy.GetIdOk() + oauthCibaServerPolicyRequestPolicyName, oauthCibaServerPolicyRequestPolicyNameOk := oauthCibaServerPolicyRequestPolicy.GetNameOk() + + if oauthCibaServerPolicyRequestPolicyIdOk && oauthCibaServerPolicyRequestPolicyNameOk { + oauthCibaServerPolicyRequestPolicyData[*oauthCibaServerPolicyRequestPolicyId] = *oauthCibaServerPolicyRequestPolicyName + } + } + + return oauthCibaServerPolicyRequestPolicyData, nil +} diff --git a/internal/connector/pingfederate/resources/oauth_ciba_server_policy_request_policy_test.go b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_request_policy_test.go new file mode 100644 index 00000000..b3751aac --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_request_policy_test.go @@ -0,0 +1,33 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthCibaServerPolicyRequestPolicy(t *testing.T) { + // TODO: Re-enable this test after PingFederate OOB Plugin API is triaged + t.SkipNow() + + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthCibaServerPolicyRequestPolicy(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_settings.go b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_settings.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_settings.go rename to internal/connector/pingfederate/resources/oauth_ciba_server_policy_settings.go index 93d373c5..f7e2ad25 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_settings.go +++ b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_settings.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthCIBAServerPolicySettingsResource{} + _ connector.ExportableResource = &PingFederateOauthCibaServerPolicySettingsResource{} ) -type PingFederateOAuthCIBAServerPolicySettingsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthCibaServerPolicySettingsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthCIBAServerPolicySettingsResource -func OAuthCIBAServerPolicySettings(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthCIBAServerPolicySettingsResource { - return &PingFederateOAuthCIBAServerPolicySettingsResource{ +// Utility method for creating a PingFederateOauthCibaServerPolicySettingsResource +func OauthCibaServerPolicySettings(clientInfo *connector.ClientInfo) *PingFederateOauthCibaServerPolicySettingsResource { + return &PingFederateOauthCibaServerPolicySettingsResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthCIBAServerPolicySettingsResource) ResourceType() string { +func (r *PingFederateOauthCibaServerPolicySettingsResource) ResourceType() string { return "pingfederate_oauth_ciba_server_policy_settings" } -func (r *PingFederateOAuthCIBAServerPolicySettingsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthCibaServerPolicySettingsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oAuthCIBAServerPolicySettingsId := "oauth_ciba_server_policy_settings_singleton_id" - oAuthCIBAServerPolicySettingsName := "OAuth CIBA Server Policy Settings" + oauthCibaServerPolicySettingsId := "oauth_ciba_server_policy_settings_singleton_id" + oauthCibaServerPolicySettingsName := "Oauth Ciba Server Policy Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateOAuthCIBAServerPolicySettingsResource) ExportAll() (*[]conn importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: oAuthCIBAServerPolicySettingsName, - ResourceID: oAuthCIBAServerPolicySettingsId, + ResourceName: oauthCibaServerPolicySettingsName, + ResourceID: oauthCibaServerPolicySettingsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_settings_test.go b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_settings_test.go similarity index 50% rename from internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_settings_test.go rename to internal/connector/pingfederate/resources/oauth_ciba_server_policy_settings_test.go index 2bd2cf15..0e7076b6 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_settings_test.go +++ b/internal/connector/pingfederate/resources/oauth_ciba_server_policy_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateOAuthCIBAServerPolicySettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthCIBAServerPolicySettings(PingFederateClientInfo) +func Test_PingFederateOauthCibaServerPolicySettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.OauthCibaServerPolicySettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_oauth_ciba_server_policy_settings", - ResourceName: "OAuth CIBA Server Policy Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Oauth Ciba Server Policy Settings", ResourceID: "oauth_ciba_server_policy_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_client.go b/internal/connector/pingfederate/resources/oauth_client.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_oauth_client.go rename to internal/connector/pingfederate/resources/oauth_client.go index ce364a4e..75aecb4f 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_client.go +++ b/internal/connector/pingfederate/resources/oauth_client.go @@ -8,39 +8,39 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthClientResource{} + _ connector.ExportableResource = &PingFederateOauthClientResource{} ) -type PingFederateOAuthClientResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthClientResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthClientResource -func OAuthClient(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthClientResource { - return &PingFederateOAuthClientResource{ +// Utility method for creating a PingFederateOauthClientResource +func OauthClient(clientInfo *connector.ClientInfo) *PingFederateOauthClientResource { + return &PingFederateOauthClientResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthClientResource) ResourceType() string { +func (r *PingFederateOauthClientResource) ResourceType() string { return "pingfederate_oauth_client" } -func (r *PingFederateOAuthClientResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthClientResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oauthClientData, err := r.getOAuthClientData() + oauthClientData, err := r.getOauthClientData() if err != nil { return nil, err } for oauthClientId, oauthClientName := range oauthClientData { commentData := map[string]string{ - "OAuth Client ID": oauthClientId, - "OAuth Client Name": oauthClientName, + "Oauth Client ID": oauthClientId, + "Oauth Client Name": oauthClientName, "Resource Type": r.ResourceType(), } @@ -57,10 +57,10 @@ func (r *PingFederateOAuthClientResource) ExportAll() (*[]connector.ImportBlock, return &importBlocks, nil } -func (r *PingFederateOAuthClientResource) getOAuthClientData() (map[string]string, error) { +func (r *PingFederateOauthClientResource) getOauthClientData() (map[string]string, error) { oauthClientData := make(map[string]string) - clients, response, err := r.clientInfo.ApiClient.OauthClientsAPI.GetOauthClients(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthClientsAPI.GetOauthClients(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetOauthClients", r.ResourceType()) if err != nil { return nil, err @@ -69,21 +69,21 @@ func (r *PingFederateOAuthClientResource) getOAuthClientData() (map[string]strin return nil, nil } - if clients == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - clientsItems, clientsItemsOk := clients.GetItemsOk() - if !clientsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, client := range clientsItems { - clientId, clientIdOk := client.GetClientIdOk() - clientName, clientNameOk := client.GetNameOk() + for _, oauthClient := range items { + oauthClientId, oauthClientIdOk := oauthClient.GetClientIdOk() + oauthClientName, oauthClientNameOk := oauthClient.GetNameOk() - if clientIdOk && clientNameOk { - oauthClientData[*clientId] = *clientName + if oauthClientIdOk && oauthClientNameOk { + oauthClientData[*oauthClientId] = *oauthClientName } } diff --git a/internal/connector/pingfederate/resources/oauth_client_registration_policy.go b/internal/connector/pingfederate/resources/oauth_client_registration_policy.go new file mode 100644 index 00000000..70ab4bb2 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_client_registration_policy.go @@ -0,0 +1,91 @@ +package resources + +import ( + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthClientRegistrationPolicyResource{} +) + +type PingFederateOauthClientRegistrationPolicyResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthClientRegistrationPolicyResource +func OauthClientRegistrationPolicy(clientInfo *connector.ClientInfo) *PingFederateOauthClientRegistrationPolicyResource { + return &PingFederateOauthClientRegistrationPolicyResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthClientRegistrationPolicyResource) ResourceType() string { + return "pingfederate_oauth_client_registration_policy" +} + +func (r *PingFederateOauthClientRegistrationPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthClientRegistrationPolicyData, err := r.getOauthClientRegistrationPolicyData() + if err != nil { + return nil, err + } + + for oauthClientRegistrationPolicyId, oauthClientRegistrationPolicyName := range oauthClientRegistrationPolicyData { + commentData := map[string]string{ + "Oauth Client Registration Policy ID": oauthClientRegistrationPolicyId, + "Oauth Client Registration Policy Name": oauthClientRegistrationPolicyName, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: oauthClientRegistrationPolicyName, + ResourceID: oauthClientRegistrationPolicyId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthClientRegistrationPolicyResource) getOauthClientRegistrationPolicyData() (map[string]string, error) { + oauthClientRegistrationPolicyData := make(map[string]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthClientRegistrationPoliciesAPI.GetDynamicClientRegistrationPolicies(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetDynamicClientRegistrationPolicies", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, oauthClientRegistrationPolicy := range items { + oauthClientRegistrationPolicyId, oauthClientRegistrationPolicyIdOk := oauthClientRegistrationPolicy.GetIdOk() + oauthClientRegistrationPolicyName, oauthClientRegistrationPolicyNameOk := oauthClientRegistrationPolicy.GetNameOk() + + if oauthClientRegistrationPolicyIdOk && oauthClientRegistrationPolicyNameOk { + oauthClientRegistrationPolicyData[*oauthClientRegistrationPolicyId] = *oauthClientRegistrationPolicyName + } + } + + return oauthClientRegistrationPolicyData, nil +} diff --git a/internal/connector/pingfederate/resources/oauth_client_registration_policy_test.go b/internal/connector/pingfederate/resources/oauth_client_registration_policy_test.go new file mode 100644 index 00000000..2283c34a --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_client_registration_policy_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthClientRegistrationPolicy(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthClientRegistrationPolicy(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_client_settings.go b/internal/connector/pingfederate/resources/oauth_client_settings.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_oauth_client_settings.go rename to internal/connector/pingfederate/resources/oauth_client_settings.go index e39a53b2..f42882e2 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_client_settings.go +++ b/internal/connector/pingfederate/resources/oauth_client_settings.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthClientSettingsResource{} + _ connector.ExportableResource = &PingFederateOauthClientSettingsResource{} ) -type PingFederateOAuthClientSettingsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthClientSettingsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthClientSettingsResource -func OAuthClientSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthClientSettingsResource { - return &PingFederateOAuthClientSettingsResource{ +// Utility method for creating a PingFederateOauthClientSettingsResource +func OauthClientSettings(clientInfo *connector.ClientInfo) *PingFederateOauthClientSettingsResource { + return &PingFederateOauthClientSettingsResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthClientSettingsResource) ResourceType() string { +func (r *PingFederateOauthClientSettingsResource) ResourceType() string { return "pingfederate_oauth_client_settings" } -func (r *PingFederateOAuthClientSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthClientSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oAuthClientSettingsId := "oauth_client_settings_singleton_id" - oAuthClientSettingsName := "OAuth Client Settings" + oauthClientSettingsId := "oauth_client_settings_singleton_id" + oauthClientSettingsName := "Oauth Client Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateOAuthClientSettingsResource) ExportAll() (*[]connector.Impo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: oAuthClientSettingsName, - ResourceID: oAuthClientSettingsId, + ResourceName: oauthClientSettingsName, + ResourceID: oauthClientSettingsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_client_settings_test.go b/internal/connector/pingfederate/resources/oauth_client_settings_test.go similarity index 52% rename from internal/connector/pingfederate/resources/pingfederate_oauth_client_settings_test.go rename to internal/connector/pingfederate/resources/oauth_client_settings_test.go index 7f805f98..7b8008d1 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_client_settings_test.go +++ b/internal/connector/pingfederate/resources/oauth_client_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateOAuthClientSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthClientSettings(PingFederateClientInfo) +func Test_PingFederateOauthClientSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.OauthClientSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_oauth_client_settings", - ResourceName: "OAuth Client Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Oauth Client Settings", ResourceID: "oauth_client_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/oauth_client_test.go b/internal/connector/pingfederate/resources/oauth_client_test.go new file mode 100644 index 00000000..385dbcbf --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_client_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthClient(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthClient(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/oauth_idp_adapter_mapping.go b/internal/connector/pingfederate/resources/oauth_idp_adapter_mapping.go new file mode 100644 index 00000000..953c3efd --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_idp_adapter_mapping.go @@ -0,0 +1,91 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthIdpAdapterMappingResource{} +) + +type PingFederateOauthIdpAdapterMappingResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthIdpAdapterMappingResource +func OauthIdpAdapterMapping(clientInfo *connector.ClientInfo) *PingFederateOauthIdpAdapterMappingResource { + return &PingFederateOauthIdpAdapterMappingResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthIdpAdapterMappingResource) ResourceType() string { + return "pingfederate_oauth_idp_adapter_mapping" +} + +func (r *PingFederateOauthIdpAdapterMappingResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthIdpAdapterMappingData, err := r.getOauthIdpAdapterMappingData() + if err != nil { + return nil, err + } + + for _, oauthIdpAdapterMappingId := range oauthIdpAdapterMappingData { + commentData := map[string]string{ + "Oauth Idp Adapter Mapping ID": oauthIdpAdapterMappingId, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_mapping", oauthIdpAdapterMappingId), + ResourceID: oauthIdpAdapterMappingId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthIdpAdapterMappingResource) getOauthIdpAdapterMappingData() ([]string, error) { + oauthIdpAdapterMappingData := []string{} + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthIdpAdapterMappingsAPI.GetIdpAdapterMappings(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetIdpAdapterMappings", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, oauthIdpAdapterMapping := range items { + oauthIdpAdapterMappingId, oauthIdpAdapterMappingIdOk := oauthIdpAdapterMapping.GetIdOk() + + if oauthIdpAdapterMappingIdOk { + oauthIdpAdapterMappingData = append(oauthIdpAdapterMappingData, *oauthIdpAdapterMappingId) + } + } + + return oauthIdpAdapterMappingData, nil +} diff --git a/internal/connector/pingfederate/resources/oauth_idp_adapter_mapping_test.go b/internal/connector/pingfederate/resources/oauth_idp_adapter_mapping_test.go new file mode 100644 index 00000000..9685af8f --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_idp_adapter_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthIdpAdapterMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthIdpAdapterMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_mapping", creationInfo[testutils_resource.ENUM_ID]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_issuer.go b/internal/connector/pingfederate/resources/oauth_issuer.go similarity index 53% rename from internal/connector/pingfederate/resources/pingfederate_oauth_issuer.go rename to internal/connector/pingfederate/resources/oauth_issuer.go index e71d5c4b..3ba620ce 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_issuer.go +++ b/internal/connector/pingfederate/resources/oauth_issuer.go @@ -8,39 +8,39 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthIssuerResource{} + _ connector.ExportableResource = &PingFederateOauthIssuerResource{} ) -type PingFederateOAuthIssuerResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthIssuerResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthIssuerResource -func OAuthIssuer(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthIssuerResource { - return &PingFederateOAuthIssuerResource{ +// Utility method for creating a PingFederateOauthIssuerResource +func OauthIssuer(clientInfo *connector.ClientInfo) *PingFederateOauthIssuerResource { + return &PingFederateOauthIssuerResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthIssuerResource) ResourceType() string { +func (r *PingFederateOauthIssuerResource) ResourceType() string { return "pingfederate_oauth_issuer" } -func (r *PingFederateOAuthIssuerResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthIssuerResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oauthIssuerData, err := r.getOAuthIssuerData() + oauthIssuerData, err := r.getOauthIssuerData() if err != nil { return nil, err } for oauthIssuerId, oauthIssuerName := range oauthIssuerData { commentData := map[string]string{ - "OAuth Issuer ID": oauthIssuerId, - "OAuth Issuer Name": oauthIssuerName, + "Oauth Issuer ID": oauthIssuerId, + "Oauth Issuer Name": oauthIssuerName, "Resource Type": r.ResourceType(), } @@ -57,10 +57,10 @@ func (r *PingFederateOAuthIssuerResource) ExportAll() (*[]connector.ImportBlock, return &importBlocks, nil } -func (r *PingFederateOAuthIssuerResource) getOAuthIssuerData() (map[string]string, error) { - issuerData := make(map[string]string) +func (r *PingFederateOauthIssuerResource) getOauthIssuerData() (map[string]string, error) { + oauthIssuerData := make(map[string]string) - issuers, response, err := r.clientInfo.ApiClient.OauthIssuersAPI.GetOauthIssuers(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthIssuersAPI.GetOauthIssuers(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetOauthIssuers", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateOAuthIssuerResource) getOAuthIssuerData() (map[string]strin return nil, nil } - if issuers == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - issuersItems, issuersItemsOk := issuers.GetItemsOk() - if !issuersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, issuer := range issuersItems { - issuerId, issuerIdOk := issuer.GetIdOk() - issuerName, issuerNameOk := issuer.GetNameOk() + for _, oauthIssuer := range items { + oauthIssuerId, oauthIssuerIdOk := oauthIssuer.GetIdOk() + oauthIssuerName, oauthIssuerNameOk := oauthIssuer.GetNameOk() - if issuerIdOk && issuerNameOk { - issuerData[*issuerId] = *issuerName + if oauthIssuerIdOk && oauthIssuerNameOk { + oauthIssuerData[*oauthIssuerId] = *oauthIssuerName } } - return issuerData, nil + return oauthIssuerData, nil } diff --git a/internal/connector/pingfederate/resources/oauth_issuer_test.go b/internal/connector/pingfederate/resources/oauth_issuer_test.go new file mode 100644 index 00000000..dddf61b3 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_issuer_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthIssuer(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthIssuer(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_server_settings.go b/internal/connector/pingfederate/resources/oauth_server_settings.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_oauth_server_settings.go rename to internal/connector/pingfederate/resources/oauth_server_settings.go index ee46cf1e..08c2a73c 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_server_settings.go +++ b/internal/connector/pingfederate/resources/oauth_server_settings.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthServerSettingsResource{} + _ connector.ExportableResource = &PingFederateOauthServerSettingsResource{} ) -type PingFederateOAuthServerSettingsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthServerSettingsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthServerSettingsResource -func OAuthServerSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthServerSettingsResource { - return &PingFederateOAuthServerSettingsResource{ +// Utility method for creating a PingFederateOauthServerSettingsResource +func OauthServerSettings(clientInfo *connector.ClientInfo) *PingFederateOauthServerSettingsResource { + return &PingFederateOauthServerSettingsResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthServerSettingsResource) ResourceType() string { +func (r *PingFederateOauthServerSettingsResource) ResourceType() string { return "pingfederate_oauth_server_settings" } -func (r *PingFederateOAuthServerSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthServerSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oAuthServerSettingsId := "oauth_server_settings_singleton_id" - oAuthServerSettingsName := "OAuth Server Settings" + oauthServerSettingsId := "oauth_server_settings_singleton_id" + oauthServerSettingsName := "Oauth Server Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateOAuthServerSettingsResource) ExportAll() (*[]connector.Impo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: oAuthServerSettingsName, - ResourceID: oAuthServerSettingsId, + ResourceName: oauthServerSettingsName, + ResourceID: oauthServerSettingsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_server_settings_test.go b/internal/connector/pingfederate/resources/oauth_server_settings_test.go similarity index 52% rename from internal/connector/pingfederate/resources/pingfederate_oauth_server_settings_test.go rename to internal/connector/pingfederate/resources/oauth_server_settings_test.go index 1f27934e..ae489e5f 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_server_settings_test.go +++ b/internal/connector/pingfederate/resources/oauth_server_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateOAuthServerSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthServerSettings(PingFederateClientInfo) +func Test_PingFederateOauthServerSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.OauthServerSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_oauth_server_settings", - ResourceName: "OAuth Server Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Oauth Server Settings", ResourceID: "oauth_server_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_generator_settings.go b/internal/connector/pingfederate/resources/oauth_token_exchange_generator_settings.go similarity index 58% rename from internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_generator_settings.go rename to internal/connector/pingfederate/resources/oauth_token_exchange_generator_settings.go index 3952ed53..9efb0afc 100644 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_generator_settings.go +++ b/internal/connector/pingfederate/resources/oauth_token_exchange_generator_settings.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOAuthTokenExchangeGeneratorSettingsResource{} + _ connector.ExportableResource = &PingFederateOauthTokenExchangeGeneratorSettingsResource{} ) -type PingFederateOAuthTokenExchangeGeneratorSettingsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOauthTokenExchangeGeneratorSettingsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOAuthTokenExchangeGeneratorSettingsResource -func OAuthTokenExchangeGeneratorSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthTokenExchangeGeneratorSettingsResource { - return &PingFederateOAuthTokenExchangeGeneratorSettingsResource{ +// Utility method for creating a PingFederateOauthTokenExchangeGeneratorSettingsResource +func OauthTokenExchangeGeneratorSettings(clientInfo *connector.ClientInfo) *PingFederateOauthTokenExchangeGeneratorSettingsResource { + return &PingFederateOauthTokenExchangeGeneratorSettingsResource{ clientInfo: clientInfo, } } -func (r *PingFederateOAuthTokenExchangeGeneratorSettingsResource) ResourceType() string { +func (r *PingFederateOauthTokenExchangeGeneratorSettingsResource) ResourceType() string { return "pingfederate_oauth_token_exchange_generator_settings" } -func (r *PingFederateOAuthTokenExchangeGeneratorSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOauthTokenExchangeGeneratorSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - oauthTokenExchangeGeneratorSettingsId := "oauth_token_exchange_generator_settings_singleton_id" // #nosec G101 // These variables do not contain sensitive token information - oauthTokenExchangeGeneratorSettingsName := "OAuth Token Exchange Generator Settings" // #nosec G101 // These variables do not contain sensitive token information + oauthTokenExchangeGeneratorSettingsId := "oauth_token_exchange_generator_settings_singleton_id" //#nosec G101 -- This is not hard-coded credentials + oauthTokenExchangeGeneratorSettingsName := "Oauth Token Exchange Generator Settings" //#nosec G101 -- This is not hard-coded credentials commentData := map[string]string{ "Resource Type": r.ResourceType(), diff --git a/internal/connector/pingfederate/resources/oauth_token_exchange_generator_settings_test.go b/internal/connector/pingfederate/resources/oauth_token_exchange_generator_settings_test.go new file mode 100644 index 00000000..4cc54204 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_token_exchange_generator_settings_test.go @@ -0,0 +1,26 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" +) + +func Test_PingFederateOauthTokenExchangeGeneratorSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.OauthTokenExchangeGeneratorSettings(clientInfo) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: resource.ResourceType(), + ResourceName: "Oauth Token Exchange Generator Settings", + ResourceID: "oauth_token_exchange_generator_settings_singleton_id", + }, + } + + testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/oauth_token_exchange_token_generator_mapping.go b/internal/connector/pingfederate/resources/oauth_token_exchange_token_generator_mapping.go new file mode 100644 index 00000000..59753b6b --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_token_exchange_token_generator_mapping.go @@ -0,0 +1,98 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOauthTokenExchangeTokenGeneratorMappingResource{} +) + +type PingFederateOauthTokenExchangeTokenGeneratorMappingResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOauthTokenExchangeTokenGeneratorMappingResource +func OauthTokenExchangeTokenGeneratorMapping(clientInfo *connector.ClientInfo) *PingFederateOauthTokenExchangeTokenGeneratorMappingResource { + return &PingFederateOauthTokenExchangeTokenGeneratorMappingResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOauthTokenExchangeTokenGeneratorMappingResource) ResourceType() string { + return "pingfederate_oauth_token_exchange_token_generator_mapping" +} + +func (r *PingFederateOauthTokenExchangeTokenGeneratorMappingResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + oauthTokenExchangeTokenGeneratorMappingData, err := r.getOauthTokenExchangeTokenGeneratorMappingData() + if err != nil { + return nil, err + } + + for oauthTokenExchangeTokenGeneratorMappingId, oauthTokenExchangeTokenGeneratorMappingInfo := range oauthTokenExchangeTokenGeneratorMappingData { + oauthTokenExchangeTokenGeneratorMappingSourceId := oauthTokenExchangeTokenGeneratorMappingInfo[0] + oauthTokenExchangeTokenGeneratorMappingTargetId := oauthTokenExchangeTokenGeneratorMappingInfo[1] + + commentData := map[string]string{ + "Oauth Token Exchange Token Generator Mapping ID": oauthTokenExchangeTokenGeneratorMappingId, + "Processor Policy ID": oauthTokenExchangeTokenGeneratorMappingSourceId, + "Token Generator ID": oauthTokenExchangeTokenGeneratorMappingTargetId, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", oauthTokenExchangeTokenGeneratorMappingSourceId, oauthTokenExchangeTokenGeneratorMappingTargetId), + ResourceID: oauthTokenExchangeTokenGeneratorMappingId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOauthTokenExchangeTokenGeneratorMappingResource) getOauthTokenExchangeTokenGeneratorMappingData() (map[string][]string, error) { + oauthTokenExchangeTokenGeneratorMappingData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthTokenExchangeTokenGeneratorMappingsAPI.GetTokenGeneratorMappings(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetTokenGeneratorMappings", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, oauthTokenExchangeTokenGeneratorMapping := range items { + oauthTokenExchangeTokenGeneratorMappingId, oauthTokenExchangeTokenGeneratorMappingIdOk := oauthTokenExchangeTokenGeneratorMapping.GetIdOk() + oauthTokenExchangeTokenGeneratorMappingSourceId, oauthTokenExchangeTokenGeneratorMappingSourceIdOk := oauthTokenExchangeTokenGeneratorMapping.GetSourceIdOk() + oauthTokenExchangeTokenGeneratorMappingTargetId, oauthTokenExchangeTokenGeneratorMappingTargetIdOk := oauthTokenExchangeTokenGeneratorMapping.GetTargetIdOk() + + if oauthTokenExchangeTokenGeneratorMappingIdOk && oauthTokenExchangeTokenGeneratorMappingSourceIdOk && oauthTokenExchangeTokenGeneratorMappingTargetIdOk { + oauthTokenExchangeTokenGeneratorMappingData[*oauthTokenExchangeTokenGeneratorMappingId] = []string{*oauthTokenExchangeTokenGeneratorMappingSourceId, *oauthTokenExchangeTokenGeneratorMappingTargetId} + } + } + + return oauthTokenExchangeTokenGeneratorMappingData, nil +} diff --git a/internal/connector/pingfederate/resources/oauth_token_exchange_token_generator_mapping_test.go b/internal/connector/pingfederate/resources/oauth_token_exchange_token_generator_mapping_test.go new file mode 100644 index 00000000..e7cc6884 --- /dev/null +++ b/internal/connector/pingfederate/resources/oauth_token_exchange_token_generator_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOauthTokenExchangeTokenGeneratorMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOauthTokenExchangeTokenGeneratorMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", creationInfo[testutils_resource.ENUM_SOURCE_ID], creationInfo[testutils_resource.ENUM_TARGET_ID]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/openid_connect_policy.go b/internal/connector/pingfederate/resources/openid_connect_policy.go new file mode 100644 index 00000000..169a47cf --- /dev/null +++ b/internal/connector/pingfederate/resources/openid_connect_policy.go @@ -0,0 +1,91 @@ +package resources + +import ( + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateOpenidConnectPolicyResource{} +) + +type PingFederateOpenidConnectPolicyResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateOpenidConnectPolicyResource +func OpenidConnectPolicy(clientInfo *connector.ClientInfo) *PingFederateOpenidConnectPolicyResource { + return &PingFederateOpenidConnectPolicyResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateOpenidConnectPolicyResource) ResourceType() string { + return "pingfederate_openid_connect_policy" +} + +func (r *PingFederateOpenidConnectPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + openidConnectPolicyData, err := r.getOpenidConnectPolicyData() + if err != nil { + return nil, err + } + + for openidConnectPolicyId, openidConnectPolicyName := range openidConnectPolicyData { + commentData := map[string]string{ + "Openid Connect Policy ID": openidConnectPolicyId, + "Openid Connect Policy Name": openidConnectPolicyName, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: openidConnectPolicyName, + ResourceID: openidConnectPolicyId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateOpenidConnectPolicyResource) getOpenidConnectPolicyData() (map[string]string, error) { + openidConnectPolicyData := make(map[string]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.OauthOpenIdConnectAPI.GetOIDCPolicies(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetOIDCPolicies", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, openidConnectPolicy := range items { + openidConnectPolicyId, openidConnectPolicyIdOk := openidConnectPolicy.GetIdOk() + openidConnectPolicyName, openidConnectPolicyNameOk := openidConnectPolicy.GetNameOk() + + if openidConnectPolicyIdOk && openidConnectPolicyNameOk { + openidConnectPolicyData[*openidConnectPolicyId] = *openidConnectPolicyName + } + } + + return openidConnectPolicyData, nil +} diff --git a/internal/connector/pingfederate/resources/openid_connect_policy_test.go b/internal/connector/pingfederate/resources/openid_connect_policy_test.go new file mode 100644 index 00000000..bb6a17bd --- /dev/null +++ b/internal/connector/pingfederate/resources/openid_connect_policy_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateOpenidConnectPolicy(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateOpenidConnectPolicy(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_openid_connect_settings.go b/internal/connector/pingfederate/resources/openid_connect_settings.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_openid_connect_settings.go rename to internal/connector/pingfederate/resources/openid_connect_settings.go index 22f4fa0c..89d4af98 100644 --- a/internal/connector/pingfederate/resources/pingfederate_openid_connect_settings.go +++ b/internal/connector/pingfederate/resources/openid_connect_settings.go @@ -8,32 +8,32 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateOpenIDConnectSettingsResource{} + _ connector.ExportableResource = &PingFederateOpenidConnectSettingsResource{} ) -type PingFederateOpenIDConnectSettingsResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederateOpenidConnectSettingsResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateOpenIDConnectSettingsResource -func OpenIDConnectSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateOpenIDConnectSettingsResource { - return &PingFederateOpenIDConnectSettingsResource{ +// Utility method for creating a PingFederateOpenidConnectSettingsResource +func OpenidConnectSettings(clientInfo *connector.ClientInfo) *PingFederateOpenidConnectSettingsResource { + return &PingFederateOpenidConnectSettingsResource{ clientInfo: clientInfo, } } -func (r *PingFederateOpenIDConnectSettingsResource) ResourceType() string { +func (r *PingFederateOpenidConnectSettingsResource) ResourceType() string { return "pingfederate_openid_connect_settings" } -func (r *PingFederateOpenIDConnectSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederateOpenidConnectSettingsResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - openIDConnectSettingsId := "openid_connect_settings_singleton_id" - openIDConnectSettingsName := "OpenID Connect Settings" + openidConnectSettingsId := "openid_connect_settings_singleton_id" + openidConnectSettingsName := "Openid Connect Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), @@ -42,8 +42,8 @@ func (r *PingFederateOpenIDConnectSettingsResource) ExportAll() (*[]connector.Im importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: openIDConnectSettingsName, - ResourceID: openIDConnectSettingsId, + ResourceName: openidConnectSettingsName, + ResourceID: openidConnectSettingsId, CommentInformation: common.GenerateCommentInformation(commentData), } diff --git a/internal/connector/pingfederate/resources/pingfederate_openid_connect_settings_test.go b/internal/connector/pingfederate/resources/openid_connect_settings_test.go similarity index 52% rename from internal/connector/pingfederate/resources/pingfederate_openid_connect_settings_test.go rename to internal/connector/pingfederate/resources/openid_connect_settings_test.go index 330d0316..0e7f25be 100644 --- a/internal/connector/pingfederate/resources/pingfederate_openid_connect_settings_test.go +++ b/internal/connector/pingfederate/resources/openid_connect_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateOpenIDConnectSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OpenIDConnectSettings(PingFederateClientInfo) +func Test_PingFederateOpenidConnectSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.OpenidConnectSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_openid_connect_settings", - ResourceName: "OpenID Connect Settings", + ResourceType: resource.ResourceType(), + ResourceName: "Openid Connect Settings", ResourceID: "openid_connect_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_password_credential_validator.go b/internal/connector/pingfederate/resources/password_credential_validator.go similarity index 81% rename from internal/connector/pingfederate/resources/pingfederate_password_credential_validator.go rename to internal/connector/pingfederate/resources/password_credential_validator.go index 6f1ec62f..260898c4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_password_credential_validator.go +++ b/internal/connector/pingfederate/resources/password_credential_validator.go @@ -12,11 +12,11 @@ var ( ) type PingFederatePasswordCredentialValidatorResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederatePasswordCredentialValidatorResource -func PasswordCredentialValidator(clientInfo *connector.PingFederateClientInfo) *PingFederatePasswordCredentialValidatorResource { +func PasswordCredentialValidator(clientInfo *connector.ClientInfo) *PingFederatePasswordCredentialValidatorResource { return &PingFederatePasswordCredentialValidatorResource{ clientInfo: clientInfo, } @@ -60,7 +60,7 @@ func (r *PingFederatePasswordCredentialValidatorResource) ExportAll() (*[]connec func (r *PingFederatePasswordCredentialValidatorResource) getPasswordCredentialValidatorData() (map[string]string, error) { passwordCredentialValidatorData := make(map[string]string) - passwordCredentialValidators, response, err := r.clientInfo.ApiClient.PasswordCredentialValidatorsAPI.GetPasswordCredentialValidators(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.PasswordCredentialValidatorsAPI.GetPasswordCredentialValidators(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetPasswordCredentialValidators", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederatePasswordCredentialValidatorResource) getPasswordCredentialV return nil, nil } - if passwordCredentialValidators == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - passwordCredentialValidatorsItems, passwordCredentialValidatorsItemsOk := passwordCredentialValidators.GetItemsOk() - if !passwordCredentialValidatorsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, passwordCredentialValidator := range passwordCredentialValidatorsItems { + for _, passwordCredentialValidator := range items { passwordCredentialValidatorId, passwordCredentialValidatorIdOk := passwordCredentialValidator.GetIdOk() passwordCredentialValidatorName, passwordCredentialValidatorNameOk := passwordCredentialValidator.GetNameOk() diff --git a/internal/connector/pingfederate/resources/password_credential_validator_test.go b/internal/connector/pingfederate/resources/password_credential_validator_test.go new file mode 100644 index 00000000..b16949d6 --- /dev/null +++ b/internal/connector/pingfederate/resources/password_credential_validator_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederatePasswordCredentialValidator(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederatePasswordCredentialValidator(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_api_application_test.go b/internal/connector/pingfederate/resources/pingfederate_authentication_api_application_test.go deleted file mode 100644 index 1314270d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_api_application_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateAuthenticationApiApplicationExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationApiApplication(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_authentication_api_application", - ResourceName: "myauthenticationapiapplication", - ResourceID: "myauthenticationapiapplication", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_fragment_test.go b/internal/connector/pingfederate/resources/pingfederate_authentication_policies_fragment_test.go deleted file mode 100644 index 7e574c09..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policies_fragment_test.go +++ /dev/null @@ -1,36 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateAuthenticationPoliciesFragmentExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationPoliciesFragment(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_authentication_policies_fragment", - ResourceName: "Internal AuthN", - ResourceID: "InternalAuthN", - }, - { - ResourceType: "pingfederate_authentication_policies_fragment", - ResourceName: "Identify_First", - ResourceID: "Identify_First", - }, - { - ResourceType: "pingfederate_authentication_policies_fragment", - ResourceName: "First_Factor", - ResourceID: "FirstFactor", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_policy_contract_test.go b/internal/connector/pingfederate/resources/pingfederate_authentication_policy_contract_test.go deleted file mode 100644 index 1369e243..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_policy_contract_test.go +++ /dev/null @@ -1,46 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateAuthenticationPolicyContractExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationPolicyContract(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_authentication_policy_contract", - ResourceName: "Default", - ResourceID: "default", - }, - { - ResourceType: "pingfederate_authentication_policy_contract", - ResourceName: "Fragment - Form", - ResourceID: "wIdHhK789PmadmMS", - }, - { - ResourceType: "pingfederate_authentication_policy_contract", - ResourceName: "Fragment - Subject", - ResourceID: "DkhZxRcZchsed90U", - }, - { - ResourceType: "pingfederate_authentication_policy_contract", - ResourceName: "Sample Policy Contract", - ResourceID: "samplePolicyContract", - }, - { - ResourceType: "pingfederate_authentication_policy_contract", - ResourceName: "apc", - ResourceID: "QGxlec5CX693lBQL", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_authentication_selector_test.go b/internal/connector/pingfederate/resources/pingfederate_authentication_selector_test.go deleted file mode 100644 index 13cf6ed9..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_authentication_selector_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateAuthenticationSelectorExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.AuthenticationSelector(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_authentication_selector", - ResourceName: "AuthN Experiences", - ResourceID: "authnExp", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_captcha_provider_test.go b/internal/connector/pingfederate/resources/pingfederate_captcha_provider_test.go deleted file mode 100644 index 55d9b6ee..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_captcha_provider_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateCaptchaProviderExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.CaptchaProvider(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_captcha_provider", - ResourceName: "exampleCaptchaProviderV2", - ResourceID: "exampleCaptchaProviderV2", - }, - { - ResourceType: "pingfederate_captcha_provider", - ResourceName: "exampleCaptchaProvider", - ResourceID: "exampleCaptchaProvider", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_certificate_ca.go b/internal/connector/pingfederate/resources/pingfederate_certificate_ca.go deleted file mode 100644 index f0d39c55..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_certificate_ca.go +++ /dev/null @@ -1,98 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateCertificateCAResource{} -) - -type PingFederateCertificateCAResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateCertificateCAResource -func CertificateCA(clientInfo *connector.PingFederateClientInfo) *PingFederateCertificateCAResource { - return &PingFederateCertificateCAResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateCertificateCAResource) ResourceType() string { - return "pingfederate_certificate_ca" -} - -func (r *PingFederateCertificateCAResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - trustedCAData, err := r.getTrustedCAData() - if err != nil { - return nil, err - } - - for certViewId, certViewInfo := range trustedCAData { - certViewIssuerDN := certViewInfo[0] - certViewSerialNumber := certViewInfo[1] - - commentData := map[string]string{ - "Certificate CA Issuer DN": certViewIssuerDN, - "Certificate CA ID": certViewId, - "Certificate CA Serial Number": certViewSerialNumber, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_%s", certViewIssuerDN, certViewSerialNumber), - ResourceID: certViewId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateCertificateCAResource) getTrustedCAData() (map[string][]string, error) { - trustedCAData := make(map[string][]string) - - certViews, response, err := r.clientInfo.ApiClient.CertificatesCaAPI.GetTrustedCAs(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetTrustedCAs", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if certViews == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - certViewsItems, certViewsItemsOk := certViews.GetItemsOk() - if !certViewsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, certView := range certViewsItems { - certViewId, certViewIdOk := certView.GetIdOk() - certViewIssuerDN, certViewIssuerDNOk := certView.GetIssuerDNOk() - certViewSerialNumber, certViewSerialNumberOk := certView.GetSerialNumberOk() - - if certViewIdOk && certViewIssuerDNOk && certViewSerialNumberOk { - trustedCAData[*certViewId] = []string{*certViewIssuerDN, *certViewSerialNumber} - } - } - - return trustedCAData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_certificate_ca_test.go b/internal/connector/pingfederate/resources/pingfederate_certificate_ca_test.go deleted file mode 100644 index 1829049d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_certificate_ca_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateCertificateCAExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.CertificateCA(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_certificate_ca", - ResourceName: "C=US, O=CDR, OU=PING, L=AUSTIN, ST=TEXAS_38647788523832031312085637263346848131", - ResourceID: "sslservercert", - }, - } - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_ocsp_certificate.go b/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_ocsp_certificate.go deleted file mode 100644 index 42c553d6..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_ocsp_certificate.go +++ /dev/null @@ -1,98 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateCertificatesRevocationOCSPCertificateResource{} -) - -type PingFederateCertificatesRevocationOCSPCertificateResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateCertificatesRevocationOCSPCertificateResource -func CertificatesRevocationOCSPCertificate(clientInfo *connector.PingFederateClientInfo) *PingFederateCertificatesRevocationOCSPCertificateResource { - return &PingFederateCertificatesRevocationOCSPCertificateResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateCertificatesRevocationOCSPCertificateResource) ResourceType() string { - return "pingfederate_certificates_revocation_ocsp_certificate" -} - -func (r *PingFederateCertificatesRevocationOCSPCertificateResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - ocspCertificateData, err := r.getOcspCertificateData() - if err != nil { - return nil, err - } - - for ocspCertificateId, ocspCertificateInfo := range ocspCertificateData { - ocspCertificateIssuerDN := ocspCertificateInfo[0] - ocspCertificateSerialNumber := ocspCertificateInfo[1] - - commentData := map[string]string{ - "Certificate Revocation OCSP Certificate ID": ocspCertificateId, - "Certificate Revocation OCSP Certificate Issuer DN": ocspCertificateIssuerDN, - "Certificate Revocation OCSP Certificate Serial Number": ocspCertificateSerialNumber, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_%s", ocspCertificateIssuerDN, ocspCertificateSerialNumber), - ResourceID: ocspCertificateId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateCertificatesRevocationOCSPCertificateResource) getOcspCertificateData() (map[string][]string, error) { - ocspCertificateData := make(map[string][]string) - - ocspCertificates, response, err := r.clientInfo.ApiClient.CertificatesRevocationAPI.GetOcspCertificates(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetOcspCertificates", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if ocspCertificates == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - ocspCertificatesItems, ocspCertificatesItemsOk := ocspCertificates.GetItemsOk() - if !ocspCertificatesItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, ocspCertificate := range ocspCertificatesItems { - ocspCertificateId, ocspCertificateIdOk := ocspCertificate.GetIdOk() - ocspCertificateIssuerDN, ocspCertificateIssuerDNOk := ocspCertificate.GetIssuerDNOk() - ocspCertificateSerialNumber, ocspCertificateSerialNumberOk := ocspCertificate.GetSerialNumberOk() - - if ocspCertificateIdOk && ocspCertificateIssuerDNOk && ocspCertificateSerialNumberOk { - ocspCertificateData[*ocspCertificateId] = []string{*ocspCertificateIssuerDN, *ocspCertificateSerialNumber} - } - } - - return ocspCertificateData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_ocsp_certificate_test.go b/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_ocsp_certificate_test.go deleted file mode 100644 index 473aafe0..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_certificates_revocation_ocsp_certificate_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateCertificatesRevocationOCSPCertificateExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.CertificatesRevocationOCSPCertificate(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_certificates_revocation_ocsp_certificate", - ResourceName: "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US_430421198347763948001683365009287878912609754790", - ResourceID: "opcey20sf9djwvk8snv1actzq", - }, - } - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_cluster_settings_test.go b/internal/connector/pingfederate/resources/pingfederate_cluster_settings_test.go deleted file mode 100644 index 0fe835ac..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_cluster_settings_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateClusterSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ClusterSettings(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_cluster_settings", - ResourceName: "Cluster Settings", - ResourceID: "cluster_settings_singleton_id", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_data_store_test.go b/internal/connector/pingfederate/resources/pingfederate_data_store_test.go deleted file mode 100644 index e3b832fa..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_data_store_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateDataStoreExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.DataStore(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_data_store", - ResourceName: "ProvisionerDS_JDBC", - ResourceID: "ProvisionerDS", - }, - { - ResourceType: "pingfederate_data_store", - ResourceName: "LDAP-PingDirectory_LDAP", - ResourceID: "LDAP-PingDirectory", - }, - { - ResourceType: "pingfederate_data_store", - ResourceName: "pingdirectory_LDAP", - ResourceID: "pingdirectory", - }, - } - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_identity_store_provisioner_test.go b/internal/connector/pingfederate/resources/pingfederate_identity_store_provisioner_test.go deleted file mode 100644 index 362420d5..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_identity_store_provisioner_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateIdentityStoreProvisionerExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IdentityStoreProvisioner(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_identity_store_provisioner", - ResourceName: "ISP TestName", - ResourceID: "ISPTestID", - }, - } - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_adapter_test.go b/internal/connector/pingfederate/resources/pingfederate_idp_adapter_test.go deleted file mode 100644 index a682a15b..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_idp_adapter_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateIDPAdapterExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IDPAdapter(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_idp_adapter", - ResourceName: "OTIdPJava", - ResourceID: "OTIdPJava", - }, - { - ResourceType: "pingfederate_idp_adapter", - ResourceName: "Employee HTML Form", - ResourceID: "htmlForm", - }, - { - ResourceType: "pingfederate_idp_adapter", - ResourceName: "Identifier-First", - ResourceID: "IDFirst", - }, - { - ResourceType: "pingfederate_idp_adapter", - ResourceName: "Customer HTML Form (PF)", - ResourceID: "ciamHtmlForm", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_sp_connection.go b/internal/connector/pingfederate/resources/pingfederate_idp_sp_connection.go deleted file mode 100644 index 01666e50..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_idp_sp_connection.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateIDPSPConnectionResource{} -) - -type PingFederateIDPSPConnectionResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateIDPSPConnectionResource -func IDPSPConnection(clientInfo *connector.PingFederateClientInfo) *PingFederateIDPSPConnectionResource { - return &PingFederateIDPSPConnectionResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateIDPSPConnectionResource) ResourceType() string { - return "pingfederate_idp_sp_connection" -} - -func (r *PingFederateIDPSPConnectionResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - spConnectionData, err := r.getSpConnectionData() - if err != nil { - return nil, err - } - - for spConnectionId, spConnectionName := range spConnectionData { - commentData := map[string]string{ - "IDP SP Connection ID": spConnectionId, - "IDP SP Connection Name": spConnectionName, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: spConnectionName, - ResourceID: spConnectionId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateIDPSPConnectionResource) getSpConnectionData() (map[string]string, error) { - spConnectionData := make(map[string]string) - - spConnections, response, err := r.clientInfo.ApiClient.IdpSpConnectionsAPI.GetSpConnections(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetSpConnections", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if spConnections == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - spConnectionsItems, spConnectionsItemsOk := spConnections.GetItemsOk() - if !spConnectionsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, spConnection := range spConnectionsItems { - spConnectionId, spConnectionIdOk := spConnection.GetIdOk() - spConnectionName, spConnectionNameOk := spConnection.GetNameOk() - - if spConnectionIdOk && spConnectionNameOk { - spConnectionData[*spConnectionId] = *spConnectionName - } - } - - return spConnectionData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_sp_connection_test.go b/internal/connector/pingfederate/resources/pingfederate_idp_sp_connection_test.go deleted file mode 100644 index a49c9f49..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_idp_sp_connection_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateIDPSPConnectionExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IDPSPConnection(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_idp_sp_connection", - ResourceName: "test", - ResourceID: "iIoQK.-GWcXI5kLp4KDNxQqAhDF", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_sts_request_parameters_contract_test.go b/internal/connector/pingfederate/resources/pingfederate_idp_sts_request_parameters_contract_test.go deleted file mode 100644 index c1796e9d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_idp_sts_request_parameters_contract_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateIdpStsRequestParametersContractExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IdpStsRequestParametersContract(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_idp_sts_request_parameters_contract", - ResourceName: "STS TestName", - ResourceID: "STSTestID", - }, - } - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_to_sp_adapter_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_idp_to_sp_adapter_mapping_test.go deleted file mode 100644 index e224943a..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_idp_to_sp_adapter_mapping_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateIdpToSpAdapterMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IdpToSpAdapterMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_idp_to_sp_adapter_mapping", - ResourceName: "ciamHtmlForm_to_spadapter", - ResourceID: "ciamHtmlForm|spadapter", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_idp_token_processor_test.go b/internal/connector/pingfederate/resources/pingfederate_idp_token_processor_test.go deleted file mode 100644 index 2e6ebad8..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_idp_token_processor_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateIdpTokenProcessorExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.IdpTokenProcessor(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_idp_token_processor", - ResourceName: "UsernameTokenProcessor", - ResourceID: "UsernameTokenProcessor", - }, - { - ResourceType: "pingfederate_idp_token_processor", - ResourceName: "token processor", - ResourceID: "tokenprocessor", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_test.go b/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_test.go deleted file mode 100644 index 20f0eccf..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_kerberos_realm_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateKerberosRealmExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.KerberosRealm(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_kerberos_realm", - ResourceName: "Test Kerberos Realm", - ResourceID: "testKerberosRealm", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_additional_key_set.go b/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_additional_key_set.go deleted file mode 100644 index a501e2c3..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_additional_key_set.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource{} -) - -type PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateKerberosRealmResource -func KeypairsOauthOpenidConnectAdditionalKeySet(clientInfo *connector.PingFederateClientInfo) *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource { - return &PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource) ResourceType() string { - return "pingfederate_keypairs_oauth_openid_connect_additional_key_set" -} - -func (r *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - keySetData, err := r.getKeySetData() - if err != nil { - return nil, err - } - - for keySetId, keySetName := range keySetData { - commentData := map[string]string{ - "Keypairs OAuth OpenID Connect Addition Key Set ID": keySetId, - "Keypairs OAuth OpenID Connect Addition Key Set Name": keySetName, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: keySetName, - ResourceID: keySetId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateKeypairsOauthOpenidConnectAdditionalKeySetResource) getKeySetData() (map[string]string, error) { - keySetData := make(map[string]string) - - keySets, response, err := r.clientInfo.ApiClient.KeyPairsOauthOpenIdConnectAPI.GetKeySets(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetKeySets", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if keySets == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - keySetsItems, keySetsItemsOk := keySets.GetItemsOk() - if !keySetsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, keySet := range keySetsItems { - keySetId, keySetIdOk := keySet.GetIdOk() - keySetName, keySetNameOk := keySet.GetNameOk() - - if keySetIdOk && keySetNameOk { - keySetData[*keySetId] = *keySetName - } - } - - return keySetData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_additional_key_set_test.go b/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_additional_key_set_test.go deleted file mode 100644 index a1248136..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_oauth_openid_connect_additional_key_set_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateKeypairsOauthOpenidConnectAdditionalKeySetExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.KeypairsOauthOpenidConnectAdditionalKeySet(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_keypairs_oauth_openid_connect_additional_key_set", - ResourceName: "testName", - ResourceID: "testID", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_keypairs_signing_key_rotation_settings_test.go b/internal/connector/pingfederate/resources/pingfederate_keypairs_signing_key_rotation_settings_test.go deleted file mode 100644 index 61e3d214..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_keypairs_signing_key_rotation_settings_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateKeypairsSigningKeyRotationSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.KeypairsSigningKeyRotationSettings(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_keypairs_signing_key_rotation_settings", - ResourceName: "CN=rotationTest, O=pingidentity, L=Denver, ST=CO, C=US_1735851845119_rotation_settings", - ResourceID: "9vgmnd36wykte1l2nm8s8uead", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_local_identity_profile_test.go b/internal/connector/pingfederate/resources/pingfederate_local_identity_profile_test.go deleted file mode 100644 index 7783ea60..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_local_identity_profile_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateLocalIdentityIdentityProfileExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.LocalIdentityProfile(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_local_identity_profile", - ResourceName: "Admin Identity Profile", - ResourceID: "adminIdentityProfile", - }, - { - ResourceType: "pingfederate_local_identity_profile", - ResourceName: "Registration Identity Profile", - ResourceID: "regIdentityProfile", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_metadata_url_test.go b/internal/connector/pingfederate/resources/pingfederate_metadata_url_test.go deleted file mode 100644 index 0d8cc3bd..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_metadata_url_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateMetadataUrlExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.MetadataUrl(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_metadata_url", - ResourceName: "Test Metadata URL", - ResourceID: "i8uUHFDebYX7Z7gSfyhZ9yKUA", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_notification_publisher_test.go b/internal/connector/pingfederate/resources/pingfederate_notification_publisher_test.go deleted file mode 100644 index 4b7328c4..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_notification_publisher_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateNotificationPublisherExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.NotificationPublisher(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_notification_publisher", - ResourceName: "exampleSmtpPublisher", - ResourceID: "exampleSmtpPublisher", - }, - { - ResourceType: "pingfederate_notification_publisher", - ResourceName: "exampleSmtpPublisher2", - ResourceID: "exampleSmtpPublisher2", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager.go b/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager.go deleted file mode 100644 index bc9aaf3c..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthAccessTokenManagerResource{} -) - -type PingFederateOAuthAccessTokenManagerResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthAccessTokenManagerResource -func OAuthAccessTokenManager(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthAccessTokenManagerResource { - return &PingFederateOAuthAccessTokenManagerResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthAccessTokenManagerResource) ResourceType() string { - return "pingfederate_oauth_access_token_manager" -} - -func (r *PingFederateOAuthAccessTokenManagerResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - tokenManagerData, err := r.getTokenManagerData() - if err != nil { - return nil, err - } - - for tokenManagerId, tokenManagerName := range tokenManagerData { - commentData := map[string]string{ - "OAuth Access Token Manager ID": tokenManagerId, - "OAuth Access Token Manager Name": tokenManagerName, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: tokenManagerName, - ResourceID: tokenManagerId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthAccessTokenManagerResource) getTokenManagerData() (map[string]string, error) { - tokenManagerData := make(map[string]string) - - tokenManagers, response, err := r.clientInfo.ApiClient.OauthAccessTokenManagersAPI.GetTokenManagers(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetTokenManagers", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if tokenManagers == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - tokenManagersItems, tokenManagersItemsOk := tokenManagers.GetItemsOk() - if !tokenManagersItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, tokenManager := range tokenManagersItems { - tokenManagerId, tokenManagerIdOk := tokenManager.GetIdOk() - tokenManagerName, tokenManagerNameOk := tokenManager.GetNameOk() - - if tokenManagerIdOk && tokenManagerNameOk { - tokenManagerData[*tokenManagerId] = *tokenManagerName - } - } - - return tokenManagerData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_test.go deleted file mode 100644 index c195735d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_manager_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthAccessTokenManagerExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthAccessTokenManager(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_access_token_manager", - ResourceName: "JSON Web Tokens", - ResourceID: "jwt", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_mapping.go b/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_mapping.go deleted file mode 100644 index e0a7532e..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_mapping.go +++ /dev/null @@ -1,88 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthAccessTokenMappingResource{} -) - -type PingFederateOAuthAccessTokenMappingResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthAccessTokenMappingResource -func OAuthAccessTokenMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthAccessTokenMappingResource { - return &PingFederateOAuthAccessTokenMappingResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthAccessTokenMappingResource) ResourceType() string { - return "pingfederate_oauth_access_token_mapping" -} - -func (r *PingFederateOAuthAccessTokenMappingResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - mappingData, err := r.getMappingData() - if err != nil { - return nil, err - } - - for mappingId, mappingContextType := range mappingData { - commentData := map[string]string{ - "OAuth Access Token Mapping ID": mappingId, - "OAuth Access Token Mapping Context Type": mappingContextType, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_%s", mappingId, mappingContextType), - ResourceID: mappingId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthAccessTokenMappingResource) getMappingData() (map[string]string, error) { - mappingData := make(map[string]string) - - mappings, response, err := r.clientInfo.ApiClient.OauthAccessTokenMappingsAPI.GetMappings(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetMappings", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - for _, mapping := range mappings { - mappingId, mappingIdOk := mapping.GetIdOk() - mappingContext, mappingContextOk := mapping.GetContextOk() - - if mappingIdOk && mappingContextOk { - mappingContextType, mappingContextTypeOk := mappingContext.GetTypeOk() - - if mappingContextTypeOk { - mappingData[*mappingId] = *mappingContextType - } - } - } - - return mappingData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_mapping_test.go deleted file mode 100644 index 18b9098f..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_access_token_mapping_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthAccessTokenMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthAccessTokenMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_access_token_mapping", - ResourceName: "default|jwt_DEFAULT", - ResourceID: "default|jwt", - }, - { - ResourceType: "pingfederate_oauth_access_token_mapping", - ResourceName: "client_credentials|jwt_CLIENT_CREDENTIALS", - ResourceID: "client_credentials|jwt", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_authentication_policy_contract_mapping.go b/internal/connector/pingfederate/resources/pingfederate_oauth_authentication_policy_contract_mapping.go deleted file mode 100644 index fba59194..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_authentication_policy_contract_mapping.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthAuthenticationPolicyContractMappingResource{} -) - -type PingFederateOAuthAuthenticationPolicyContractMappingResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthAuthenticationPolicyContractMappingResource -func OAuthAuthenticationPolicyContractMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthAuthenticationPolicyContractMappingResource { - return &PingFederateOAuthAuthenticationPolicyContractMappingResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthAuthenticationPolicyContractMappingResource) ResourceType() string { - return "pingfederate_oauth_authentication_policy_contract_mapping" -} - -func (r *PingFederateOAuthAuthenticationPolicyContractMappingResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - apcToPersistentGrantMappingData, err := r.getApcToPersistentGrantMappingData() - if err != nil { - return nil, err - } - - for _, mappingId := range apcToPersistentGrantMappingData { - commentData := map[string]string{ - "Authentication Policy Contract Mapping ID": mappingId, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_mapping", mappingId), - ResourceID: mappingId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthAuthenticationPolicyContractMappingResource) getApcToPersistentGrantMappingData() ([]string, error) { - apcToPersistentGrantMappingData := []string{} - - apcToPersistentGrantMappings, response, err := r.clientInfo.ApiClient.OauthAuthenticationPolicyContractMappingsAPI.GetApcMappings(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetApcMappings", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if apcToPersistentGrantMappings == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - apcToPersistentGrantMappingsItems, apcToPersistentGrantMappingsItemsOk := apcToPersistentGrantMappings.GetItemsOk() - if !apcToPersistentGrantMappingsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, apcToPersistentGrantMapping := range apcToPersistentGrantMappingsItems { - apcToPersistentGrantMappingId, apcToPersistentGrantMappingIdOk := apcToPersistentGrantMapping.GetIdOk() - - if apcToPersistentGrantMappingIdOk { - apcToPersistentGrantMappingData = append(apcToPersistentGrantMappingData, *apcToPersistentGrantMappingId) - } - } - - return apcToPersistentGrantMappingData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_authentication_policy_contract_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_authentication_policy_contract_mapping_test.go deleted file mode 100644 index 109658c9..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_authentication_policy_contract_mapping_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthAuthenticationPolicyContractMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthAuthenticationPolicyContractMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_authentication_policy_contract_mapping", - ResourceName: "QGxlec5CX693lBQL_mapping", - ResourceID: "QGxlec5CX693lBQL", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_request_policy.go b/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_request_policy.go deleted file mode 100644 index c413b3f3..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_request_policy.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthClientResource{} -) - -type PingFederateOAuthCibaServerPolicyRequestPolicyResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthCibaServerPolicyRequestPolicyResource -func OAuthCibaServerPolicyRequestPolicy(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthCibaServerPolicyRequestPolicyResource { - return &PingFederateOAuthCibaServerPolicyRequestPolicyResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthCibaServerPolicyRequestPolicyResource) ResourceType() string { - return "pingfederate_oauth_ciba_server_policy_request_policy" -} - -func (r *PingFederateOAuthCibaServerPolicyRequestPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - oauthClientData, err := r.getRequestPolicyData() - if err != nil { - return nil, err - } - - for requestPolicyId, requestPolicyName := range oauthClientData { - commentData := map[string]string{ - "OAuth CIBA Server Policy Request Policy ID": requestPolicyId, - "OAuth CIBA Server Policy Request Policy Name": requestPolicyName, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: requestPolicyName, - ResourceID: requestPolicyId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthCibaServerPolicyRequestPolicyResource) getRequestPolicyData() (map[string]string, error) { - requestPolicyData := make(map[string]string) - - requestPolicies, response, err := r.clientInfo.ApiClient.OauthCibaServerPolicyAPI.GetCibaServerPolicies(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetCibaServerPolicies", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if requestPolicies == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - requestPoliciesItems, requestPoliciesItemsOk := requestPolicies.GetItemsOk() - if !requestPoliciesItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, requestPolicy := range requestPoliciesItems { - requestPolicyId, requestPolicyIdOk := requestPolicy.GetIdOk() - requestPolicyName, requestPolicyNameOk := requestPolicy.GetNameOk() - - if requestPolicyIdOk && requestPolicyNameOk { - requestPolicyData[*requestPolicyId] = *requestPolicyName - } - } - - return requestPolicyData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_request_policy_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_request_policy_test.go deleted file mode 100644 index a85dd202..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_ciba_server_policy_request_policy_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthCibaServerPolicyRequestPolicyExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthCibaServerPolicyRequestPolicy(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_ciba_server_policy_request_policy", - ResourceName: "exampleCibaReqPolicy", - ResourceID: "exampleCibaReqPolicy", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_client_registration_policy.go b/internal/connector/pingfederate/resources/pingfederate_oauth_client_registration_policy.go deleted file mode 100644 index b69c201f..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_client_registration_policy.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthClientRegistrationPolicyResource{} -) - -type PingFederateOAuthClientRegistrationPolicyResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthClientRegistrationPolicyResource -func OAuthClientRegistrationPolicy(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthClientRegistrationPolicyResource { - return &PingFederateOAuthClientRegistrationPolicyResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthClientRegistrationPolicyResource) ResourceType() string { - return "pingfederate_oauth_client_registration_policy" -} - -func (r *PingFederateOAuthClientRegistrationPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - clientRegistrationPolicyData, err := r.getClientRegistrationPolicyData() - if err != nil { - return nil, err - } - - for clientRegistrationPolicyId, clientRegistrationPolicyName := range clientRegistrationPolicyData { - commentData := map[string]string{ - "OAuth Client Registration Policy ID": clientRegistrationPolicyId, - "OAuth Client Registration Policy Name": clientRegistrationPolicyName, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: clientRegistrationPolicyName, - ResourceID: clientRegistrationPolicyId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthClientRegistrationPolicyResource) getClientRegistrationPolicyData() (map[string]string, error) { - clientRegistrationPolicyData := make(map[string]string) - - clientRegistrationPolicies, response, err := r.clientInfo.ApiClient.OauthClientRegistrationPoliciesAPI.GetDynamicClientRegistrationPolicies(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetDynamicClientRegistrationPolicies", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if clientRegistrationPolicies == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - clientRegistrationPoliciesItems, clientRegistrationPoliciesItemsOk := clientRegistrationPolicies.GetItemsOk() - if !clientRegistrationPoliciesItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, clientRegistrationPolicy := range clientRegistrationPoliciesItems { - clientRegistrationPolicyId, clientRegistrationPolicyIdOk := clientRegistrationPolicy.GetIdOk() - clientRegistrationPolicyName, clientRegistrationPolicyNameOk := clientRegistrationPolicy.GetNameOk() - - if clientRegistrationPolicyIdOk && clientRegistrationPolicyNameOk { - clientRegistrationPolicyData[*clientRegistrationPolicyId] = *clientRegistrationPolicyName - } - } - - return clientRegistrationPolicyData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_client_registration_policy_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_client_registration_policy_test.go deleted file mode 100644 index 585ad8b3..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_client_registration_policy_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthClientRegistrationPolicyExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthClientRegistrationPolicy(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_client_registration_policy", - ResourceName: "Test Registration Policy", - ResourceID: "testRegistrationPolicy", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_idp_adapter_mapping.go b/internal/connector/pingfederate/resources/pingfederate_oauth_idp_adapter_mapping.go deleted file mode 100644 index 992530d9..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_idp_adapter_mapping.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthIdpAdapterMappingResource{} -) - -type PingFederateOAuthIdpAdapterMappingResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthIdpAdapterMappingResource -func OAuthIdpAdapterMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthIdpAdapterMappingResource { - return &PingFederateOAuthIdpAdapterMappingResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthIdpAdapterMappingResource) ResourceType() string { - return "pingfederate_oauth_idp_adapter_mapping" -} - -func (r *PingFederateOAuthIdpAdapterMappingResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - idpAdapterMappingData, err := r.getIdpAdapterMappingData() - if err != nil { - return nil, err - } - - for _, idpAdapterMappingId := range idpAdapterMappingData { - commentData := map[string]string{ - "OAuth IDP Adapter Mapping ID": idpAdapterMappingId, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_mapping", idpAdapterMappingId), - ResourceID: idpAdapterMappingId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthIdpAdapterMappingResource) getIdpAdapterMappingData() ([]string, error) { - idpAdapterMappingData := []string{} - - idpAdapterMappings, response, err := r.clientInfo.ApiClient.OauthIdpAdapterMappingsAPI.GetIdpAdapterMappings(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetIdpAdapterMappings", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if idpAdapterMappings == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - idpAdapterMappingsItems, idpAdapterMappingsItemsOk := idpAdapterMappings.GetItemsOk() - if !idpAdapterMappingsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, idpAdapterMapping := range idpAdapterMappingsItems { - idpAdapterMappingId, idpAdapterMappingIdOk := idpAdapterMapping.GetIdOk() - - if idpAdapterMappingIdOk { - idpAdapterMappingData = append(idpAdapterMappingData, *idpAdapterMappingId) - } - } - - return idpAdapterMappingData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_idp_adapter_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_idp_adapter_mapping_test.go deleted file mode 100644 index 360307af..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_idp_adapter_mapping_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthIdpAdapterMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthIdpAdapterMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_idp_adapter_mapping", - ResourceName: "OTIdPJava_mapping", - ResourceID: "OTIdPJava", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_issuer_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_issuer_test.go deleted file mode 100644 index 26fa1259..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_issuer_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthIssuerExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthIssuer(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_issuer", - ResourceName: "Test Issuer", - ResourceID: "BmoJwEmyzs4RSNMzVUlCs8qTPC", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_generator_settings_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_generator_settings_test.go deleted file mode 100644 index 768eec3b..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_generator_settings_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthTokenExchangeGeneratorSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthTokenExchangeGeneratorSettings(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_token_exchange_generator_settings", - ResourceName: "OAuth Token Exchange Generator Settings", - ResourceID: "oauth_token_exchange_generator_settings_singleton_id", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_token_generator_mapping.go b/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_token_generator_mapping.go deleted file mode 100644 index 3b2a01d2..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_token_generator_mapping.go +++ /dev/null @@ -1,98 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOAuthTokenExchangeTokenGeneratorMappingResource{} -) - -type PingFederateOAuthTokenExchangeTokenGeneratorMappingResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOAuthTokenExchangeTokenGeneratorMappingResource -func OAuthTokenExchangeTokenGeneratorMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateOAuthTokenExchangeTokenGeneratorMappingResource { - return &PingFederateOAuthTokenExchangeTokenGeneratorMappingResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOAuthTokenExchangeTokenGeneratorMappingResource) ResourceType() string { - return "pingfederate_oauth_token_exchange_token_generator_mapping" -} - -func (r *PingFederateOAuthTokenExchangeTokenGeneratorMappingResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - processorPolicyToGeneratorMappingData, err := r.getProcessorPolicyToGeneratorMappingData() - if err != nil { - return nil, err - } - - for mappingId, mappingInfo := range processorPolicyToGeneratorMappingData { - sourceId := mappingInfo[0] - targetId := mappingInfo[1] - - commentData := map[string]string{ - "OAuth Token Exchange Token Generator Mapping ID": mappingId, - "Processor Policy ID": sourceId, - "Resource Type": r.ResourceType(), - "Token Generator ID": targetId, - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_to_%s", sourceId, targetId), - ResourceID: mappingId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOAuthTokenExchangeTokenGeneratorMappingResource) getProcessorPolicyToGeneratorMappingData() (map[string][]string, error) { - processorPolicyToGeneratorMappingData := make(map[string][]string) - - processorPolicyToGeneratorMappings, response, err := r.clientInfo.ApiClient.OauthTokenExchangeTokenGeneratorMappingsAPI.GetTokenGeneratorMappings(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetTokenGeneratorMappings", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if processorPolicyToGeneratorMappings == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - processorPolicyToGeneratorMappingsItems, processorPolicyToGeneratorMappingsItemsOk := processorPolicyToGeneratorMappings.GetItemsOk() - if !processorPolicyToGeneratorMappingsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, mapping := range processorPolicyToGeneratorMappingsItems { - mappingId, mappingIdOk := mapping.GetIdOk() - mappingSourceId, mappingSourceIdOk := mapping.GetSourceIdOk() - mappingTargetId, mappingTargetIdOk := mapping.GetTargetIdOk() - - if mappingIdOk && mappingSourceIdOk && mappingTargetIdOk { - processorPolicyToGeneratorMappingData[*mappingId] = []string{*mappingSourceId, *mappingTargetId} - } - } - - return processorPolicyToGeneratorMappingData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_token_generator_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_token_generator_mapping_test.go deleted file mode 100644 index 012b3367..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_oauth_token_exchange_token_generator_mapping_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOAuthTokenExchangeTokenGeneratorMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OAuthTokenExchangeTokenGeneratorMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_oauth_token_exchange_token_generator_mapping", - ResourceName: "tokenexchangeprocessorpolicy_to_tokengenerator", - ResourceID: "tokenexchangeprocessorpolicy|tokengenerator", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_openid_connect_policy.go b/internal/connector/pingfederate/resources/pingfederate_openid_connect_policy.go deleted file mode 100644 index 5ba764bd..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_openid_connect_policy.go +++ /dev/null @@ -1,91 +0,0 @@ -package resources - -import ( - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateOpenIDConnectPolicyResource{} -) - -type PingFederateOpenIDConnectPolicyResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateOpenIDConnectPolicyResource -func OpenIDConnectPolicy(clientInfo *connector.PingFederateClientInfo) *PingFederateOpenIDConnectPolicyResource { - return &PingFederateOpenIDConnectPolicyResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateOpenIDConnectPolicyResource) ResourceType() string { - return "pingfederate_openid_connect_policy" -} - -func (r *PingFederateOpenIDConnectPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - oidcPolicyData, err := r.getOIDCPolicyData() - if err != nil { - return nil, err - } - - for oidcPolicyId, oidcPolicyName := range oidcPolicyData { - commentData := map[string]string{ - "OpenID Connect Policy ID": oidcPolicyId, - "OpenID Connect Policy Name": oidcPolicyName, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: oidcPolicyName, - ResourceID: oidcPolicyId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateOpenIDConnectPolicyResource) getOIDCPolicyData() (map[string]string, error) { - oidcPolicyData := make(map[string]string) - - oidcPolicies, response, err := r.clientInfo.ApiClient.OauthOpenIdConnectAPI.GetOIDCPolicies(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetOIDCPolicies", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if oidcPolicies == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - oidcPoliciesItems, oidcPoliciesItemsOk := oidcPolicies.GetItemsOk() - if !oidcPoliciesItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, oidcPolicy := range oidcPoliciesItems { - oidcPolicyId, oidcPolicyIdOk := oidcPolicy.GetIdOk() - oidcPolicyName, oidcPolicyNameOk := oidcPolicy.GetNameOk() - - if oidcPolicyIdOk && oidcPolicyNameOk { - oidcPolicyData[*oidcPolicyId] = *oidcPolicyName - } - } - - return oidcPolicyData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_openid_connect_policy_test.go b/internal/connector/pingfederate/resources/pingfederate_openid_connect_policy_test.go deleted file mode 100644 index 0352cc46..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_openid_connect_policy_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateOpenIDConnectPolicyExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.OpenIDConnectPolicy(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_openid_connect_policy", - ResourceName: "Test OpenID Connect Policy", - ResourceID: "test-openid-connect-policy", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_password_credential_validator_test.go b/internal/connector/pingfederate/resources/pingfederate_password_credential_validator_test.go deleted file mode 100644 index 3f83d4f8..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_password_credential_validator_test.go +++ /dev/null @@ -1,36 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederatePasswordCredentialValidatorExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.PasswordCredentialValidator(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_password_credential_validator", - ResourceName: "pingdirectory", - ResourceID: "pingdirectory", - }, - { - ResourceType: "pingfederate_password_credential_validator", - ResourceName: "simple", - ResourceID: "simple", - }, - { - ResourceType: "pingfederate_password_credential_validator", - ResourceName: "PD PCV", - ResourceID: "PDPCV", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_pingone_connection_test.go b/internal/connector/pingfederate/resources/pingfederate_pingone_connection_test.go deleted file mode 100644 index a9170ca7..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_pingone_connection_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederatePingOneConnectionExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.PingOneConnection(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_pingone_connection", - ResourceName: "internal_brassteam_893438732", - ResourceID: "noeOvj5ltBnf4rcmtZAKdJ", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_secret_manager_test.go b/internal/connector/pingfederate/resources/pingfederate_secret_manager_test.go deleted file mode 100644 index 2922b570..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_secret_manager_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateSecretManagerExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SecretManager(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_secret_manager", - ResourceName: "Test Secret Manager", - ResourceID: "testSecretManager", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate.go b/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate.go deleted file mode 100644 index ba952a50..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate.go +++ /dev/null @@ -1,102 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource{} -) - -type PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource -func ServerSettingsWsTrustStsSettingsIssuerCertificate(clientInfo *connector.PingFederateClientInfo) *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource { - return &PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource) ResourceType() string { - return "pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate" -} - -func (r *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - issuerCertsData, err := r.getIssuerCertsData() - if err != nil { - return nil, err - } - - for issuerCertId, issuerCertInfo := range issuerCertsData { - issuerCertDN := issuerCertInfo[0] - issuerCertSerialNumber := issuerCertInfo[1] - - commentData := map[string]string{ - "Issuer Certificate ID": issuerCertId, - "Issuer Certificate Issuer DN": issuerCertDN, - "Issuer Certificate Serial Number": issuerCertSerialNumber, - "Resource Type": r.ResourceType(), - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_%s", issuerCertDN, issuerCertSerialNumber), - ResourceID: issuerCertId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource) getIssuerCertsData() (map[string][]string, error) { - issuerCertsData := make(map[string][]string) - - issuerCerts, response, err := r.clientInfo.ApiClient.ServerSettingsAPI.GetCerts(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetCerts", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if issuerCerts == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - issuerCertsItems, issuerCertsItemsOk := issuerCerts.GetItemsOk() - if !issuerCertsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, issuerCert := range issuerCertsItems { - issuerCertView, issuerCertViewOk := issuerCert.GetCertViewOk() - - if issuerCertViewOk { - issuerCertId, issuerCertIdOk := issuerCertView.GetIdOk() - issuerCertDN, issuerCertDNOk := issuerCertView.GetIssuerDNOk() - issuerCertSerialNumber, issuerCertSerialNumberOk := issuerCertView.GetSerialNumberOk() - - if issuerCertIdOk && issuerCertDNOk && issuerCertSerialNumberOk { - issuerCertsData[*issuerCertId] = []string{*issuerCertDN, *issuerCertSerialNumber} - } - } - } - - return issuerCertsData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate_test.go b/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate_test.go deleted file mode 100644 index 1ee24e87..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateServerSettingsWsTrustStsSettingsIssuerCertificateExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServerSettingsWsTrustStsSettingsIssuerCertificate(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate", - ResourceName: "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US_430421198347763948001683365009287878912609754790", - ResourceID: "ycrgw3j4ckw91gxdmd479qftb", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_test.go b/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_test.go deleted file mode 100644 index 5e41baa5..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateServerSettingsWsTrustStsSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServerSettingsWsTrustStsSettings(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_server_settings_ws_trust_sts_settings", - ResourceName: "Server Settings WS-Trust STS Settings", - ResourceID: "server_settings_ws_trust_sts_settings_singleton_id", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policy.go b/internal/connector/pingfederate/resources/pingfederate_session_authentication_policy.go deleted file mode 100644 index 20a6dafd..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policy.go +++ /dev/null @@ -1,106 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateSessionAuthenticationPolicyResource{} -) - -type PingFederateSessionAuthenticationPolicyResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateSessionAuthenticationPolicyResource -func SessionAuthenticationPolicy(clientInfo *connector.PingFederateClientInfo) *PingFederateSessionAuthenticationPolicyResource { - return &PingFederateSessionAuthenticationPolicyResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateSessionAuthenticationPolicyResource) ResourceType() string { - return "pingfederate_session_authentication_policy" -} - -func (r *PingFederateSessionAuthenticationPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - authenticationSessionPolicyData, err := r.getAuthenticationSessionPolicyData() - if err != nil { - return nil, err - } - - for policyId, policyInfo := range authenticationSessionPolicyData { - authSourceType := policyInfo[0] - authSourceRefId := policyInfo[1] - - commentData := map[string]string{ - "Resource Type": r.ResourceType(), - "Session Authentication Policy ID": policyId, - "Session Authentication Source Type": authSourceType, - "Session Authentication Source ID": authSourceRefId, - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_%s_%s", policyId, authSourceType, authSourceRefId), - ResourceID: policyId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateSessionAuthenticationPolicyResource) getAuthenticationSessionPolicyData() (map[string][]string, error) { - authenticationSessionPolicyData := make(map[string][]string) - - authenticationSessionPolicies, response, err := r.clientInfo.ApiClient.SessionAPI.GetSourcePolicies(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetSourcePolicies", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if authenticationSessionPolicies == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - authenticationSessionPoliciesItems, authenticationSessionPoliciesItemsOk := authenticationSessionPolicies.GetItemsOk() - if !authenticationSessionPoliciesItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, authenticationSessionPolicy := range authenticationSessionPoliciesItems { - policyId, policyIdOk := authenticationSessionPolicy.GetIdOk() - authSource, authSourceOk := authenticationSessionPolicy.GetAuthenticationSourceOk() - - if policyIdOk && authSourceOk { - authSourceType, authSourceTypeOk := authSource.GetTypeOk() - authSourceRef, authSourceRefOk := authSource.GetSourceRefOk() - - if authSourceTypeOk && authSourceRefOk { - authSourceRefId, authSourceRefIdOk := authSourceRef.GetIdOk() - - if authSourceRefIdOk { - authenticationSessionPolicyData[*policyId] = []string{*authSourceType, *authSourceRefId} - } - } - } - } - - return authenticationSessionPolicyData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policy_test.go b/internal/connector/pingfederate/resources/pingfederate_session_authentication_policy_test.go deleted file mode 100644 index bf2a56ee..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policy_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateSessionAuthenticationPolicyExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SessionAuthenticationPolicy(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_session_authentication_policy", - ResourceName: "UfdnqYjWycSeo2vZZgSYB3gpw_IDP_ADAPTER_OTIdPJava", - ResourceID: "UfdnqYjWycSeo2vZZgSYB3gpw", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_adapter_test.go b/internal/connector/pingfederate/resources/pingfederate_sp_adapter_test.go deleted file mode 100644 index 7bd56c7d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_sp_adapter_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateSpAdapterExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SpAdapter(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_sp_adapter", - ResourceName: "SpAdapter", - ResourceID: "spadapter", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_authentication_policy_contract_mapping.go b/internal/connector/pingfederate/resources/pingfederate_sp_authentication_policy_contract_mapping.go deleted file mode 100644 index 7b441384..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_sp_authentication_policy_contract_mapping.go +++ /dev/null @@ -1,98 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateSPAuthenticationPolicyContractMappingResource{} -) - -type PingFederateSPAuthenticationPolicyContractMappingResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateSPAuthenticationPolicyContractMappingResource -func SPAuthenticationPolicyContractMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateSPAuthenticationPolicyContractMappingResource { - return &PingFederateSPAuthenticationPolicyContractMappingResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateSPAuthenticationPolicyContractMappingResource) ResourceType() string { - return "pingfederate_sp_authentication_policy_contract_mapping" -} - -func (r *PingFederateSPAuthenticationPolicyContractMappingResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - apcToSpAdapterMappingData, err := r.getApcToSpAdapterMappingData() - if err != nil { - return nil, err - } - - for apcToSpAdapterMappingId, apcToSpAdapterMappingInfo := range apcToSpAdapterMappingData { - apcToSpAdapterMappingSourceID := apcToSpAdapterMappingInfo[0] - apcToSpAdapterMappingTargetID := apcToSpAdapterMappingInfo[1] - - commentData := map[string]string{ - "Resource Type": r.ResourceType(), - "Source Authentication Policy Contract ID": apcToSpAdapterMappingSourceID, - "SP Authentication Policy Contract Mapping ID": apcToSpAdapterMappingId, - "Target SP Adapter ID": apcToSpAdapterMappingTargetID, - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_to_%s", apcToSpAdapterMappingSourceID, apcToSpAdapterMappingTargetID), - ResourceID: apcToSpAdapterMappingId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateSPAuthenticationPolicyContractMappingResource) getApcToSpAdapterMappingData() (map[string][]string, error) { - apcToSpAdapterMappingData := make(map[string][]string) - - apcToSpAdapterMappings, response, err := r.clientInfo.ApiClient.SpAuthenticationPolicyContractMappingsAPI.GetApcToSpAdapterMappings(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetApcToSpAdapterMappings", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if apcToSpAdapterMappings == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - apcToSpAdapterMappingsItems, apcToSpAdapterMappingsItemsOk := apcToSpAdapterMappings.GetItemsOk() - if !apcToSpAdapterMappingsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, apcToSpAdapterMapping := range apcToSpAdapterMappingsItems { - apcToSpAdapterMappingId, apcToSpAdapterMappingIdOk := apcToSpAdapterMapping.GetIdOk() - apcToSpAdapterMappingSourceID, apcToSpAdapterMappingSourceIDOk := apcToSpAdapterMapping.GetSourceIdOk() - apcToSpAdapterMappingTargetID, apcToSpAdapterMappingTargetIDOk := apcToSpAdapterMapping.GetTargetIdOk() - - if apcToSpAdapterMappingIdOk && apcToSpAdapterMappingSourceIDOk && apcToSpAdapterMappingTargetIDOk { - apcToSpAdapterMappingData[*apcToSpAdapterMappingId] = []string{*apcToSpAdapterMappingSourceID, *apcToSpAdapterMappingTargetID} - } - } - - return apcToSpAdapterMappingData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_authentication_policy_contract_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_sp_authentication_policy_contract_mapping_test.go deleted file mode 100644 index b000916d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_sp_authentication_policy_contract_mapping_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateSPAuthenticationPolicyContractMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SPAuthenticationPolicyContractMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_sp_authentication_policy_contract_mapping", - ResourceName: "wIdHhK789PmadmMS_to_spadapter", - ResourceID: "wIdHhK789PmadmMS|spadapter", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_idp_connection_test.go b/internal/connector/pingfederate/resources/pingfederate_sp_idp_connection_test.go deleted file mode 100644 index 42193f2d..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_sp_idp_connection_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateSpIdpConnectionExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SpIdpConnection(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_sp_idp_connection", - ResourceName: "testConnection", - ResourceID: "n26SCl49a8lB_ifAaLF_MyUbquv", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_token_processor_to_token_generator_mapping.go b/internal/connector/pingfederate/resources/pingfederate_token_processor_to_token_generator_mapping.go deleted file mode 100644 index 320c4912..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_token_processor_to_token_generator_mapping.go +++ /dev/null @@ -1,98 +0,0 @@ -package resources - -import ( - "fmt" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/logger" -) - -// Verify that the resource satisfies the exportable resource interface -var ( - _ connector.ExportableResource = &PingFederateTokenProcessorToTokenGeneratorMappingResource{} -) - -type PingFederateTokenProcessorToTokenGeneratorMappingResource struct { - clientInfo *connector.PingFederateClientInfo -} - -// Utility method for creating a PingFederateTokenProcessorToTokenGeneratorMappingResource -func TokenProcessorToTokenGeneratorMapping(clientInfo *connector.PingFederateClientInfo) *PingFederateTokenProcessorToTokenGeneratorMappingResource { - return &PingFederateTokenProcessorToTokenGeneratorMappingResource{ - clientInfo: clientInfo, - } -} - -func (r *PingFederateTokenProcessorToTokenGeneratorMappingResource) ResourceType() string { - return "pingfederate_token_processor_to_token_generator_mapping" -} - -func (r *PingFederateTokenProcessorToTokenGeneratorMappingResource) ExportAll() (*[]connector.ImportBlock, error) { - l := logger.Get() - l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) - - importBlocks := []connector.ImportBlock{} - - tokenToTokenMappingsData, err := r.getTokenToTokenMappingsData() - if err != nil { - return nil, err - } - - for tokenToTokenMappingId, tokenToTokenMappingInfo := range tokenToTokenMappingsData { - tokenToTokenMappingSourceId := tokenToTokenMappingInfo[0] - tokenToTokenMappingTargetId := tokenToTokenMappingInfo[1] - - commentData := map[string]string{ - "Resource Type": r.ResourceType(), - "Token Processor to Token Generator Mapping ID": tokenToTokenMappingId, - "Token Processor ID": tokenToTokenMappingSourceId, - "Token Generator ID": tokenToTokenMappingTargetId, - } - - importBlock := connector.ImportBlock{ - ResourceType: r.ResourceType(), - ResourceName: fmt.Sprintf("%s_to_%s", tokenToTokenMappingSourceId, tokenToTokenMappingTargetId), - ResourceID: tokenToTokenMappingId, - CommentInformation: common.GenerateCommentInformation(commentData), - } - - importBlocks = append(importBlocks, importBlock) - } - - return &importBlocks, nil -} - -func (r *PingFederateTokenProcessorToTokenGeneratorMappingResource) getTokenToTokenMappingsData() (map[string][]string, error) { - tokenToTokenMappingsData := make(map[string][]string) - - tokenToTokenMappings, response, err := r.clientInfo.ApiClient.TokenProcessorToTokenGeneratorMappingsAPI.GetTokenToTokenMappings(r.clientInfo.Context).Execute() - ok, err := common.HandleClientResponse(response, err, "GetTokenToTokenMappings", r.ResourceType()) - if err != nil { - return nil, err - } - if !ok { - return nil, nil - } - - if tokenToTokenMappings == nil { - return nil, common.DataNilError(r.ResourceType(), response) - } - - tokenToTokenMappingsItems, tokenToTokenMappingsItemsOk := tokenToTokenMappings.GetItemsOk() - if !tokenToTokenMappingsItemsOk { - return nil, common.DataNilError(r.ResourceType(), response) - } - - for _, tokenToTokenMapping := range tokenToTokenMappingsItems { - tokenToTokenMappingId, tokenToTokenMappingIdOk := tokenToTokenMapping.GetIdOk() - tokenToTokenMappingSourceId, tokenToTokenMappingSourceIdOk := tokenToTokenMapping.GetSourceIdOk() - tokenToTokenMappingTargetId, tokenToTokenMappingTargetIdOk := tokenToTokenMapping.GetTargetIdOk() - - if tokenToTokenMappingIdOk && tokenToTokenMappingSourceIdOk && tokenToTokenMappingTargetIdOk { - tokenToTokenMappingsData[*tokenToTokenMappingId] = []string{*tokenToTokenMappingSourceId, *tokenToTokenMappingTargetId} - } - } - - return tokenToTokenMappingsData, nil -} diff --git a/internal/connector/pingfederate/resources/pingfederate_token_processor_to_token_generator_mapping_test.go b/internal/connector/pingfederate/resources/pingfederate_token_processor_to_token_generator_mapping_test.go deleted file mode 100644 index 9ddf97d5..00000000 --- a/internal/connector/pingfederate/resources/pingfederate_token_processor_to_token_generator_mapping_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package resources_test - -import ( - "testing" - - "github.com/pingidentity/pingcli/internal/connector" - "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" - "github.com/pingidentity/pingcli/internal/testing/testutils" -) - -func TestPingFederateTokenProcessorToTokenGeneratorMappingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.TokenProcessorToTokenGeneratorMapping(PingFederateClientInfo) - - // Defined the expected ImportBlocks for the resource - expectedImportBlocks := []connector.ImportBlock{ - { - ResourceType: "pingfederate_token_processor_to_token_generator_mapping", - ResourceName: "tokenprocessor_to_tokengenerator", - ResourceID: "tokenprocessor|tokengenerator", - }, - } - - testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) -} diff --git a/internal/connector/pingfederate/resources/pingfederate_pingone_connection.go b/internal/connector/pingfederate/resources/pingone_connection.go similarity index 62% rename from internal/connector/pingfederate/resources/pingfederate_pingone_connection.go rename to internal/connector/pingfederate/resources/pingone_connection.go index 60456858..a275fbc5 100644 --- a/internal/connector/pingfederate/resources/pingfederate_pingone_connection.go +++ b/internal/connector/pingfederate/resources/pingone_connection.go @@ -8,39 +8,39 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederatePingOneConnectionResource{} + _ connector.ExportableResource = &PingFederatePingoneConnectionResource{} ) -type PingFederatePingOneConnectionResource struct { - clientInfo *connector.PingFederateClientInfo +type PingFederatePingoneConnectionResource struct { + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederatePingOneConnectionResource -func PingOneConnection(clientInfo *connector.PingFederateClientInfo) *PingFederatePingOneConnectionResource { - return &PingFederatePingOneConnectionResource{ +// Utility method for creating a PingFederatePingoneConnectionResource +func PingoneConnection(clientInfo *connector.ClientInfo) *PingFederatePingoneConnectionResource { + return &PingFederatePingoneConnectionResource{ clientInfo: clientInfo, } } -func (r *PingFederatePingOneConnectionResource) ResourceType() string { +func (r *PingFederatePingoneConnectionResource) ResourceType() string { return "pingfederate_pingone_connection" } -func (r *PingFederatePingOneConnectionResource) ExportAll() (*[]connector.ImportBlock, error) { +func (r *PingFederatePingoneConnectionResource) ExportAll() (*[]connector.ImportBlock, error) { l := logger.Get() l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) importBlocks := []connector.ImportBlock{} - pingoneConnectionData, err := r.getPingOneConnectionData() + pingoneConnectionData, err := r.getPingoneConnectionData() if err != nil { return nil, err } for pingoneConnectionId, pingoneConnectionName := range pingoneConnectionData { commentData := map[string]string{ - "PingOne Connection ID": pingoneConnectionId, - "PingOne Connection Name": pingoneConnectionName, + "Pingone Connection ID": pingoneConnectionId, + "Pingone Connection Name": pingoneConnectionName, "Resource Type": r.ResourceType(), } @@ -57,10 +57,10 @@ func (r *PingFederatePingOneConnectionResource) ExportAll() (*[]connector.Import return &importBlocks, nil } -func (r *PingFederatePingOneConnectionResource) getPingOneConnectionData() (map[string]string, error) { +func (r *PingFederatePingoneConnectionResource) getPingoneConnectionData() (map[string]string, error) { pingoneConnectionData := make(map[string]string) - pingoneConnections, response, err := r.clientInfo.ApiClient.PingOneConnectionsAPI.GetPingOneConnections(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.PingOneConnectionsAPI.GetPingOneConnections(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetPingOneConnections", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederatePingOneConnectionResource) getPingOneConnectionData() (map[ return nil, nil } - if pingoneConnections == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - pingoneConnectionsItems, pingoneConnectionsItemsOk := pingoneConnections.GetItemsOk() - if !pingoneConnectionsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, pingoneConnection := range pingoneConnectionsItems { + for _, pingoneConnection := range items { pingoneConnectionId, pingoneConnectionIdOk := pingoneConnection.GetIdOk() pingoneConnectionName, pingoneConnectionNameOk := pingoneConnection.GetNameOk() diff --git a/internal/connector/pingfederate/resources/pingone_connection_test.go b/internal/connector/pingfederate/resources/pingone_connection_test.go new file mode 100644 index 00000000..3c8d1411 --- /dev/null +++ b/internal/connector/pingfederate/resources/pingone_connection_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederatePingoneConnection(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederatePingoneConnection(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_lifetime_settings.go b/internal/connector/pingfederate/resources/protocol_metadata_lifetime_settings.go similarity index 89% rename from internal/connector/pingfederate/resources/pingfederate_protocol_metadata_lifetime_settings.go rename to internal/connector/pingfederate/resources/protocol_metadata_lifetime_settings.go index b2bf24f4..5234e55b 100644 --- a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_lifetime_settings.go +++ b/internal/connector/pingfederate/resources/protocol_metadata_lifetime_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateProtocolMetadataLifetimeSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateProtocolMetadataLifetimeSettingsResource -func ProtocolMetadataLifetimeSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateProtocolMetadataLifetimeSettingsResource { +func ProtocolMetadataLifetimeSettings(clientInfo *connector.ClientInfo) *PingFederateProtocolMetadataLifetimeSettingsResource { return &PingFederateProtocolMetadataLifetimeSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_lifetime_settings_test.go b/internal/connector/pingfederate/resources/protocol_metadata_lifetime_settings_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_protocol_metadata_lifetime_settings_test.go rename to internal/connector/pingfederate/resources/protocol_metadata_lifetime_settings_test.go index b00ffcc3..b82e5771 100644 --- a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_lifetime_settings_test.go +++ b/internal/connector/pingfederate/resources/protocol_metadata_lifetime_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateProtocolMetadataLifetimeSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ProtocolMetadataLifetimeSettings(PingFederateClientInfo) +func Test_PingFederateProtocolMetadataLifetimeSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ProtocolMetadataLifetimeSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_protocol_metadata_lifetime_settings", + ResourceType: resource.ResourceType(), ResourceName: "Protocol Metadata Lifetime Settings", ResourceID: "protocol_metadata_lifetime_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_signing_settings.go b/internal/connector/pingfederate/resources/protocol_metadata_signing_settings.go similarity index 89% rename from internal/connector/pingfederate/resources/pingfederate_protocol_metadata_signing_settings.go rename to internal/connector/pingfederate/resources/protocol_metadata_signing_settings.go index 995a92ca..e2d8c94d 100644 --- a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_signing_settings.go +++ b/internal/connector/pingfederate/resources/protocol_metadata_signing_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateProtocolMetadataSigningSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateProtocolMetadataSigningSettingsResource -func ProtocolMetadataSigningSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateProtocolMetadataSigningSettingsResource { +func ProtocolMetadataSigningSettings(clientInfo *connector.ClientInfo) *PingFederateProtocolMetadataSigningSettingsResource { return &PingFederateProtocolMetadataSigningSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_signing_settings_test.go b/internal/connector/pingfederate/resources/protocol_metadata_signing_settings_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_protocol_metadata_signing_settings_test.go rename to internal/connector/pingfederate/resources/protocol_metadata_signing_settings_test.go index b801bb38..93922a9b 100644 --- a/internal/connector/pingfederate/resources/pingfederate_protocol_metadata_signing_settings_test.go +++ b/internal/connector/pingfederate/resources/protocol_metadata_signing_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateProtocolMetadataSigningSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ProtocolMetadataSigningSettings(PingFederateClientInfo) +func Test_PingFederateProtocolMetadataSigningSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ProtocolMetadataSigningSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_protocol_metadata_signing_settings", + ResourceType: resource.ResourceType(), ResourceName: "Protocol Metadata Signing Settings", ResourceID: "protocol_metadata_signing_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_redirect_validation.go b/internal/connector/pingfederate/resources/redirect_validation.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_redirect_validation.go rename to internal/connector/pingfederate/resources/redirect_validation.go index e562bfdc..8ad70b13 100644 --- a/internal/connector/pingfederate/resources/pingfederate_redirect_validation.go +++ b/internal/connector/pingfederate/resources/redirect_validation.go @@ -12,11 +12,11 @@ var ( ) type PingFederateRedirectValidationResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateRedirectValidationResource -func RedirectValidation(clientInfo *connector.PingFederateClientInfo) *PingFederateRedirectValidationResource { +func RedirectValidation(clientInfo *connector.ClientInfo) *PingFederateRedirectValidationResource { return &PingFederateRedirectValidationResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_redirect_validation_test.go b/internal/connector/pingfederate/resources/redirect_validation_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_redirect_validation_test.go rename to internal/connector/pingfederate/resources/redirect_validation_test.go index 1afde62b..27878bba 100644 --- a/internal/connector/pingfederate/resources/pingfederate_redirect_validation_test.go +++ b/internal/connector/pingfederate/resources/redirect_validation_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateRedirectValidationExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.RedirectValidation(PingFederateClientInfo) +func Test_PingFederateRedirectValidation(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.RedirectValidation(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_redirect_validation", + ResourceType: resource.ResourceType(), ResourceName: "Redirect Validation", ResourceID: "redirect_validation_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_secret_manager.go b/internal/connector/pingfederate/resources/secret_manager.go similarity index 83% rename from internal/connector/pingfederate/resources/pingfederate_secret_manager.go rename to internal/connector/pingfederate/resources/secret_manager.go index 5c86f73d..ec1c6296 100644 --- a/internal/connector/pingfederate/resources/pingfederate_secret_manager.go +++ b/internal/connector/pingfederate/resources/secret_manager.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSecretManagerResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSecretManagerResource -func SecretManager(clientInfo *connector.PingFederateClientInfo) *PingFederateSecretManagerResource { +func SecretManager(clientInfo *connector.ClientInfo) *PingFederateSecretManagerResource { return &PingFederateSecretManagerResource{ clientInfo: clientInfo, } @@ -39,9 +39,9 @@ func (r *PingFederateSecretManagerResource) ExportAll() (*[]connector.ImportBloc for secretManagerId, secretManagerName := range secretManagerData { commentData := map[string]string{ - "Resource Type": r.ResourceType(), "Secret Manager ID": secretManagerId, "Secret Manager Name": secretManagerName, + "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ @@ -60,7 +60,7 @@ func (r *PingFederateSecretManagerResource) ExportAll() (*[]connector.ImportBloc func (r *PingFederateSecretManagerResource) getSecretManagerData() (map[string]string, error) { secretManagerData := make(map[string]string) - secretManagers, response, err := r.clientInfo.ApiClient.SecretManagersAPI.GetSecretManagers(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.SecretManagersAPI.GetSecretManagers(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetSecretManagers", r.ResourceType()) if err != nil { return nil, err @@ -69,16 +69,16 @@ func (r *PingFederateSecretManagerResource) getSecretManagerData() (map[string]s return nil, nil } - if secretManagers == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - secretManagersItems, secretManagersItemsOk := secretManagers.GetItemsOk() - if !secretManagersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, secretManager := range secretManagersItems { + for _, secretManager := range items { secretManagerId, secretManagerIdOk := secretManager.GetIdOk() secretManagerName, secretManagerNameOk := secretManager.GetNameOk() diff --git a/internal/connector/pingfederate/resources/secret_manager_test.go b/internal/connector/pingfederate/resources/secret_manager_test.go new file mode 100644 index 00000000..2efdef9e --- /dev/null +++ b/internal/connector/pingfederate/resources/secret_manager_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateSecretManager(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateSecretManager(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings.go b/internal/connector/pingfederate/resources/server_settings.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_server_settings.go rename to internal/connector/pingfederate/resources/server_settings.go index 46b20754..a97d19f3 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings.go +++ b/internal/connector/pingfederate/resources/server_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateServerSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateServerSettingsResource -func ServerSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateServerSettingsResource { +func ServerSettings(clientInfo *connector.ClientInfo) *PingFederateServerSettingsResource { return &PingFederateServerSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_general.go b/internal/connector/pingfederate/resources/server_settings_general.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_general.go rename to internal/connector/pingfederate/resources/server_settings_general.go index 658bf001..e87449c1 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_general.go +++ b/internal/connector/pingfederate/resources/server_settings_general.go @@ -12,11 +12,11 @@ var ( ) type PingFederateServerSettingsGeneralResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateServerSettingsGeneralResource -func ServerSettingsGeneral(clientInfo *connector.PingFederateClientInfo) *PingFederateServerSettingsGeneralResource { +func ServerSettingsGeneral(clientInfo *connector.ClientInfo) *PingFederateServerSettingsGeneralResource { return &PingFederateServerSettingsGeneralResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_general_test.go b/internal/connector/pingfederate/resources/server_settings_general_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_general_test.go rename to internal/connector/pingfederate/resources/server_settings_general_test.go index 82f18737..8d8e3551 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_general_test.go +++ b/internal/connector/pingfederate/resources/server_settings_general_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateServerSettingsGeneralExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServerSettingsGeneral(PingFederateClientInfo) +func Test_PingFederateServerSettingsGeneral(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ServerSettingsGeneral(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_server_settings_general", + ResourceType: resource.ResourceType(), ResourceName: "Server Settings General", ResourceID: "server_settings_general_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_logging.go b/internal/connector/pingfederate/resources/server_settings_logging.go similarity index 85% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_logging.go rename to internal/connector/pingfederate/resources/server_settings_logging.go index c8db5bb6..9f3da006 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_logging.go +++ b/internal/connector/pingfederate/resources/server_settings_logging.go @@ -8,15 +8,15 @@ import ( // Verify that the resource satisfies the exportable resource interface var ( - _ connector.ExportableResource = &PingFederateServerSettingsSystemKeysRotateResource{} + _ connector.ExportableResource = &PingFederateServerSettingsLoggingResource{} ) type PingFederateServerSettingsLoggingResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateServerSettingsLoggingResource -func ServerSettingsLogging(clientInfo *connector.PingFederateClientInfo) *PingFederateServerSettingsLoggingResource { +func ServerSettingsLogging(clientInfo *connector.ClientInfo) *PingFederateServerSettingsLoggingResource { return &PingFederateServerSettingsLoggingResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_logging_test.go b/internal/connector/pingfederate/resources/server_settings_logging_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_logging_test.go rename to internal/connector/pingfederate/resources/server_settings_logging_test.go index 43428c1f..eabea7f1 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_logging_test.go +++ b/internal/connector/pingfederate/resources/server_settings_logging_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateServerSettingsLoggingExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServerSettingsLogging(PingFederateClientInfo) +func Test_PingFederateServerSettingsLogging(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ServerSettingsLogging(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_server_settings_logging", + ResourceType: resource.ResourceType(), ResourceName: "Server Settings Logging", ResourceID: "server_settings_logging_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_system_keys_rotate.go b/internal/connector/pingfederate/resources/server_settings_system_keys_rotate.go similarity index 89% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_system_keys_rotate.go rename to internal/connector/pingfederate/resources/server_settings_system_keys_rotate.go index 77e264bc..74df3aee 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_system_keys_rotate.go +++ b/internal/connector/pingfederate/resources/server_settings_system_keys_rotate.go @@ -12,11 +12,11 @@ var ( ) type PingFederateServerSettingsSystemKeysRotateResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } -// Utility method for creating a PingFederateServerSettingsSystemKeysResource -func ServerSettingsSystemKeysRotate(clientInfo *connector.PingFederateClientInfo) *PingFederateServerSettingsSystemKeysRotateResource { +// Utility method for creating a PingFederateServerSettingsSystemKeysRotateResource +func ServerSettingsSystemKeysRotate(clientInfo *connector.ClientInfo) *PingFederateServerSettingsSystemKeysRotateResource { return &PingFederateServerSettingsSystemKeysRotateResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_system_keys_rotate_test.go b/internal/connector/pingfederate/resources/server_settings_system_keys_rotate_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_system_keys_rotate_test.go rename to internal/connector/pingfederate/resources/server_settings_system_keys_rotate_test.go index cc49123e..e431d84f 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_system_keys_rotate_test.go +++ b/internal/connector/pingfederate/resources/server_settings_system_keys_rotate_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateServerSettingsSystemKeysExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServerSettingsSystemKeysRotate(PingFederateClientInfo) +func Test_PingFederateServerSettingsSystemKeysRotate(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ServerSettingsSystemKeysRotate(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_server_settings_system_keys_rotate", + ResourceType: resource.ResourceType(), ResourceName: "Server Settings System Keys Rotate", ResourceID: "server_settings_system_keys_rotate_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_test.go b/internal/connector/pingfederate/resources/server_settings_test.go similarity index 58% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_test.go rename to internal/connector/pingfederate/resources/server_settings_test.go index dca0856d..a8e34f9c 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_test.go +++ b/internal/connector/pingfederate/resources/server_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateServerSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServerSettings(PingFederateClientInfo) +func Test_PingFederateServerSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ServerSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_server_settings", + ResourceType: resource.ResourceType(), ResourceName: "Server Settings", ResourceID: "server_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings.go b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings.go similarity index 85% rename from internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings.go rename to internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings.go index e88fb73f..49cbc0f4 100644 --- a/internal/connector/pingfederate/resources/pingfederate_server_settings_ws_trust_sts_settings.go +++ b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateServerSettingsWsTrustStsSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateServerSettingsWsTrustStsSettingsResource -func ServerSettingsWsTrustStsSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateServerSettingsWsTrustStsSettingsResource { +func ServerSettingsWsTrustStsSettings(clientInfo *connector.ClientInfo) *PingFederateServerSettingsWsTrustStsSettingsResource { return &PingFederateServerSettingsWsTrustStsSettingsResource{ clientInfo: clientInfo, } @@ -33,7 +33,7 @@ func (r *PingFederateServerSettingsWsTrustStsSettingsResource) ExportAll() (*[]c importBlocks := []connector.ImportBlock{} serverSettingsWsTrustStsSettingsId := "server_settings_ws_trust_sts_settings_singleton_id" - serverSettingsWsTrustStsSettingsName := "Server Settings WS-Trust STS Settings" + serverSettingsWsTrustStsSettingsName := "Server Settings Ws Trust Sts Settings" commentData := map[string]string{ "Resource Type": r.ResourceType(), diff --git a/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_issuer_certificate.go b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_issuer_certificate.go new file mode 100644 index 00000000..3615f234 --- /dev/null +++ b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_issuer_certificate.go @@ -0,0 +1,102 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource{} +) + +type PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource +func ServerSettingsWsTrustStsSettingsIssuerCertificate(clientInfo *connector.ClientInfo) *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource { + return &PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource) ResourceType() string { + return "pingfederate_server_settings_ws_trust_sts_settings_issuer_certificate" +} + +func (r *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + serverSettingsWsTrustStsSettingsIssuerCertificateData, err := r.getServerSettingsWsTrustStsSettingsIssuerCertificateData() + if err != nil { + return nil, err + } + + for serverSettingsWsTrustStsSettingsIssuerCertificateId, serverSettingsWsTrustStsSettingsIssuerCertificateInfo := range serverSettingsWsTrustStsSettingsIssuerCertificateData { + serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDn := serverSettingsWsTrustStsSettingsIssuerCertificateInfo[0] + serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumber := serverSettingsWsTrustStsSettingsIssuerCertificateInfo[1] + + commentData := map[string]string{ + "Server Settings Ws Trust Sts Settings Issuer Certificate ID": serverSettingsWsTrustStsSettingsIssuerCertificateId, + "Server Settings Ws Trust Sts Settings Issuer Certificate Issuer DN": serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDn, + "Server Settings Ws Trust Sts Settings Issuer Certificate Serial Number": serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumber, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDn, serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumber), + ResourceID: serverSettingsWsTrustStsSettingsIssuerCertificateId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateServerSettingsWsTrustStsSettingsIssuerCertificateResource) getServerSettingsWsTrustStsSettingsIssuerCertificateData() (map[string][]string, error) { + serverSettingsWsTrustStsSettingsIssuerCertificateData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.ServerSettingsAPI.GetCerts(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetCerts", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, serverSettingsWsTrustStsSettingsIssuerCertificate := range items { + serverSettingsWsTrustStsSettingsIssuerCertificateCertView, serverSettingsWsTrustStsSettingsIssuerCertificateCertViewOk := serverSettingsWsTrustStsSettingsIssuerCertificate.GetCertViewOk() + + if serverSettingsWsTrustStsSettingsIssuerCertificateCertViewOk { + serverSettingsWsTrustStsSettingsIssuerCertificateId, serverSettingsWsTrustStsSettingsIssuerCertificateIdOk := serverSettingsWsTrustStsSettingsIssuerCertificateCertView.GetIdOk() + serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDn, serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDnOk := serverSettingsWsTrustStsSettingsIssuerCertificateCertView.GetIssuerDNOk() + serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumber, serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumberOk := serverSettingsWsTrustStsSettingsIssuerCertificateCertView.GetSerialNumberOk() + + if serverSettingsWsTrustStsSettingsIssuerCertificateIdOk && serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDnOk && serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumberOk { + serverSettingsWsTrustStsSettingsIssuerCertificateData[*serverSettingsWsTrustStsSettingsIssuerCertificateId] = []string{*serverSettingsWsTrustStsSettingsIssuerCertificateIssuerDn, *serverSettingsWsTrustStsSettingsIssuerCertificateSerialNumber} + } + } + } + + return serverSettingsWsTrustStsSettingsIssuerCertificateData, nil +} diff --git a/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_issuer_certificate_test.go b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_issuer_certificate_test.go new file mode 100644 index 00000000..3a93238c --- /dev/null +++ b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_issuer_certificate_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateServerSettingsWsTrustStsSettingsIssuerCertificate(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateServerSettingsWsTrustStsSettingsIssuerCertificate(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s", creationInfo[testutils_resource.ENUM_ISSUER_DN], creationInfo[testutils_resource.ENUM_SERIAL_NUMBER]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_test.go b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_test.go new file mode 100644 index 00000000..b80c63fa --- /dev/null +++ b/internal/connector/pingfederate/resources/server_settings_ws_trust_sts_settings_test.go @@ -0,0 +1,26 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" +) + +func Test_PingFederateServerSettingsWsTrustStsSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ServerSettingsWsTrustStsSettings(clientInfo) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: resource.ResourceType(), + ResourceName: "Server Settings Ws Trust Sts Settings", + ResourceID: "server_settings_ws_trust_sts_settings_singleton_id", + }, + } + + testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_service_authentication.go b/internal/connector/pingfederate/resources/service_authentication.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_service_authentication.go rename to internal/connector/pingfederate/resources/service_authentication.go index 73248366..788853c3 100644 --- a/internal/connector/pingfederate/resources/pingfederate_service_authentication.go +++ b/internal/connector/pingfederate/resources/service_authentication.go @@ -12,11 +12,11 @@ var ( ) type PingFederateServiceAuthenticationResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateServiceAuthenticationResource -func ServiceAuthentication(clientInfo *connector.PingFederateClientInfo) *PingFederateServiceAuthenticationResource { +func ServiceAuthentication(clientInfo *connector.ClientInfo) *PingFederateServiceAuthenticationResource { return &PingFederateServiceAuthenticationResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_service_authentication_test.go b/internal/connector/pingfederate/resources/service_authentication_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_service_authentication_test.go rename to internal/connector/pingfederate/resources/service_authentication_test.go index 97a3eb2e..889b8d65 100644 --- a/internal/connector/pingfederate/resources/pingfederate_service_authentication_test.go +++ b/internal/connector/pingfederate/resources/service_authentication_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateServiceAuthenticationExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.ServiceAuthentication(PingFederateClientInfo) +func Test_PingFederateServiceAuthentication(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.ServiceAuthentication(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_service_authentication", + ResourceType: resource.ResourceType(), ResourceName: "Service Authentication", ResourceID: "service_authentication_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_session_application_policy.go b/internal/connector/pingfederate/resources/session_application_policy.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_session_application_policy.go rename to internal/connector/pingfederate/resources/session_application_policy.go index 5b81abfd..5dad3c5a 100644 --- a/internal/connector/pingfederate/resources/pingfederate_session_application_policy.go +++ b/internal/connector/pingfederate/resources/session_application_policy.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSessionApplicationPolicyResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSessionApplicationPolicyResource -func SessionApplicationPolicy(clientInfo *connector.PingFederateClientInfo) *PingFederateSessionApplicationPolicyResource { +func SessionApplicationPolicy(clientInfo *connector.ClientInfo) *PingFederateSessionApplicationPolicyResource { return &PingFederateSessionApplicationPolicyResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_session_application_policy_test.go b/internal/connector/pingfederate/resources/session_application_policy_test.go similarity index 56% rename from internal/connector/pingfederate/resources/pingfederate_session_application_policy_test.go rename to internal/connector/pingfederate/resources/session_application_policy_test.go index e832e99b..c83f5526 100644 --- a/internal/connector/pingfederate/resources/pingfederate_session_application_policy_test.go +++ b/internal/connector/pingfederate/resources/session_application_policy_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateSessionApplicationPolicyExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SessionApplicationPolicy(PingFederateClientInfo) +func Test_PingFederateSessionApplicationPolicy(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.SessionApplicationPolicy(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_session_application_policy", + ResourceType: resource.ResourceType(), ResourceName: "Session Application Policy", ResourceID: "session_application_policy_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policies_global.go b/internal/connector/pingfederate/resources/session_authentication_policies_global.go similarity index 89% rename from internal/connector/pingfederate/resources/pingfederate_session_authentication_policies_global.go rename to internal/connector/pingfederate/resources/session_authentication_policies_global.go index 0a2b582b..ff941361 100644 --- a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policies_global.go +++ b/internal/connector/pingfederate/resources/session_authentication_policies_global.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSessionAuthenticationPoliciesGlobalResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSessionAuthenticationPoliciesGlobalResource -func SessionAuthenticationPoliciesGlobal(clientInfo *connector.PingFederateClientInfo) *PingFederateSessionAuthenticationPoliciesGlobalResource { +func SessionAuthenticationPoliciesGlobal(clientInfo *connector.ClientInfo) *PingFederateSessionAuthenticationPoliciesGlobalResource { return &PingFederateSessionAuthenticationPoliciesGlobalResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policies_global_test.go b/internal/connector/pingfederate/resources/session_authentication_policies_global_test.go similarity index 55% rename from internal/connector/pingfederate/resources/pingfederate_session_authentication_policies_global_test.go rename to internal/connector/pingfederate/resources/session_authentication_policies_global_test.go index f9fbb990..e4b0fc8e 100644 --- a/internal/connector/pingfederate/resources/pingfederate_session_authentication_policies_global_test.go +++ b/internal/connector/pingfederate/resources/session_authentication_policies_global_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateSessionAuthenticationPoliciesGlobalExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SessionAuthenticationPoliciesGlobal(PingFederateClientInfo) +func Test_PingFederateSessionAuthenticationPoliciesGlobal(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.SessionAuthenticationPoliciesGlobal(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_session_authentication_policies_global", + ResourceType: resource.ResourceType(), ResourceName: "Session Authentication Policies Global", ResourceID: "session_authentication_policies_global_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/session_authentication_policy.go b/internal/connector/pingfederate/resources/session_authentication_policy.go new file mode 100644 index 00000000..39b6ad3c --- /dev/null +++ b/internal/connector/pingfederate/resources/session_authentication_policy.go @@ -0,0 +1,106 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateSessionAuthenticationPolicyResource{} +) + +type PingFederateSessionAuthenticationPolicyResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateSessionAuthenticationPolicyResource +func SessionAuthenticationPolicy(clientInfo *connector.ClientInfo) *PingFederateSessionAuthenticationPolicyResource { + return &PingFederateSessionAuthenticationPolicyResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateSessionAuthenticationPolicyResource) ResourceType() string { + return "pingfederate_session_authentication_policy" +} + +func (r *PingFederateSessionAuthenticationPolicyResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + sessionAuthenticationPolicyData, err := r.getSessionAuthenticationPolicyData() + if err != nil { + return nil, err + } + + for sessionAuthenticationPolicyId, sessionAuthenticationPolicyInfo := range sessionAuthenticationPolicyData { + sessionAuthenticationPolicyAuthenticationSourceType := sessionAuthenticationPolicyInfo[0] + sessionAuthenticationPolicyAuthenticationSourceRefId := sessionAuthenticationPolicyInfo[1] + + commentData := map[string]string{ + "Session Authentication Policy ID": sessionAuthenticationPolicyId, + "Session Authentication Policy Authentication Source Type": sessionAuthenticationPolicyAuthenticationSourceType, + "Session Authentication Policy Authentication Source Ref ID": sessionAuthenticationPolicyAuthenticationSourceRefId, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s_%s", sessionAuthenticationPolicyId, sessionAuthenticationPolicyAuthenticationSourceType, sessionAuthenticationPolicyAuthenticationSourceRefId), + ResourceID: sessionAuthenticationPolicyId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateSessionAuthenticationPolicyResource) getSessionAuthenticationPolicyData() (map[string][]string, error) { + sessionAuthenticationPolicyData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.SessionAPI.GetSourcePolicies(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetSourcePolicies", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, sessionAuthenticationPolicy := range items { + sessionAuthenticationPolicyId, sessionAuthenticationPolicyIdOk := sessionAuthenticationPolicy.GetIdOk() + sessionAuthenticationPolicyAuthenticationSource, sessionAuthenticationPolicyAuthenticationSourceOk := sessionAuthenticationPolicy.GetAuthenticationSourceOk() + + if sessionAuthenticationPolicyIdOk && sessionAuthenticationPolicyAuthenticationSourceOk { + sessionAuthenticationPolicyAuthenticationSourceType, sessionAuthenticationPolicyAuthenticationSourceTypeOk := sessionAuthenticationPolicyAuthenticationSource.GetTypeOk() + sessionAuthenticationPolicyAuthenticationSourceRef, sessionAuthenticationPolicyAuthenticationSourceRefOk := sessionAuthenticationPolicyAuthenticationSource.GetSourceRefOk() + + if sessionAuthenticationPolicyAuthenticationSourceTypeOk && sessionAuthenticationPolicyAuthenticationSourceRefOk { + sessionAuthenticationPolicyAuthenticationSourceRefId, sessionAuthenticationPolicyAuthenticationSourceRefIdOk := sessionAuthenticationPolicyAuthenticationSourceRef.GetIdOk() + + if sessionAuthenticationPolicyAuthenticationSourceRefIdOk { + sessionAuthenticationPolicyData[*sessionAuthenticationPolicyId] = []string{*sessionAuthenticationPolicyAuthenticationSourceType, *sessionAuthenticationPolicyAuthenticationSourceRefId} + } + } + } + } + + return sessionAuthenticationPolicyData, nil +} diff --git a/internal/connector/pingfederate/resources/session_authentication_policy_test.go b/internal/connector/pingfederate/resources/session_authentication_policy_test.go new file mode 100644 index 00000000..2b63f03e --- /dev/null +++ b/internal/connector/pingfederate/resources/session_authentication_policy_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateSessionAuthenticationPolicy(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateSessionAuthenticationPolicy(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_%s_%s", creationInfo[testutils_resource.ENUM_ID], creationInfo[testutils_resource.ENUM_TYPE], creationInfo[testutils_resource.ENUM_SOURCE_REF_ID]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_session_settings.go b/internal/connector/pingfederate/resources/session_settings.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_session_settings.go rename to internal/connector/pingfederate/resources/session_settings.go index 23283a30..dae5853f 100644 --- a/internal/connector/pingfederate/resources/pingfederate_session_settings.go +++ b/internal/connector/pingfederate/resources/session_settings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSessionSettingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSessionSettingsResource -func SessionSettings(clientInfo *connector.PingFederateClientInfo) *PingFederateSessionSettingsResource { +func SessionSettings(clientInfo *connector.ClientInfo) *PingFederateSessionSettingsResource { return &PingFederateSessionSettingsResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_session_settings_test.go b/internal/connector/pingfederate/resources/session_settings_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_session_settings_test.go rename to internal/connector/pingfederate/resources/session_settings_test.go index cddb90ce..08bac9eb 100644 --- a/internal/connector/pingfederate/resources/pingfederate_session_settings_test.go +++ b/internal/connector/pingfederate/resources/session_settings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateSessionSettingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SessionSettings(PingFederateClientInfo) +func Test_PingFederateSessionSettings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.SessionSettings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_session_settings", + ResourceType: resource.ResourceType(), ResourceName: "Session Settings", ResourceID: "session_settings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_adapter.go b/internal/connector/pingfederate/resources/sp_adapter.go similarity index 68% rename from internal/connector/pingfederate/resources/pingfederate_sp_adapter.go rename to internal/connector/pingfederate/resources/sp_adapter.go index 0c28d70f..fe5b53fe 100644 --- a/internal/connector/pingfederate/resources/pingfederate_sp_adapter.go +++ b/internal/connector/pingfederate/resources/sp_adapter.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSpAdapterResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSpAdapterResource -func SpAdapter(clientInfo *connector.PingFederateClientInfo) *PingFederateSpAdapterResource { +func SpAdapter(clientInfo *connector.ClientInfo) *PingFederateSpAdapterResource { return &PingFederateSpAdapterResource{ clientInfo: clientInfo, } @@ -32,16 +32,16 @@ func (r *PingFederateSpAdapterResource) ExportAll() (*[]connector.ImportBlock, e importBlocks := []connector.ImportBlock{} - spAdaptersData, err := r.getSpAdaptersData() + spAdapterData, err := r.getSpAdapterData() if err != nil { return nil, err } - for spAdapterId, spAdapterName := range spAdaptersData { + for spAdapterId, spAdapterName := range spAdapterData { commentData := map[string]string{ + "Sp Adapter ID": spAdapterId, + "Sp Adapter Name": spAdapterName, "Resource Type": r.ResourceType(), - "SP Adapter ID": spAdapterId, - "SP Adapter Name": spAdapterName, } importBlock := connector.ImportBlock{ @@ -57,10 +57,10 @@ func (r *PingFederateSpAdapterResource) ExportAll() (*[]connector.ImportBlock, e return &importBlocks, nil } -func (r *PingFederateSpAdapterResource) getSpAdaptersData() (map[string]string, error) { - spAdaptersData := make(map[string]string) +func (r *PingFederateSpAdapterResource) getSpAdapterData() (map[string]string, error) { + spAdapterData := make(map[string]string) - spAdapters, response, err := r.clientInfo.ApiClient.SpAdaptersAPI.GetSpAdapters(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.SpAdaptersAPI.GetSpAdapters(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetSpAdapters", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateSpAdapterResource) getSpAdaptersData() (map[string]string, return nil, nil } - if spAdapters == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - spAdaptersItems, spAdaptersItemsOk := spAdapters.GetItemsOk() - if !spAdaptersItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, spAdapter := range spAdaptersItems { + for _, spAdapter := range items { spAdapterId, spAdapterIdOk := spAdapter.GetIdOk() spAdapterName, spAdapterNameOk := spAdapter.GetNameOk() if spAdapterIdOk && spAdapterNameOk { - spAdaptersData[*spAdapterId] = *spAdapterName + spAdapterData[*spAdapterId] = *spAdapterName } } - return spAdaptersData, nil + return spAdapterData, nil } diff --git a/internal/connector/pingfederate/resources/sp_adapter_test.go b/internal/connector/pingfederate/resources/sp_adapter_test.go new file mode 100644 index 00000000..fc784358 --- /dev/null +++ b/internal/connector/pingfederate/resources/sp_adapter_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateSpAdapter(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateSpAdapter(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/sp_authentication_policy_contract_mapping.go b/internal/connector/pingfederate/resources/sp_authentication_policy_contract_mapping.go new file mode 100644 index 00000000..21517cb6 --- /dev/null +++ b/internal/connector/pingfederate/resources/sp_authentication_policy_contract_mapping.go @@ -0,0 +1,98 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateSpAuthenticationPolicyContractMappingResource{} +) + +type PingFederateSpAuthenticationPolicyContractMappingResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateSpAuthenticationPolicyContractMappingResource +func SpAuthenticationPolicyContractMapping(clientInfo *connector.ClientInfo) *PingFederateSpAuthenticationPolicyContractMappingResource { + return &PingFederateSpAuthenticationPolicyContractMappingResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateSpAuthenticationPolicyContractMappingResource) ResourceType() string { + return "pingfederate_sp_authentication_policy_contract_mapping" +} + +func (r *PingFederateSpAuthenticationPolicyContractMappingResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + spAuthenticationPolicyContractMappingData, err := r.getSpAuthenticationPolicyContractMappingData() + if err != nil { + return nil, err + } + + for spAuthenticationPolicyContractMappingId, spAuthenticationPolicyContractMappingInfo := range spAuthenticationPolicyContractMappingData { + spAuthenticationPolicyContractMappingSourceId := spAuthenticationPolicyContractMappingInfo[0] + spAuthenticationPolicyContractMappingTargetId := spAuthenticationPolicyContractMappingInfo[1] + + commentData := map[string]string{ + "Sp Authentication Policy Contract Mapping ID": spAuthenticationPolicyContractMappingId, + "Authentication Policy Contract ID": spAuthenticationPolicyContractMappingSourceId, + "Sp Adapter ID": spAuthenticationPolicyContractMappingTargetId, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", spAuthenticationPolicyContractMappingSourceId, spAuthenticationPolicyContractMappingTargetId), + ResourceID: spAuthenticationPolicyContractMappingId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateSpAuthenticationPolicyContractMappingResource) getSpAuthenticationPolicyContractMappingData() (map[string][]string, error) { + spAuthenticationPolicyContractMappingData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.SpAuthenticationPolicyContractMappingsAPI.GetApcToSpAdapterMappings(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetApcToSpAdapterMappings", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, spAuthenticationPolicyContractMapping := range items { + spAuthenticationPolicyContractMappingId, spAuthenticationPolicyContractMappingIdOk := spAuthenticationPolicyContractMapping.GetIdOk() + spAuthenticationPolicyContractMappingSourceId, spAuthenticationPolicyContractMappingSourceIdOk := spAuthenticationPolicyContractMapping.GetSourceIdOk() + spAuthenticationPolicyContractMappingTargetId, spAuthenticationPolicyContractMappingTargetIdOk := spAuthenticationPolicyContractMapping.GetTargetIdOk() + + if spAuthenticationPolicyContractMappingIdOk && spAuthenticationPolicyContractMappingSourceIdOk && spAuthenticationPolicyContractMappingTargetIdOk { + spAuthenticationPolicyContractMappingData[*spAuthenticationPolicyContractMappingId] = []string{*spAuthenticationPolicyContractMappingSourceId, *spAuthenticationPolicyContractMappingTargetId} + } + } + + return spAuthenticationPolicyContractMappingData, nil +} diff --git a/internal/connector/pingfederate/resources/sp_authentication_policy_contract_mapping_test.go b/internal/connector/pingfederate/resources/sp_authentication_policy_contract_mapping_test.go new file mode 100644 index 00000000..f6578eb1 --- /dev/null +++ b/internal/connector/pingfederate/resources/sp_authentication_policy_contract_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateSpAuthenticationPolicyContractMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateSpAuthenticationPolicyContractMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", creationInfo[testutils_resource.ENUM_SOURCE_ID], creationInfo[testutils_resource.ENUM_TARGET_ID]), + ResourceID: fmt.Sprintf("%s|%s", creationInfo[testutils_resource.ENUM_SOURCE_ID], creationInfo[testutils_resource.ENUM_TARGET_ID]), + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_idp_connection.go b/internal/connector/pingfederate/resources/sp_idp_connection.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_sp_idp_connection.go rename to internal/connector/pingfederate/resources/sp_idp_connection.go index 0150b0a2..fa7ad5e6 100644 --- a/internal/connector/pingfederate/resources/pingfederate_sp_idp_connection.go +++ b/internal/connector/pingfederate/resources/sp_idp_connection.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSpIdpConnectionResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSpIdpConnectionResource -func SpIdpConnection(clientInfo *connector.PingFederateClientInfo) *PingFederateSpIdpConnectionResource { +func SpIdpConnection(clientInfo *connector.ClientInfo) *PingFederateSpIdpConnectionResource { return &PingFederateSpIdpConnectionResource{ clientInfo: clientInfo, } @@ -32,22 +32,22 @@ func (r *PingFederateSpIdpConnectionResource) ExportAll() (*[]connector.ImportBl importBlocks := []connector.ImportBlock{} - idpConnectionData, err := r.getIdpConnectionData() + spIdpConnectionData, err := r.getSpIdpConnectionData() if err != nil { return nil, err } - for idpConnectionId, idpConnectionName := range idpConnectionData { + for spIdpConnectionId, spIdpConnectionName := range spIdpConnectionData { commentData := map[string]string{ + "Sp Idp Connection ID": spIdpConnectionId, + "Sp Idp Connection Name": spIdpConnectionName, "Resource Type": r.ResourceType(), - "SP IDP Connection ID": idpConnectionId, - "SP IDP Connection Name": idpConnectionName, } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), - ResourceName: idpConnectionName, - ResourceID: idpConnectionId, + ResourceName: spIdpConnectionName, + ResourceID: spIdpConnectionId, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -57,10 +57,10 @@ func (r *PingFederateSpIdpConnectionResource) ExportAll() (*[]connector.ImportBl return &importBlocks, nil } -func (r *PingFederateSpIdpConnectionResource) getIdpConnectionData() (map[string]string, error) { - idpConnectionData := make(map[string]string) +func (r *PingFederateSpIdpConnectionResource) getSpIdpConnectionData() (map[string]string, error) { + spIdpConnectionData := make(map[string]string) - idpConnections, response, err := r.clientInfo.ApiClient.SpIdpConnectionsAPI.GetConnections(r.clientInfo.Context).Execute() + apiObj, response, err := r.clientInfo.PingFederateApiClient.SpIdpConnectionsAPI.GetConnections(r.clientInfo.PingFederateContext).Execute() ok, err := common.HandleClientResponse(response, err, "GetConnections", r.ResourceType()) if err != nil { return nil, err @@ -69,23 +69,23 @@ func (r *PingFederateSpIdpConnectionResource) getIdpConnectionData() (map[string return nil, nil } - if idpConnections == nil { + if apiObj == nil { return nil, common.DataNilError(r.ResourceType(), response) } - idpConnectionsItems, idpConnectionsItemsOk := idpConnections.GetItemsOk() - if !idpConnectionsItemsOk { + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { return nil, common.DataNilError(r.ResourceType(), response) } - for _, idpConnection := range idpConnectionsItems { - idpConnectionId, idpConnectionIdOk := idpConnection.GetIdOk() - idpConnectionName, idpConnectionNameOk := idpConnection.GetNameOk() + for _, spIdpConnection := range items { + spIdpConnectionId, spIdpConnectionIdOk := spIdpConnection.GetIdOk() + spIdpConnectionName, spIdpConnectionNameOk := spIdpConnection.GetNameOk() - if idpConnectionIdOk && idpConnectionNameOk { - idpConnectionData[*idpConnectionId] = *idpConnectionName + if spIdpConnectionIdOk && spIdpConnectionNameOk { + spIdpConnectionData[*spIdpConnectionId] = *spIdpConnectionName } } - return idpConnectionData, nil + return spIdpConnectionData, nil } diff --git a/internal/connector/pingfederate/resources/sp_idp_connection_test.go b/internal/connector/pingfederate/resources/sp_idp_connection_test.go new file mode 100644 index 00000000..ba99f047 --- /dev/null +++ b/internal/connector/pingfederate/resources/sp_idp_connection_test.go @@ -0,0 +1,30 @@ +package resources_test + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateSpIdpConnection(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateSpIdpConnection(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: creationInfo[testutils_resource.ENUM_NAME], + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_target_url_mappings.go b/internal/connector/pingfederate/resources/sp_target_url_mappings.go similarity index 87% rename from internal/connector/pingfederate/resources/pingfederate_sp_target_url_mappings.go rename to internal/connector/pingfederate/resources/sp_target_url_mappings.go index f9d7b3ed..63a604a8 100644 --- a/internal/connector/pingfederate/resources/pingfederate_sp_target_url_mappings.go +++ b/internal/connector/pingfederate/resources/sp_target_url_mappings.go @@ -12,11 +12,11 @@ var ( ) type PingFederateSpTargetUrlMappingsResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateSpTargetUrlMappingsResource -func SpTargetUrlMappings(clientInfo *connector.PingFederateClientInfo) *PingFederateSpTargetUrlMappingsResource { +func SpTargetUrlMappings(clientInfo *connector.ClientInfo) *PingFederateSpTargetUrlMappingsResource { return &PingFederateSpTargetUrlMappingsResource{ clientInfo: clientInfo, } @@ -33,7 +33,7 @@ func (r *PingFederateSpTargetUrlMappingsResource) ExportAll() (*[]connector.Impo importBlocks := []connector.ImportBlock{} spTargetUrlMappingsId := "sp_target_url_mappings_singleton_id" - spTargetUrlMappingsName := "SP Target URL Mappings" + spTargetUrlMappingsName := "Sp Target Url Mappings" commentData := map[string]string{ "Resource Type": r.ResourceType(), diff --git a/internal/connector/pingfederate/resources/pingfederate_sp_target_url_mappings_test.go b/internal/connector/pingfederate/resources/sp_target_url_mappings_test.go similarity index 52% rename from internal/connector/pingfederate/resources/pingfederate_sp_target_url_mappings_test.go rename to internal/connector/pingfederate/resources/sp_target_url_mappings_test.go index c5a8a791..dda605b0 100644 --- a/internal/connector/pingfederate/resources/pingfederate_sp_target_url_mappings_test.go +++ b/internal/connector/pingfederate/resources/sp_target_url_mappings_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateSpTargetUrlMappingsExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.SpTargetUrlMappings(PingFederateClientInfo) +func Test_PingFederateSpTargetUrlMappings(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.SpTargetUrlMappings(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_sp_target_url_mappings", - ResourceName: "SP Target URL Mappings", + ResourceType: resource.ResourceType(), + ResourceName: "Sp Target Url Mappings", ResourceID: "sp_target_url_mappings_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingfederate/resources/token_processor_to_token_generator_mapping.go b/internal/connector/pingfederate/resources/token_processor_to_token_generator_mapping.go new file mode 100644 index 00000000..bebae825 --- /dev/null +++ b/internal/connector/pingfederate/resources/token_processor_to_token_generator_mapping.go @@ -0,0 +1,98 @@ +package resources + +import ( + "fmt" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/logger" +) + +// Verify that the resource satisfies the exportable resource interface +var ( + _ connector.ExportableResource = &PingFederateTokenProcessorToTokenGeneratorMappingResource{} +) + +type PingFederateTokenProcessorToTokenGeneratorMappingResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingFederateTokenProcessorToTokenGeneratorMappingResource +func TokenProcessorToTokenGeneratorMapping(clientInfo *connector.ClientInfo) *PingFederateTokenProcessorToTokenGeneratorMappingResource { + return &PingFederateTokenProcessorToTokenGeneratorMappingResource{ + clientInfo: clientInfo, + } +} + +func (r *PingFederateTokenProcessorToTokenGeneratorMappingResource) ResourceType() string { + return "pingfederate_token_processor_to_token_generator_mapping" +} + +func (r *PingFederateTokenProcessorToTokenGeneratorMappingResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + tokenProcessorToTokenGeneratorMappingData, err := r.getTokenProcessorToTokenGeneratorMappingData() + if err != nil { + return nil, err + } + + for tokenProcessorToTokenGeneratorMappingId, tokenProcessorToTokenGeneratorMappingInfo := range tokenProcessorToTokenGeneratorMappingData { + tokenProcessorToTokenGeneratorMappingSourceId := tokenProcessorToTokenGeneratorMappingInfo[0] + tokenProcessorToTokenGeneratorMappingTargetId := tokenProcessorToTokenGeneratorMappingInfo[1] + + commentData := map[string]string{ + "Token Processor To Token Generator Mapping ID": tokenProcessorToTokenGeneratorMappingId, + "Token Processor ID": tokenProcessorToTokenGeneratorMappingSourceId, + "Token Generator ID": tokenProcessorToTokenGeneratorMappingTargetId, + "Resource Type": r.ResourceType(), + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", tokenProcessorToTokenGeneratorMappingSourceId, tokenProcessorToTokenGeneratorMappingTargetId), + ResourceID: tokenProcessorToTokenGeneratorMappingId, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + } + + return &importBlocks, nil +} + +func (r *PingFederateTokenProcessorToTokenGeneratorMappingResource) getTokenProcessorToTokenGeneratorMappingData() (map[string][]string, error) { + tokenProcessorToTokenGeneratorMappingData := make(map[string][]string) + + apiObj, response, err := r.clientInfo.PingFederateApiClient.TokenProcessorToTokenGeneratorMappingsAPI.GetTokenToTokenMappings(r.clientInfo.PingFederateContext).Execute() + ok, err := common.HandleClientResponse(response, err, "GetTokenToTokenMappings", r.ResourceType()) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + if apiObj == nil { + return nil, common.DataNilError(r.ResourceType(), response) + } + + items, itemsOk := apiObj.GetItemsOk() + if !itemsOk { + return nil, common.DataNilError(r.ResourceType(), response) + } + + for _, tokenProcessorToTokenGeneratorMapping := range items { + tokenProcessorToTokenGeneratorMappingId, tokenProcessorToTokenGeneratorMappingIdOk := tokenProcessorToTokenGeneratorMapping.GetIdOk() + tokenProcessorToTokenGeneratorMappingSourceId, tokenProcessorToTokenGeneratorMappingSourceIdOk := tokenProcessorToTokenGeneratorMapping.GetSourceIdOk() + tokenProcessorToTokenGeneratorMappingTargetId, tokenProcessorToTokenGeneratorMappingTargetIdOk := tokenProcessorToTokenGeneratorMapping.GetTargetIdOk() + + if tokenProcessorToTokenGeneratorMappingIdOk && tokenProcessorToTokenGeneratorMappingSourceIdOk && tokenProcessorToTokenGeneratorMappingTargetIdOk { + tokenProcessorToTokenGeneratorMappingData[*tokenProcessorToTokenGeneratorMappingId] = []string{*tokenProcessorToTokenGeneratorMappingSourceId, *tokenProcessorToTokenGeneratorMappingTargetId} + } + } + + return tokenProcessorToTokenGeneratorMappingData, nil +} diff --git a/internal/connector/pingfederate/resources/token_processor_to_token_generator_mapping_test.go b/internal/connector/pingfederate/resources/token_processor_to_token_generator_mapping_test.go new file mode 100644 index 00000000..10b27741 --- /dev/null +++ b/internal/connector/pingfederate/resources/token_processor_to_token_generator_mapping_test.go @@ -0,0 +1,31 @@ +package resources_test + +import ( + "fmt" + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingfederate" +) + +func Test_PingFederateTokenProcessorToTokenGeneratorMapping(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingfederate.TestableResource_PingFederateTokenProcessorToTokenGeneratorMapping(t, clientInfo) + + creationInfo := tr.CreateResource(t) + defer tr.DeleteResource(t) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: fmt.Sprintf("%s_to_%s", creationInfo[testutils_resource.ENUM_SOURCE_ID], creationInfo[testutils_resource.ENUM_TARGET_ID]), + ResourceID: creationInfo[testutils_resource.ENUM_ID], + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) + +} diff --git a/internal/connector/pingfederate/resources/pingfederate_virtual_host_names.go b/internal/connector/pingfederate/resources/virtual_host_names.go similarity index 90% rename from internal/connector/pingfederate/resources/pingfederate_virtual_host_names.go rename to internal/connector/pingfederate/resources/virtual_host_names.go index d20069a2..01a844e7 100644 --- a/internal/connector/pingfederate/resources/pingfederate_virtual_host_names.go +++ b/internal/connector/pingfederate/resources/virtual_host_names.go @@ -12,11 +12,11 @@ var ( ) type PingFederateVirtualHostNamesResource struct { - clientInfo *connector.PingFederateClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingFederateVirtualHostNamesResource -func VirtualHostNames(clientInfo *connector.PingFederateClientInfo) *PingFederateVirtualHostNamesResource { +func VirtualHostNames(clientInfo *connector.ClientInfo) *PingFederateVirtualHostNamesResource { return &PingFederateVirtualHostNamesResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingfederate/resources/pingfederate_virtual_host_names_test.go b/internal/connector/pingfederate/resources/virtual_host_names_test.go similarity index 57% rename from internal/connector/pingfederate/resources/pingfederate_virtual_host_names_test.go rename to internal/connector/pingfederate/resources/virtual_host_names_test.go index cfc18661..1f1c2f45 100644 --- a/internal/connector/pingfederate/resources/pingfederate_virtual_host_names_test.go +++ b/internal/connector/pingfederate/resources/virtual_host_names_test.go @@ -8,19 +8,19 @@ import ( "github.com/pingidentity/pingcli/internal/testing/testutils" ) -func TestPingFederateVirtualHostNamesExport(t *testing.T) { - // Get initialized apiClient and resource - PingFederateClientInfo := testutils.GetPingFederateClientInfo(t) - resource := resources.VirtualHostNames(PingFederateClientInfo) +func Test_PingFederateVirtualHostNames(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + resource := resources.VirtualHostNames(clientInfo) - // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { - ResourceType: "pingfederate_virtual_host_names", + ResourceType: resource.ResourceType(), ResourceName: "Virtual Host Names", ResourceID: "virtual_host_names_singleton_id", }, } testutils.ValidateImportBlocks(t, resource, &expectedImportBlocks) + } diff --git a/internal/connector/pingone/authorize/pingone_authorize_connector.go b/internal/connector/pingone/authorize/pingone_authorize_connector.go index af2d312b..a62d69c2 100644 --- a/internal/connector/pingone/authorize/pingone_authorize_connector.go +++ b/internal/connector/pingone/authorize/pingone_authorize_connector.go @@ -21,17 +21,17 @@ var ( ) type PingoneAuthorizeConnector struct { - clientInfo connector.PingOneClientInfo + clientInfo connector.ClientInfo } // Utility method for creating a PingoneAuthorizeConnector func AuthorizeConnector(ctx context.Context, apiClient *pingoneGoClient.Client, apiClientId *string, exportEnvironmentID string) *PingoneAuthorizeConnector { return &PingoneAuthorizeConnector{ - clientInfo: connector.PingOneClientInfo{ - Context: ctx, - ApiClient: apiClient, - ApiClientId: apiClientId, - ExportEnvironmentID: exportEnvironmentID, + clientInfo: connector.ClientInfo{ + PingOneContext: ctx, + PingOneApiClient: apiClient, + PingOneApiClientId: *apiClientId, + PingOneExportEnvironmentID: exportEnvironmentID, }, } } diff --git a/internal/connector/pingone/authorize/pingone_authorize_connector_test.go b/internal/connector/pingone/authorize/pingone_authorize_connector_test.go index 0cc8923b..00ce8c95 100644 --- a/internal/connector/pingone/authorize/pingone_authorize_connector_test.go +++ b/internal/connector/pingone/authorize/pingone_authorize_connector_test.go @@ -10,7 +10,7 @@ import ( ) func TestAuthorizeTerraformPlan(t *testing.T) { - PingOneClientInfo := testutils.GetPingOneClientInfo(t) + clientInfo := testutils.GetClientInfo(t) testutils_terraform.InitPingOneTerraform(t) @@ -21,32 +21,32 @@ func TestAuthorizeTerraformPlan(t *testing.T) { }{ { name: "AuthorizeAPIService", - resource: resources.AuthorizeAPIService(PingOneClientInfo), + resource: resources.AuthorizeAPIService(clientInfo), ignoredErrors: nil, }, { name: "AuthorizeAPIServiceDeployment", - resource: resources.AuthorizeAPIServiceDeployment(PingOneClientInfo), + resource: resources.AuthorizeAPIServiceDeployment(clientInfo), ignoredErrors: nil, }, { name: "AuthorizeAPIServiceOperation", - resource: resources.AuthorizeAPIServiceOperation(PingOneClientInfo), + resource: resources.AuthorizeAPIServiceOperation(clientInfo), ignoredErrors: nil, }, { name: "AuthorizeApplicationRole", - resource: resources.AuthorizeApplicationRole(PingOneClientInfo), + resource: resources.AuthorizeApplicationRole(clientInfo), ignoredErrors: nil, }, { name: "AuthorizeApplicationRolePermission", - resource: resources.AuthorizeApplicationRolePermission(PingOneClientInfo), + resource: resources.AuthorizeApplicationRolePermission(clientInfo), ignoredErrors: nil, }, { name: "AuthorizeDecisionEndpoint", - resource: resources.AuthorizeDecisionEndpoint(PingOneClientInfo), + resource: resources.AuthorizeDecisionEndpoint(clientInfo), ignoredErrors: nil, }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_application_resource.go b/internal/connector/pingone/authorize/resources/pingone_application_resource.go index e35f7530..24d7863d 100644 --- a/internal/connector/pingone/authorize/resources/pingone_application_resource.go +++ b/internal/connector/pingone/authorize/resources/pingone_application_resource.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationResourceResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationResourceResource -func ApplicationResource(clientInfo *connector.PingOneClientInfo) *PingOneApplicationResourceResource { +func ApplicationResource(clientInfo *connector.ClientInfo) *PingOneApplicationResourceResource { return &PingOneApplicationResourceResource{ clientInfo: clientInfo, } @@ -53,14 +53,14 @@ func (r *PingOneApplicationResourceResource) ExportAll() (*[]connector.ImportBlo "PingOne Resource Name": applicationResourceObj.resourceName, "Application Resource ID": applicationResourceId, "Application Resource Name": applicationResourceObj.applicationResourceName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", applicationResourceObj.resourceName, applicationResourceObj.applicationResourceName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, applicationResourceObj.resourceId, applicationResourceId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, applicationResourceObj.resourceId, applicationResourceId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -73,7 +73,7 @@ func (r *PingOneApplicationResourceResource) ExportAll() (*[]connector.ImportBlo func (r *PingOneApplicationResourceResource) getApplicationResourceData() (map[string]applicationResourceObj, error) { applicationResourceData := make(map[string]applicationResourceObj) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.ApplicationResourcesApi.ReadApplicationResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.ApplicationResourcesApi.ReadApplicationResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applicationResources, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.ApplicationResource](iter, "ReadApplicationResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -86,7 +86,7 @@ func (r *PingOneApplicationResourceResource) getApplicationResourceData() (map[s if applicationResourceIdOk && applicationResourceNameOk && resourceIdOk { - resourceObj, httpResponse, err := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadOneResource(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, *resourceId).Execute() + resourceObj, httpResponse, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadOneResource(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, *resourceId).Execute() ok, err := common.HandleClientResponse(httpResponse, err, "ReadOneResource", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_application_resource_permission.go b/internal/connector/pingone/authorize/resources/pingone_application_resource_permission.go index 875184e4..23457c21 100644 --- a/internal/connector/pingone/authorize/resources/pingone_application_resource_permission.go +++ b/internal/connector/pingone/authorize/resources/pingone_application_resource_permission.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeApplicationResourcePermissionResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeApplicationResourcePermissionResource -func AuthorizeApplicationResourcePermission(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeApplicationResourcePermissionResource { +func AuthorizeApplicationResourcePermission(clientInfo *connector.ClientInfo) *PingoneAuthorizeApplicationResourcePermissionResource { return &PingoneAuthorizeApplicationResourcePermissionResource{ clientInfo: clientInfo, } @@ -49,14 +49,14 @@ func (r *PingoneAuthorizeApplicationResourcePermissionResource) ExportAll() (*[] "Application Resource Name": appResourceName, "Application Resource Permission ID": appResourcePermissionId, "Application Resource Permission Key": appResourcePermissionKey, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: appResourcePermissionKey, - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appResourceId, appResourcePermissionId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appResourceId, appResourcePermissionId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -70,7 +70,7 @@ func (r *PingoneAuthorizeApplicationResourcePermissionResource) ExportAll() (*[] func (r *PingoneAuthorizeApplicationResourcePermissionResource) getApplicationResourceData() (map[string]string, error) { applicationResourceData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.ApplicationResourcesApi.ReadApplicationResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.ApplicationResourcesApi.ReadApplicationResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applicationResources, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.ApplicationResource](iter, "ReadApplicationResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -91,7 +91,7 @@ func (r *PingoneAuthorizeApplicationResourcePermissionResource) getApplicationRe func (r *PingoneAuthorizeApplicationResourcePermissionResource) getApplicationResourcePermissionData(appResourceId string) (map[string]string, error) { applicationResourcePermissionData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.ApplicationResourcePermissionsApi.ReadApplicationPermissions(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appResourceId).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.ApplicationResourcePermissionsApi.ReadApplicationPermissions(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appResourceId).Execute() applicationResourcePermissions, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.EntityArrayEmbeddedPermissionsInner](iter, "ReadApplicationPermissions", "GetPermissions", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_application_resource_permission_test.go b/internal/connector/pingone/authorize/resources/pingone_application_resource_permission_test.go index e0e055ed..9bc41b40 100644 --- a/internal/connector/pingone/authorize/resources/pingone_application_resource_permission_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_application_resource_permission_test.go @@ -11,20 +11,20 @@ import ( func TestAuthorizeApplicationResourcePermissionExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeApplicationResourcePermission(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeApplicationResourcePermission(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_resource_permission", ResourceName: "test-permission1:action1", - ResourceID: fmt.Sprintf("%s/62b8a221-a530-44f4-ad02-cdb0d3b1395f/080dd732-99ea-4730-a8a6-8da88a232131", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/62b8a221-a530-44f4-ad02-cdb0d3b1395f/080dd732-99ea-4730-a8a6-8da88a232131", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_resource_permission", ResourceName: "test-permission1:action2", - ResourceID: fmt.Sprintf("%s/62b8a221-a530-44f4-ad02-cdb0d3b1395f/05717cf9-3ce4-443a-8154-1986fe984780", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/62b8a221-a530-44f4-ad02-cdb0d3b1395f/05717cf9-3ce4-443a-8154-1986fe984780", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_application_resource_test.go b/internal/connector/pingone/authorize/resources/pingone_application_resource_test.go index f0bd44fe..cdd420d4 100644 --- a/internal/connector/pingone/authorize/resources/pingone_application_resource_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_application_resource_test.go @@ -11,15 +11,15 @@ import ( func TestApplicationResourceExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationResource(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationResource(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_resource", ResourceName: "authorize-api-service_test-permission1", - ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/62b8a221-a530-44f4-ad02-cdb0d3b1395f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/62b8a221-a530-44f4-ad02-cdb0d3b1395f", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service.go b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service.go index 3af7aab0..2b70f9d7 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeAPIServiceResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeAPIServiceResource -func AuthorizeAPIService(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeAPIServiceResource { +func AuthorizeAPIService(clientInfo *connector.ClientInfo) *PingoneAuthorizeAPIServiceResource { return &PingoneAuthorizeAPIServiceResource{ clientInfo: clientInfo, } @@ -39,7 +39,7 @@ func (r *PingoneAuthorizeAPIServiceResource) ExportAll() (*[]connector.ImportBlo for apiServerId, apiServerName := range APIServerData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "API Server ID": apiServerId, "API Server Name": apiServerName, "Resource Type": r.ResourceType(), @@ -48,7 +48,7 @@ func (r *PingoneAuthorizeAPIServiceResource) ExportAll() (*[]connector.ImportBlo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: apiServerName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, apiServerId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, apiServerId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -61,7 +61,7 @@ func (r *PingoneAuthorizeAPIServiceResource) ExportAll() (*[]connector.ImportBlo func (r *PingoneAuthorizeAPIServiceResource) getAPIServerData() (map[string]string, error) { apiServerData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.APIServersApi.ReadAllAPIServers(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.APIServersApi.ReadAllAPIServers(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() apiServers, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.APIServer](iter, "ReadAllAPIServers", "GetApiServers", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment.go b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment.go index 5e5ddab2..18bc70d8 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeAPIServiceDeploymentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeAPIServiceDeploymentResource -func AuthorizeAPIServiceDeployment(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeAPIServiceDeploymentResource { +func AuthorizeAPIServiceDeployment(clientInfo *connector.ClientInfo) *PingoneAuthorizeAPIServiceDeploymentResource { return &PingoneAuthorizeAPIServiceDeploymentResource{ clientInfo: clientInfo, } @@ -47,14 +47,14 @@ func (r *PingoneAuthorizeAPIServiceDeploymentResource) ExportAll() (*[]connector commentData := map[string]string{ "API Service ID": apiServiceId, "API Service Name": apiServiceName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: apiServiceName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, apiServiceId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, apiServiceId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -68,7 +68,7 @@ func (r *PingoneAuthorizeAPIServiceDeploymentResource) ExportAll() (*[]connector func (r *PingoneAuthorizeAPIServiceDeploymentResource) getAPIServiceData() (map[string]string, error) { apiServiceData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.APIServersApi.ReadAllAPIServers(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.APIServersApi.ReadAllAPIServers(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() apiServices, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.APIServer](iter, "ReadAllAPIServers", "GetApiServers", r.ResourceType()) if err != nil { return nil, err @@ -88,7 +88,7 @@ func (r *PingoneAuthorizeAPIServiceDeploymentResource) getAPIServiceData() (map[ func (r *PingoneAuthorizeAPIServiceDeploymentResource) getAPIServiceDeployed(apiServiceId string) (bool, error) { - apiServerDeployment, httpResponse, err := r.clientInfo.ApiClient.AuthorizeAPIClient.APIServerDeploymentApi.ReadDeploymentStatus(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, apiServiceId).Execute() + apiServerDeployment, httpResponse, err := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.APIServerDeploymentApi.ReadDeploymentStatus(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, apiServiceId).Execute() ok, err := common.HandleClientResponse(httpResponse, err, "ReadDeploymentStatus", r.ResourceType()) if err != nil { return false, err diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment_test.go b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment_test.go index 151e701b..64b837c8 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_deployment_test.go @@ -11,15 +11,15 @@ import ( func TestAuthorizeAPIServiceDeploymentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeAPIServiceDeployment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeAPIServiceDeployment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_authorize_api_service_deployment", ResourceName: "Test API Service", - ResourceID: fmt.Sprintf("%s/cee5d5a9-49aa-478d-816e-ec47a2b5aede", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/cee5d5a9-49aa-478d-816e-ec47a2b5aede", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation.go b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation.go index 242ceb16..682d8164 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeAPIServiceOperationResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeAPIServiceOperationResource -func AuthorizeAPIServiceOperation(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeAPIServiceOperationResource { +func AuthorizeAPIServiceOperation(clientInfo *connector.ClientInfo) *PingoneAuthorizeAPIServiceOperationResource { return &PingoneAuthorizeAPIServiceOperationResource{ clientInfo: clientInfo, } @@ -49,14 +49,14 @@ func (r *PingoneAuthorizeAPIServiceOperationResource) ExportAll() (*[]connector. "API Service Name": apiServiceName, "API Service Operation ID": apiServiceOperationId, "API Service Operation Name": apiServiceOperationName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", apiServiceName, apiServiceOperationName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, apiServiceId, apiServiceOperationId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, apiServiceId, apiServiceOperationId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -70,7 +70,7 @@ func (r *PingoneAuthorizeAPIServiceOperationResource) ExportAll() (*[]connector. func (r *PingoneAuthorizeAPIServiceOperationResource) getAPIServiceData() (map[string]string, error) { apiServiceData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.APIServersApi.ReadAllAPIServers(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.APIServersApi.ReadAllAPIServers(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() apiServices, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.APIServer](iter, "ReadAllAPIServers", "GetApiServers", r.ResourceType()) if err != nil { return nil, err @@ -91,7 +91,7 @@ func (r *PingoneAuthorizeAPIServiceOperationResource) getAPIServiceData() (map[s func (r *PingoneAuthorizeAPIServiceOperationResource) getAPIServiceOperationData(apiServiceId string) (map[string]string, error) { apiServiceOperationData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.APIServerOperationsApi.ReadAllAPIServerOperations(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, apiServiceId).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.APIServerOperationsApi.ReadAllAPIServerOperations(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, apiServiceId).Execute() apiServiceOperations, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.APIServerOperation](iter, "ReadAllAPIServerOperations", "GetOperations", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation_test.go b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation_test.go index 0b09b7e0..84281777 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_operation_test.go @@ -11,15 +11,15 @@ import ( func TestAuthorizeAPIServiceOperationExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeAPIServiceOperation(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeAPIServiceOperation(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_authorize_api_service_operation", ResourceName: "Test API Service_My Path", - ResourceID: fmt.Sprintf("%s/cee5d5a9-49aa-478d-816e-ec47a2b5aede/07fc42c1-d998-40bd-bb64-143911924608", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/cee5d5a9-49aa-478d-816e-ec47a2b5aede/07fc42c1-d998-40bd-bb64-143911924608", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_test.go b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_test.go index acf234bb..b55a4520 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_api_service_test.go @@ -11,20 +11,20 @@ import ( func TestAuthorizeAPIServiceExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeAPIService(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeAPIService(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_authorize_api_service", ResourceName: "Test API Service", - ResourceID: fmt.Sprintf("%s/cee5d5a9-49aa-478d-816e-ec47a2b5aede", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/cee5d5a9-49aa-478d-816e-ec47a2b5aede", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_authorize_api_service", ResourceName: "Undeployed Test API Service", - ResourceID: fmt.Sprintf("%s/5558f5ab-46b2-40ef-ac78-9a32a07e31c3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5558f5ab-46b2-40ef-ac78-9a32a07e31c3", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role.go b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role.go index bec9eaf8..28eb7f44 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeApplicationRoleResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeApplicationRoleResource -func AuthorizeApplicationRole(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeApplicationRoleResource { +func AuthorizeApplicationRole(clientInfo *connector.ClientInfo) *PingoneAuthorizeApplicationRoleResource { return &PingoneAuthorizeApplicationRoleResource{ clientInfo: clientInfo, } @@ -39,7 +39,7 @@ func (r *PingoneAuthorizeApplicationRoleResource) ExportAll() (*[]connector.Impo for applicationRoleId, applicationRoleName := range ApplicationRoleData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Application Role ID": applicationRoleId, "Application Role Name": applicationRoleName, "Resource Type": r.ResourceType(), @@ -48,7 +48,7 @@ func (r *PingoneAuthorizeApplicationRoleResource) ExportAll() (*[]connector.Impo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: applicationRoleName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, applicationRoleId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, applicationRoleId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -61,7 +61,7 @@ func (r *PingoneAuthorizeApplicationRoleResource) ExportAll() (*[]connector.Impo func (r *PingoneAuthorizeApplicationRoleResource) getApplicationRoleData() (map[string]string, error) { applicationRoleData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.ApplicationRolesApi.ReadApplicationRoles(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.ApplicationRolesApi.ReadApplicationRoles(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applicationRoles, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.ApplicationRole](iter, "ReadApplicationRoles", "GetRoles", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission.go b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission.go index 05acdbe1..673c9158 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeApplicationRolePermissionResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeApplicationRolePermissionResource -func AuthorizeApplicationRolePermission(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeApplicationRolePermissionResource { +func AuthorizeApplicationRolePermission(clientInfo *connector.ClientInfo) *PingoneAuthorizeApplicationRolePermissionResource { return &PingoneAuthorizeApplicationRolePermissionResource{ clientInfo: clientInfo, } @@ -49,14 +49,14 @@ func (r *PingoneAuthorizeApplicationRolePermissionResource) ExportAll() (*[]conn "Application Role Name": appRoleName, "Application Role Permission ID": appRolePermissionId, "Application Role Permission Key": appRolePermissionKey, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", appRoleName, appRolePermissionKey), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appRoleId, appRolePermissionId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appRoleId, appRolePermissionId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -70,7 +70,7 @@ func (r *PingoneAuthorizeApplicationRolePermissionResource) ExportAll() (*[]conn func (r *PingoneAuthorizeApplicationRolePermissionResource) getApplicationRoleData() (map[string]string, error) { applicationRoleData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.ApplicationRolesApi.ReadApplicationRoles(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.ApplicationRolesApi.ReadApplicationRoles(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applicationRoles, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.ApplicationRole](iter, "ReadApplicationRoles", "GetRoles", r.ResourceType()) if err != nil { return nil, err @@ -91,7 +91,7 @@ func (r *PingoneAuthorizeApplicationRolePermissionResource) getApplicationRoleDa func (r *PingoneAuthorizeApplicationRolePermissionResource) getApplicationRolePermissionData(appRoleId string) (map[string]string, error) { applicationRolePermissionData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.ApplicationRolePermissionsApi.ReadApplicationRolePermissions(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appRoleId).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.ApplicationRolePermissionsApi.ReadApplicationRolePermissions(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appRoleId).Execute() applicationRolePermissions, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.EntityArrayEmbeddedPermissionsInner](iter, "ReadApplicationRolePermissions", "GetPermissions", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission_test.go b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission_test.go index 544517c1..f13f3de7 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_permission_test.go @@ -11,20 +11,20 @@ import ( func TestAuthorizeApplicationRolePermissionExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeApplicationRolePermission(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeApplicationRolePermission(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_authorize_application_role_permission", ResourceName: "test-role_test-permission1:action1", - ResourceID: fmt.Sprintf("%s/f45cbcc7-2406-470b-93bc-ff477da0b8f7/080dd732-99ea-4730-a8a6-8da88a232131", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f45cbcc7-2406-470b-93bc-ff477da0b8f7/080dd732-99ea-4730-a8a6-8da88a232131", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_authorize_application_role_permission", ResourceName: "test-role_test-permission1:action2", - ResourceID: fmt.Sprintf("%s/f45cbcc7-2406-470b-93bc-ff477da0b8f7/05717cf9-3ce4-443a-8154-1986fe984780", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f45cbcc7-2406-470b-93bc-ff477da0b8f7/05717cf9-3ce4-443a-8154-1986fe984780", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_test.go b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_test.go index 19f43f4d..17f97389 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_application_role_test.go @@ -11,15 +11,15 @@ import ( func TestAuthorizeApplicationRoleExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeApplicationRole(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeApplicationRole(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_authorize_application_role", ResourceName: "test-role", - ResourceID: fmt.Sprintf("%s/f45cbcc7-2406-470b-93bc-ff477da0b8f7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f45cbcc7-2406-470b-93bc-ff477da0b8f7", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint.go b/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint.go index 4902a636..ab1b26aa 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint.go @@ -16,11 +16,11 @@ var ( ) type PingoneAuthorizeDecisionEndpointResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingoneAuthorizeDecisionEndpointResource -func AuthorizeDecisionEndpoint(clientInfo *connector.PingOneClientInfo) *PingoneAuthorizeDecisionEndpointResource { +func AuthorizeDecisionEndpoint(clientInfo *connector.ClientInfo) *PingoneAuthorizeDecisionEndpointResource { return &PingoneAuthorizeDecisionEndpointResource{ clientInfo: clientInfo, } @@ -39,7 +39,7 @@ func (r *PingoneAuthorizeDecisionEndpointResource) ExportAll() (*[]connector.Imp for decisionEndpointId, decisionEndpointName := range DecisionEndpointData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Decision Endpoint ID": decisionEndpointId, "Decision Endpoint Name": decisionEndpointName, "Resource Type": r.ResourceType(), @@ -48,7 +48,7 @@ func (r *PingoneAuthorizeDecisionEndpointResource) ExportAll() (*[]connector.Imp importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: decisionEndpointName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, decisionEndpointId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, decisionEndpointId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -61,7 +61,7 @@ func (r *PingoneAuthorizeDecisionEndpointResource) ExportAll() (*[]connector.Imp func (r *PingoneAuthorizeDecisionEndpointResource) getDecisionEndpointData() (map[string]string, error) { decisionEndpointData := make(map[string]string) - iter := r.clientInfo.ApiClient.AuthorizeAPIClient.PolicyDecisionManagementApi.ReadAllDecisionEndpoints(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.AuthorizeAPIClient.PolicyDecisionManagementApi.ReadAllDecisionEndpoints(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() decisionEndpoints, err := pingone.GetAuthorizeAPIObjectsFromIterator[authorize.DecisionEndpoint](iter, "ReadAllDecisionEndpoints", "GetDecisionEndpoints", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint_test.go b/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint_test.go index 2f61b8f2..47c85a02 100644 --- a/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint_test.go +++ b/internal/connector/pingone/authorize/resources/pingone_authorize_decision_endpoint_test.go @@ -11,35 +11,35 @@ import ( func TestAuthorizeDecisionEndpointExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AuthorizeDecisionEndpoint(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AuthorizeDecisionEndpoint(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_authorize_decision_endpoint", ResourceName: "DEV", - ResourceID: fmt.Sprintf("%s/f8660b46-b96e-457c-8d8f-8ee455e4baa3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f8660b46-b96e-457c-8d8f-8ee455e4baa3", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_authorize_decision_endpoint", ResourceName: "PROD", - ResourceID: fmt.Sprintf("%s/07a4f450-d99f-439f-834a-46b8332a3e31", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/07a4f450-d99f-439f-834a-46b8332a3e31", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_authorize_decision_endpoint", ResourceName: "TEST", - ResourceID: fmt.Sprintf("%s/3368886d-7d57-4aa8-a8f6-7d24dffa4b3c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3368886d-7d57-4aa8-a8f6-7d24dffa4b3c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_authorize_decision_endpoint", ResourceName: "CLI", - ResourceID: fmt.Sprintf("%s/6f4cf36d-fdc1-445c-a1df-37c8e3305eaf", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/6f4cf36d-fdc1-445c-a1df-37c8e3305eaf", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_authorize_decision_endpoint", ResourceName: "Test API Service", - ResourceID: fmt.Sprintf("%s/20c01743-084f-4129-b304-42ce6a5edf4f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/20c01743-084f-4129-b304-42ce6a5edf4f", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/common.go b/internal/connector/pingone/common.go index 1456cd08..c1b2e095 100644 --- a/internal/connector/pingone/common.go +++ b/internal/connector/pingone/common.go @@ -2,7 +2,6 @@ package pingone import ( "fmt" - "net/http" "reflect" "github.com/patrickcping/pingone-go-sdk-v2/authorize" @@ -13,28 +12,6 @@ import ( "github.com/pingidentity/pingcli/internal/output" ) -func CheckSingletonResource(response *http.Response, err error, apiFuncName, resourceType string) (bool, error) { - ok, err := common.HandleClientResponse(response, err, apiFuncName, resourceType) - if err != nil { - return false, err - } - if !ok { - return false, nil - } - - if response.StatusCode == 204 { - output.Warn("API client 204 No Content response.", map[string]interface{}{ - "API Function Name": apiFuncName, - "Resource Type": resourceType, - "Response Code": response.Status, - "Response Body": response.Body, - }) - return false, nil - } - - return true, nil -} - func GetAuthorizeAPIObjectsFromIterator[T any](iter authorize.EntityArrayPagedIterator, clientFuncName, extractionFuncName, resourceType string) ([]T, error) { apiObjects := []T{} diff --git a/internal/connector/pingone/mfa/pingone_mfa_connector.go b/internal/connector/pingone/mfa/pingone_mfa_connector.go index efd59045..c2972ada 100644 --- a/internal/connector/pingone/mfa/pingone_mfa_connector.go +++ b/internal/connector/pingone/mfa/pingone_mfa_connector.go @@ -21,17 +21,17 @@ var ( ) type PingOneMFAConnector struct { - clientInfo connector.PingOneClientInfo + clientInfo connector.ClientInfo } // Utility method for creating a PingOneMFAConnector func MFAConnector(ctx context.Context, apiClient *pingoneGoClient.Client, apiClientId *string, exportEnvironmentID string) *PingOneMFAConnector { return &PingOneMFAConnector{ - clientInfo: connector.PingOneClientInfo{ - Context: ctx, - ApiClient: apiClient, - ApiClientId: apiClientId, - ExportEnvironmentID: exportEnvironmentID, + clientInfo: connector.ClientInfo{ + PingOneContext: ctx, + PingOneApiClient: apiClient, + PingOneApiClientId: *apiClientId, + PingOneExportEnvironmentID: exportEnvironmentID, }, } } diff --git a/internal/connector/pingone/mfa/pingone_mfa_connector_test.go b/internal/connector/pingone/mfa/pingone_mfa_connector_test.go index 0ece684e..1272bd2d 100644 --- a/internal/connector/pingone/mfa/pingone_mfa_connector_test.go +++ b/internal/connector/pingone/mfa/pingone_mfa_connector_test.go @@ -10,7 +10,7 @@ import ( ) func TestMFATerraformPlan(t *testing.T) { - PingOneClientInfo := testutils.GetPingOneClientInfo(t) + clientInfo := testutils.GetClientInfo(t) testutils_terraform.InitPingOneTerraform(t) @@ -21,24 +21,24 @@ func TestMFATerraformPlan(t *testing.T) { }{ { name: "MFAApplicationPushCredential", - resource: resources.MFAApplicationPushCredential(PingOneClientInfo), + resource: resources.MFAApplicationPushCredential(clientInfo), ignoredErrors: []string{ "Error: Invalid Attribute Combination", }, }, { name: "MFAFido2Policy", - resource: resources.MFAFido2Policy(PingOneClientInfo), + resource: resources.MFAFido2Policy(clientInfo), ignoredErrors: nil, }, { name: "MFADevicePolicy", - resource: resources.MFADevicePolicy(PingOneClientInfo), + resource: resources.MFADevicePolicy(clientInfo), ignoredErrors: nil, }, { name: "MFASettings", - resource: resources.MFASettings(PingOneClientInfo), + resource: resources.MFASettings(clientInfo), ignoredErrors: nil, }, } diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential.go b/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential.go index bcd10ebc..7b89dbe5 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential.go @@ -17,11 +17,11 @@ var ( ) type PingOneMFAApplicationPushCredentialResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneMFAApplicationPushCredentialResource -func MFAApplicationPushCredential(clientInfo *connector.PingOneClientInfo) *PingOneMFAApplicationPushCredentialResource { +func MFAApplicationPushCredential(clientInfo *connector.ClientInfo) *PingOneMFAApplicationPushCredentialResource { return &PingOneMFAApplicationPushCredentialResource{ clientInfo: clientInfo, } @@ -50,7 +50,7 @@ func (r *PingOneMFAApplicationPushCredentialResource) ExportAll() (*[]connector. for pushCredId, pushCredType := range pushCredData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "MFA Application Push Credential ID": pushCredId, "MFA Application Push Credential Type": pushCredType, "Native OIDC Application ID": appId, @@ -61,7 +61,7 @@ func (r *PingOneMFAApplicationPushCredentialResource) ExportAll() (*[]connector. importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", appName, pushCredType), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appId, pushCredId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId, pushCredId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -75,7 +75,7 @@ func (r *PingOneMFAApplicationPushCredentialResource) ExportAll() (*[]connector. func (r *PingOneMFAApplicationPushCredentialResource) getOIDCApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -102,7 +102,7 @@ func (r *PingOneMFAApplicationPushCredentialResource) getOIDCApplicationData() ( func (r *PingOneMFAApplicationPushCredentialResource) getPushCredentialData(applicationId string) (map[string]string, error) { mfaPushCredentialData := make(map[string]string) - iter := r.clientInfo.ApiClient.MFAAPIClient.ApplicationsApplicationMFAPushCredentialsApi.ReadAllMFAPushCredentials(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, applicationId).Execute() + iter := r.clientInfo.PingOneApiClient.MFAAPIClient.ApplicationsApplicationMFAPushCredentialsApi.ReadAllMFAPushCredentials(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, applicationId).Execute() mfaPushCredentials, err := pingone.GetMfaAPIObjectsFromIterator[mfa.MFAPushCredentialResponse](iter, "ReadAllMFAPushCredentials", "GetPushCredentials", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential_test.go b/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential_test.go index 5f01dfe9..eb2aee63 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential_test.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_application_push_credential_test.go @@ -11,25 +11,25 @@ import ( func TestMFAApplicationPushCredentialExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.MFAApplicationPushCredential(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.MFAApplicationPushCredential(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_mfa_application_push_credential", ResourceName: "Test MFA_APNS", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/7847f8a4-f81e-4994-a095-b4d579deaf52", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/7847f8a4-f81e-4994-a095-b4d579deaf52", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_mfa_application_push_credential", ResourceName: "Test MFA_FCM", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/e22e0f8f-ed88-4bdd-a914-5a93202083d0", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/e22e0f8f-ed88-4bdd-a914-5a93202083d0", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_mfa_application_push_credential", ResourceName: "Test MFA_HMS", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/e609b3a8-b112-4062-8031-e9ff0d87c9e9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/e609b3a8-b112-4062-8031-e9ff0d87c9e9", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy.go b/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy.go index 85a9fe7d..2f7ff82d 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOneMFADevicePolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneMFADevicePolicyResource -func MFADevicePolicy(clientInfo *connector.PingOneClientInfo) *PingOneMFADevicePolicyResource { +func MFADevicePolicy(clientInfo *connector.ClientInfo) *PingOneMFADevicePolicyResource { return &PingOneMFADevicePolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneMFADevicePolicyResource) ExportAll() (*[]connector.ImportBlock, for devicePolicyId, devicePolicyName := range deviceAuthPolicyData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "MFA Device Policy ID": devicePolicyId, "MFA Device Policy Name": devicePolicyName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneMFADevicePolicyResource) ExportAll() (*[]connector.ImportBlock, importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: devicePolicyName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, devicePolicyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, devicePolicyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneMFADevicePolicyResource) ExportAll() (*[]connector.ImportBlock, func (r *PingOneMFADevicePolicyResource) getDeviceAuthPolicyData() (map[string]string, error) { deviceAuthPolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.MFAAPIClient.DeviceAuthenticationPolicyApi.ReadDeviceAuthenticationPolicies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.MFAAPIClient.DeviceAuthenticationPolicyApi.ReadDeviceAuthenticationPolicies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() deviceAuthPolicies, err := pingone.GetMfaAPIObjectsFromIterator[mfa.DeviceAuthenticationPolicy](iter, "ReadDeviceAuthenticationPolicies", "GetDeviceAuthenticationPolicies", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy_test.go b/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy_test.go index e5c33403..bd1befb4 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy_test.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_device_policy_test.go @@ -11,20 +11,20 @@ import ( func TestMFAPolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.MFADevicePolicy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.MFADevicePolicy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_mfa_device_policy", ResourceName: "Default MFA Policy", - ResourceID: fmt.Sprintf("%s/6adc6dfa-d883-08ed-37c5-ea8f61029ad9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/6adc6dfa-d883-08ed-37c5-ea8f61029ad9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_mfa_device_policy", ResourceName: "Test MFA Policy", - ResourceID: fmt.Sprintf("%s/5ae2227f-cb5b-47c3-bb40-440db09a98e6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5ae2227f-cb5b-47c3-bb40-440db09a98e6", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy.go b/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy.go index 23148310..3651c5c3 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOneMFAFido2PolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneMFAFido2PolicyResource -func MFAFido2Policy(clientInfo *connector.PingOneClientInfo) *PingOneMFAFido2PolicyResource { +func MFAFido2Policy(clientInfo *connector.ClientInfo) *PingOneMFAFido2PolicyResource { return &PingOneMFAFido2PolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneMFAFido2PolicyResource) ExportAll() (*[]connector.ImportBlock, e for fido2PolicyId, fido2PolicyName := range fido2PolicyData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "FIDO2 Policy ID": fido2PolicyId, "FIDO2 Policy Name": fido2PolicyName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneMFAFido2PolicyResource) ExportAll() (*[]connector.ImportBlock, e importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fido2PolicyName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, fido2PolicyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, fido2PolicyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneMFAFido2PolicyResource) ExportAll() (*[]connector.ImportBlock, e func (r *PingOneMFAFido2PolicyResource) getFido2PolicyData() (map[string]string, error) { fido2PolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.MFAAPIClient.FIDO2PolicyApi.ReadFIDO2Policies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.MFAAPIClient.FIDO2PolicyApi.ReadFIDO2Policies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() fido2Policies, err := pingone.GetMfaAPIObjectsFromIterator[mfa.FIDO2Policy](iter, "ReadFIDO2Policies", "GetFido2Policies", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy_test.go b/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy_test.go index 31ed48f8..adedcc7d 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy_test.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_fido2_policy_test.go @@ -11,20 +11,20 @@ import ( func TestMFAFido2PolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.MFAFido2Policy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.MFAFido2Policy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_mfa_fido2_policy", ResourceName: "Passkeys", - ResourceID: fmt.Sprintf("%s/0f9c510a-df48-4d56-9e44-17ac0bc78961", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0f9c510a-df48-4d56-9e44-17ac0bc78961", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_mfa_fido2_policy", ResourceName: "Security Keys", - ResourceID: fmt.Sprintf("%s/f8dc3094-cf9f-486f-9ca9-164e0856b0d8", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f8dc3094-cf9f-486f-9ca9-164e0856b0d8", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_settings.go b/internal/connector/pingone/mfa/resources/pingone_mfa_settings.go index a1c654ca..9d1e6ceb 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_settings.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_settings.go @@ -3,7 +3,6 @@ package resources import ( "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/connector/pingone" "github.com/pingidentity/pingcli/internal/logger" ) @@ -13,11 +12,11 @@ var ( ) type PingOneMFASettingsResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneMFASettingsResource -func MFASettings(clientInfo *connector.PingOneClientInfo) *PingOneMFASettingsResource { +func MFASettings(clientInfo *connector.ClientInfo) *PingOneMFASettingsResource { return &PingOneMFASettingsResource{ clientInfo: clientInfo, } @@ -42,14 +41,14 @@ func (r *PingOneMFASettingsResource) ExportAll() (*[]connector.ImportBlock, erro } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: r.ResourceType(), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -59,6 +58,6 @@ func (r *PingOneMFASettingsResource) ExportAll() (*[]connector.ImportBlock, erro } func (r *PingOneMFASettingsResource) checkMFASettingsData() (bool, error) { - _, response, err := r.clientInfo.ApiClient.MFAAPIClient.MFASettingsApi.ReadMFASettings(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() - return pingone.CheckSingletonResource(response, err, "ReadMFASettings", r.ResourceType()) + _, response, err := r.clientInfo.PingOneApiClient.MFAAPIClient.MFASettingsApi.ReadMFASettings(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadMFASettings", r.ResourceType()) } diff --git a/internal/connector/pingone/mfa/resources/pingone_mfa_settings_test.go b/internal/connector/pingone/mfa/resources/pingone_mfa_settings_test.go index 4708b31c..9102ed4d 100644 --- a/internal/connector/pingone/mfa/resources/pingone_mfa_settings_test.go +++ b/internal/connector/pingone/mfa/resources/pingone_mfa_settings_test.go @@ -10,15 +10,15 @@ import ( func TestMFASettingsExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.MFASettings(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.MFASettings(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_mfa_settings", ResourceName: "pingone_mfa_settings", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/pingone_platform_connector.go b/internal/connector/pingone/platform/pingone_platform_connector.go index e9c4c40e..803ee72e 100644 --- a/internal/connector/pingone/platform/pingone_platform_connector.go +++ b/internal/connector/pingone/platform/pingone_platform_connector.go @@ -21,17 +21,17 @@ var ( ) type PingOnePlatformConnector struct { - clientInfo connector.PingOneClientInfo + clientInfo connector.ClientInfo } // Utility method for creating a PingOnePlatformConnector func PlatformConnector(ctx context.Context, apiClient *pingoneGoClient.Client, apiClientId *string, exportEnvironmentID string) *PingOnePlatformConnector { return &PingOnePlatformConnector{ - clientInfo: connector.PingOneClientInfo{ - Context: ctx, - ApiClient: apiClient, - ApiClientId: apiClientId, - ExportEnvironmentID: exportEnvironmentID, + clientInfo: connector.ClientInfo{ + PingOneContext: ctx, + PingOneApiClient: apiClient, + PingOneApiClientId: *apiClientId, + PingOneExportEnvironmentID: exportEnvironmentID, }, } } diff --git a/internal/connector/pingone/platform/pingone_platform_connector_test.go b/internal/connector/pingone/platform/pingone_platform_connector_test.go index d206beb0..6bb3bd1e 100644 --- a/internal/connector/pingone/platform/pingone_platform_connector_test.go +++ b/internal/connector/pingone/platform/pingone_platform_connector_test.go @@ -10,7 +10,7 @@ import ( ) func TestPlatformTerraformPlan(t *testing.T) { - PingOneClientInfo := testutils.GetPingOneClientInfo(t) + clientInfo := testutils.GetClientInfo(t) testutils_terraform.InitPingOneTerraform(t) @@ -21,78 +21,78 @@ func TestPlatformTerraformPlan(t *testing.T) { }{ { name: "Agreement", - resource: resources.Agreement(PingOneClientInfo), + resource: resources.Agreement(clientInfo), ignoredErrors: nil, }, { name: "AgreementEnable", - resource: resources.AgreementEnable(PingOneClientInfo), + resource: resources.AgreementEnable(clientInfo), ignoredErrors: nil, }, { name: "AgreementLocalization", - resource: resources.AgreementLocalization(PingOneClientInfo), + resource: resources.AgreementLocalization(clientInfo), ignoredErrors: nil, }, { name: "AgreementLocalizationEnable", - resource: resources.AgreementLocalizationEnable(PingOneClientInfo), + resource: resources.AgreementLocalizationEnable(clientInfo), ignoredErrors: nil, }, { name: "AgreementLocalizationRevision", - resource: resources.AgreementLocalizationRevision(PingOneClientInfo), + resource: resources.AgreementLocalizationRevision(clientInfo), ignoredErrors: nil, }, { name: "BrandingSettings", - resource: resources.BrandingSettings(PingOneClientInfo), + resource: resources.BrandingSettings(clientInfo), ignoredErrors: nil, }, { name: "BrandingTheme", - resource: resources.BrandingTheme(PingOneClientInfo), + resource: resources.BrandingTheme(clientInfo), ignoredErrors: []string{ "Error: Invalid Attribute Combination", }, }, { name: "BrandingThemeDefault", - resource: resources.BrandingThemeDefault(PingOneClientInfo), + resource: resources.BrandingThemeDefault(clientInfo), ignoredErrors: nil, }, { name: "Certificate", - resource: resources.Certificate(PingOneClientInfo), + resource: resources.Certificate(clientInfo), ignoredErrors: []string{ "Error: Invalid combination of arguments", }, }, { name: "CustomDomain", - resource: resources.CustomDomain(PingOneClientInfo), + resource: resources.CustomDomain(clientInfo), ignoredErrors: nil, }, { name: "Environment", - resource: resources.Environment(PingOneClientInfo), + resource: resources.Environment(clientInfo), ignoredErrors: nil, }, { name: "Form", - resource: resources.Form(PingOneClientInfo), + resource: resources.Form(clientInfo), ignoredErrors: nil, }, { name: "FormRecaptchaV2", - resource: resources.FormRecaptchaV2(PingOneClientInfo), + resource: resources.FormRecaptchaV2(clientInfo), ignoredErrors: []string{ "Error: Missing Configuration for Required Attribute", }, }, { name: "Gateway", - resource: resources.Gateway(PingOneClientInfo), + resource: resources.Gateway(clientInfo), ignoredErrors: []string{ "Error: Invalid Attribute Combination", "Error: Missing required argument", @@ -100,52 +100,52 @@ func TestPlatformTerraformPlan(t *testing.T) { }, { name: "GatewayCredential", - resource: resources.GatewayCredential(PingOneClientInfo), + resource: resources.GatewayCredential(clientInfo), ignoredErrors: nil, }, { name: "GatewayRoleAssignment", - resource: resources.GatewayRoleAssignment(PingOneClientInfo), + resource: resources.GatewayRoleAssignment(clientInfo), ignoredErrors: nil, }, { name: "IdentityPropagationPlan", - resource: resources.IdentityPropagationPlan(PingOneClientInfo), + resource: resources.IdentityPropagationPlan(clientInfo), ignoredErrors: nil, }, { name: "Key", - resource: resources.Key(PingOneClientInfo), + resource: resources.Key(clientInfo), ignoredErrors: nil, }, { name: "KeyRotationPolicy", - resource: resources.KeyRotationPolicy(PingOneClientInfo), + resource: resources.KeyRotationPolicy(clientInfo), ignoredErrors: nil, }, { name: "Language", - resource: resources.Language(PingOneClientInfo), + resource: resources.Language(clientInfo), ignoredErrors: nil, }, { name: "LanguageUpdate", - resource: resources.LanguageUpdate(PingOneClientInfo), + resource: resources.LanguageUpdate(clientInfo), ignoredErrors: nil, }, { name: "NotificationPolicy", - resource: resources.NotificationPolicy(PingOneClientInfo), + resource: resources.NotificationPolicy(clientInfo), ignoredErrors: nil, }, { name: "NotificationSettings", - resource: resources.NotificationSettings(PingOneClientInfo), + resource: resources.NotificationSettings(clientInfo), ignoredErrors: nil, }, { name: "NotificationSettingsEmail", - resource: resources.NotificationSettingsEmail(PingOneClientInfo), + resource: resources.NotificationSettingsEmail(clientInfo), ignoredErrors: []string{ "Error: Missing Configuration for Required Attribute", }, @@ -153,12 +153,12 @@ func TestPlatformTerraformPlan(t *testing.T) { // TODO remove this skip dependent upon STAGING-25369 // { // name: "NotificationTemplateContent", - // resource: resources.NotificationTemplateContent(PingOneClientInfo), + // resource: resources.NotificationTemplateContent(clientInfo), // ignoredErrors: nil, // }, { name: "PhoneDeliverySettings", - resource: resources.PhoneDeliverySettings(PingOneClientInfo), + resource: resources.PhoneDeliverySettings(clientInfo), ignoredErrors: []string{ "Error: Missing required argument", "Error: Missing Configuration for Required Attribute", @@ -166,22 +166,22 @@ func TestPlatformTerraformPlan(t *testing.T) { }, { name: "SystemApplication", - resource: resources.SystemApplication(PingOneClientInfo), + resource: resources.SystemApplication(clientInfo), ignoredErrors: nil, }, { name: "TrustedEmailAddress", - resource: resources.TrustedEmailAddress(PingOneClientInfo), + resource: resources.TrustedEmailAddress(clientInfo), ignoredErrors: nil, }, { name: "TrustedEmailDomain", - resource: resources.TrustedEmailDomain(PingOneClientInfo), + resource: resources.TrustedEmailDomain(clientInfo), ignoredErrors: nil, }, { name: "Webhook", - resource: resources.Webhook(PingOneClientInfo), + resource: resources.Webhook(clientInfo), ignoredErrors: nil, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement.go b/internal/connector/pingone/platform/resources/pingone_agreement.go index 7f021327..b64f1f3a 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement.go @@ -16,11 +16,11 @@ var ( ) type PingOneAgreementResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneAgreementResource -func Agreement(clientInfo *connector.PingOneClientInfo) *PingOneAgreementResource { +func Agreement(clientInfo *connector.ClientInfo) *PingOneAgreementResource { return &PingOneAgreementResource{ clientInfo: clientInfo, } @@ -45,14 +45,14 @@ func (r *PingOneAgreementResource) ExportAll() (*[]connector.ImportBlock, error) commentData := map[string]string{ "Agreement ID": agreementId, "Agreement Name": agreementName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: agreementName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, agreementId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, agreementId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneAgreementResource) ExportAll() (*[]connector.ImportBlock, error) func (r *PingOneAgreementResource) getAgreementData() (map[string]string, error) { agreementData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.AgreementsResourcesApi.ReadAllAgreements(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AgreementsResourcesApi.ReadAllAgreements(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() agreements, err := pingone.GetManagementAPIObjectsFromIterator[management.Agreement](iter, "ReadAllAgreements", "GetAgreements", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_enable.go b/internal/connector/pingone/platform/resources/pingone_agreement_enable.go index 4e84bb93..b84fbaa2 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_enable.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_enable.go @@ -13,11 +13,11 @@ var ( ) type PingOneAgreementEnableResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneAgreementEnableResource -func AgreementEnable(clientInfo *connector.PingOneClientInfo) *PingOneAgreementEnableResource { +func AgreementEnable(clientInfo *connector.ClientInfo) *PingOneAgreementEnableResource { return &PingOneAgreementEnableResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_enable_test.go b/internal/connector/pingone/platform/resources/pingone_agreement_enable_test.go index 556e3c55..844e5126 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_enable_test.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_enable_test.go @@ -11,20 +11,20 @@ import ( func TestAgreementEnableExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AgreementEnable(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AgreementEnable(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_agreement_enable", ResourceName: "Test_enable", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_agreement_enable", ResourceName: "Test2_enable", - ResourceID: fmt.Sprintf("%s/38c0c463-b13d-4d22-8da5-f9fd8093d594", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/38c0c463-b13d-4d22-8da5-f9fd8093d594", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_localization.go b/internal/connector/pingone/platform/resources/pingone_agreement_localization.go index e3f8efdf..a7fb8734 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_localization.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_localization.go @@ -16,11 +16,11 @@ var ( ) type PingOneAgreementLocalizationResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneAgreementLocalizationResource -func AgreementLocalization(clientInfo *connector.PingOneClientInfo) *PingOneAgreementLocalizationResource { +func AgreementLocalization(clientInfo *connector.ClientInfo) *PingOneAgreementLocalizationResource { return &PingOneAgreementLocalizationResource{ clientInfo: clientInfo, } @@ -53,14 +53,14 @@ func (r *PingOneAgreementLocalizationResource) ExportAll() (*[]connector.ImportB "Agreement Name": agreementName, "Agreement Localization ID": agreementLocalizationId, "Agreement Localization Locale": agreementLocalizationLocale, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", agreementName, agreementLocalizationLocale), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, agreementId, agreementLocalizationId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, agreementId, agreementLocalizationId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneAgreementLocalizationResource) ExportAll() (*[]connector.ImportB func (r *PingOneAgreementLocalizationResource) getAgreementData() (map[string]string, error) { agreementData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.AgreementsResourcesApi.ReadAllAgreements(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AgreementsResourcesApi.ReadAllAgreements(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() agreements, err := pingone.GetManagementAPIObjectsFromIterator[management.Agreement](iter, "ReadAllAgreements", "GetAgreements", r.ResourceType()) if err != nil { return nil, err @@ -95,7 +95,7 @@ func (r *PingOneAgreementLocalizationResource) getAgreementData() (map[string]st func (r *PingOneAgreementLocalizationResource) getAgreementLocalizationData(agreementId string) (map[string]string, error) { agreementLocalizationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.AgreementLanguagesResourcesApi.ReadAllAgreementLanguages(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, agreementId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AgreementLanguagesResourcesApi.ReadAllAgreementLanguages(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, agreementId).Execute() languageInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedLanguagesInner](iter, "ReadAllAgreementLanguages", "GetLanguages", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable.go b/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable.go index e99eb197..1ac53efc 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable.go @@ -13,11 +13,11 @@ var ( ) type PingOneAgreementLocalizationEnableResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneAgreementLocalizationEnableResource -func AgreementLocalizationEnable(clientInfo *connector.PingOneClientInfo) *PingOneAgreementLocalizationEnableResource { +func AgreementLocalizationEnable(clientInfo *connector.ClientInfo) *PingOneAgreementLocalizationEnableResource { return &PingOneAgreementLocalizationEnableResource{ clientInfo: clientInfo, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable_test.go b/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable_test.go index 404860d0..8efb477d 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable_test.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_localization_enable_test.go @@ -11,20 +11,20 @@ import ( func TestAgreementLocalizationEnableExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AgreementLocalizationEnable(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AgreementLocalizationEnable(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_agreement_localization_enable", ResourceName: "Test_fr_enable", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/03cd7e69-2836-4bad-b69f-249684c42fd9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/03cd7e69-2836-4bad-b69f-249684c42fd9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_agreement_localization_enable", ResourceName: "Test_en_enable", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision.go b/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision.go index 1bcb9ab7..2cafc478 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision.go @@ -16,11 +16,11 @@ var ( ) type PingOneAgreementLocalizationRevisionResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneAgreementLocalizationRevisionResource -func AgreementLocalizationRevision(clientInfo *connector.PingOneClientInfo) *PingOneAgreementLocalizationRevisionResource { +func AgreementLocalizationRevision(clientInfo *connector.ClientInfo) *PingOneAgreementLocalizationRevisionResource { return &PingOneAgreementLocalizationRevisionResource{ clientInfo: clientInfo, } @@ -60,14 +60,14 @@ func (r *PingOneAgreementLocalizationRevisionResource) ExportAll() (*[]connector "Agreement Localization ID": agreementLocalizationId, "Agreement Localization Locale": agreementLocalizationLocale, "Agreement Localization Revision ID": agreementLocalizationRevisionId, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s_%s", agreementName, agreementLocalizationLocale, agreementLocalizationRevisionId), - ResourceID: fmt.Sprintf("%s/%s/%s/%s", r.clientInfo.ExportEnvironmentID, agreementId, agreementLocalizationId, agreementLocalizationRevisionId), + ResourceID: fmt.Sprintf("%s/%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, agreementId, agreementLocalizationId, agreementLocalizationRevisionId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneAgreementLocalizationRevisionResource) ExportAll() (*[]connector func (r *PingOneAgreementLocalizationRevisionResource) getAgreementData() (map[string]string, error) { agreementData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.AgreementsResourcesApi.ReadAllAgreements(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AgreementsResourcesApi.ReadAllAgreements(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() agreements, err := pingone.GetManagementAPIObjectsFromIterator[management.Agreement](iter, "ReadAllAgreements", "GetAgreements", r.ResourceType()) if err != nil { return nil, err @@ -103,7 +103,7 @@ func (r *PingOneAgreementLocalizationRevisionResource) getAgreementData() (map[s func (r *PingOneAgreementLocalizationRevisionResource) getAgreementLanguageData(agreementId string) (map[string]string, error) { agreementLanguageData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.AgreementLanguagesResourcesApi.ReadAllAgreementLanguages(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, agreementId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AgreementLanguagesResourcesApi.ReadAllAgreementLanguages(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, agreementId).Execute() languageInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedLanguagesInner](iter, "ReadAllAgreementLanguages", "GetLanguages", r.ResourceType()) if err != nil { return nil, err @@ -126,7 +126,7 @@ func (r *PingOneAgreementLocalizationRevisionResource) getAgreementLanguageData( func (r *PingOneAgreementLocalizationRevisionResource) getAgreementLocalizationRevisionData(agreementId, agreementLocalizationId string) ([]string, error) { agreementLocalizationRevisionData := []string{} - iter := r.clientInfo.ApiClient.ManagementAPIClient.AgreementRevisionsResourcesApi.ReadAllAgreementLanguageRevisions(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, agreementId, agreementLocalizationId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AgreementRevisionsResourcesApi.ReadAllAgreementLanguageRevisions(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, agreementId, agreementLocalizationId).Execute() agreementLocalizationRevisions, err := pingone.GetManagementAPIObjectsFromIterator[management.AgreementLanguageRevision](iter, "ReadAllAgreementLanguageRevisions", "GetRevisions", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision_test.go b/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision_test.go index d928a17f..3fe01d7b 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision_test.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_localization_revision_test.go @@ -11,25 +11,25 @@ import ( func TestAgreementLocalizationRevisionExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AgreementLocalizationRevision(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AgreementLocalizationRevision(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_agreement_localization_revision", ResourceName: "Test_fr_08c49433-b84b-4aeb-860b-02d58336e309", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/03cd7e69-2836-4bad-b69f-249684c42fd9/08c49433-b84b-4aeb-860b-02d58336e309", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/03cd7e69-2836-4bad-b69f-249684c42fd9/08c49433-b84b-4aeb-860b-02d58336e309", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_agreement_localization_revision", ResourceName: "Test_en_2c2a98d7-8c11-4887-b35b-7f5358f75ec1", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6/2c2a98d7-8c11-4887-b35b-7f5358f75ec1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6/2c2a98d7-8c11-4887-b35b-7f5358f75ec1", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_agreement_localization_revision", ResourceName: "Test_en_82cff258-1af7-4f2d-94f0-a0ebbbc84a5e", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6/82cff258-1af7-4f2d-94f0-a0ebbbc84a5e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6/82cff258-1af7-4f2d-94f0-a0ebbbc84a5e", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_localization_test.go b/internal/connector/pingone/platform/resources/pingone_agreement_localization_test.go index 5ad34b60..8115dd58 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_localization_test.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_localization_test.go @@ -11,20 +11,20 @@ import ( func TestAgreementLocalizationExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AgreementLocalization(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AgreementLocalization(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_agreement_localization", ResourceName: "Test_fr", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/03cd7e69-2836-4bad-b69f-249684c42fd9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/03cd7e69-2836-4bad-b69f-249684c42fd9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_agreement_localization", ResourceName: "Test_en", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75/b5ceb6b5-025c-4896-951d-dd676c96d3c6", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_agreement_test.go b/internal/connector/pingone/platform/resources/pingone_agreement_test.go index e655b8c8..03796aa8 100644 --- a/internal/connector/pingone/platform/resources/pingone_agreement_test.go +++ b/internal/connector/pingone/platform/resources/pingone_agreement_test.go @@ -11,20 +11,20 @@ import ( func TestAgreementExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Agreement(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Agreement(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_agreement", ResourceName: "Test", - ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/37ab76b8-8eff-43ae-b499-a7dce9fe0e75", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_agreement", ResourceName: "Test2", - ResourceID: fmt.Sprintf("%s/38c0c463-b13d-4d22-8da5-f9fd8093d594", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/38c0c463-b13d-4d22-8da5-f9fd8093d594", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_alert_channel.go b/internal/connector/pingone/platform/resources/pingone_alert_channel.go index 0806f1a8..af173ca1 100644 --- a/internal/connector/pingone/platform/resources/pingone_alert_channel.go +++ b/internal/connector/pingone/platform/resources/pingone_alert_channel.go @@ -16,11 +16,11 @@ var ( ) type PingOneAlertChannelResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneAlertChannelResource -func AlertChannel(clientInfo *connector.PingOneClientInfo) *PingOneAlertChannelResource { +func AlertChannel(clientInfo *connector.ClientInfo) *PingOneAlertChannelResource { return &PingOneAlertChannelResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneAlertChannelResource) ExportAll() (*[]connector.ImportBlock, err for alertChannelId, alertChannelName := range alertChannelData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Alert Channel ID": alertChannelId, "Alert Channel Name": alertChannelName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneAlertChannelResource) ExportAll() (*[]connector.ImportBlock, err importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: alertChannelName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, alertChannelId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, alertChannelId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneAlertChannelResource) ExportAll() (*[]connector.ImportBlock, err func (r *PingOneAlertChannelResource) getAlertChannelData() (map[string]string, error) { alertChannelData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.AlertingApi.ReadAllAlertChannels(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.AlertingApi.ReadAllAlertChannels(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() alertChannels, err := pingone.GetManagementAPIObjectsFromIterator[management.AlertChannel](iter, "ReadAllAlertChannels", "GetAlertChannels", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_alert_channel_test.go b/internal/connector/pingone/platform/resources/pingone_alert_channel_test.go index 94e507a1..261d041b 100644 --- a/internal/connector/pingone/platform/resources/pingone_alert_channel_test.go +++ b/internal/connector/pingone/platform/resources/pingone_alert_channel_test.go @@ -11,15 +11,15 @@ import ( func TestAlertChannelExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.AlertChannel(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.AlertChannel(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_alert_channel", ResourceName: "Test Alert Channel", - ResourceID: fmt.Sprintf("%s/6035f516-b474-4941-945a-76514913a74d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/6035f516-b474-4941-945a-76514913a74d", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_branding_settings.go b/internal/connector/pingone/platform/resources/pingone_branding_settings.go index a66264ec..4955d1a8 100644 --- a/internal/connector/pingone/platform/resources/pingone_branding_settings.go +++ b/internal/connector/pingone/platform/resources/pingone_branding_settings.go @@ -3,7 +3,6 @@ package resources import ( "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/connector/pingone" "github.com/pingidentity/pingcli/internal/logger" ) @@ -13,11 +12,11 @@ var ( ) type PingOneBrandingSettingsResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneBrandingSettingsResource -func BrandingSettings(clientInfo *connector.PingOneClientInfo) *PingOneBrandingSettingsResource { +func BrandingSettings(clientInfo *connector.ClientInfo) *PingOneBrandingSettingsResource { return &PingOneBrandingSettingsResource{ clientInfo: clientInfo, } @@ -43,13 +42,13 @@ func (r *PingOneBrandingSettingsResource) ExportAll() (*[]connector.ImportBlock, commentData := map[string]string{ "Resource Type": r.ResourceType(), - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: r.ResourceType(), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -59,6 +58,6 @@ func (r *PingOneBrandingSettingsResource) ExportAll() (*[]connector.ImportBlock, } func (r *PingOneBrandingSettingsResource) checkBrandingSettingsData() (bool, error) { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.BrandingSettingsApi.ReadBrandingSettings(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() - return pingone.CheckSingletonResource(response, err, "ReadBrandingSettings", r.ResourceType()) + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.BrandingSettingsApi.ReadBrandingSettings(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadBrandingSettings", r.ResourceType()) } diff --git a/internal/connector/pingone/platform/resources/pingone_branding_settings_test.go b/internal/connector/pingone/platform/resources/pingone_branding_settings_test.go index 63074315..ecd01130 100644 --- a/internal/connector/pingone/platform/resources/pingone_branding_settings_test.go +++ b/internal/connector/pingone/platform/resources/pingone_branding_settings_test.go @@ -10,15 +10,15 @@ import ( func TestBrandingSettingsExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.BrandingSettings(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.BrandingSettings(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_branding_settings", ResourceName: "pingone_branding_settings", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_branding_theme.go b/internal/connector/pingone/platform/resources/pingone_branding_theme.go index 1bab57a9..f20f2782 100644 --- a/internal/connector/pingone/platform/resources/pingone_branding_theme.go +++ b/internal/connector/pingone/platform/resources/pingone_branding_theme.go @@ -16,11 +16,11 @@ var ( ) type PingOneBrandingThemeResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneBrandingThemeResource -func BrandingTheme(clientInfo *connector.PingOneClientInfo) *PingOneBrandingThemeResource { +func BrandingTheme(clientInfo *connector.ClientInfo) *PingOneBrandingThemeResource { return &PingOneBrandingThemeResource{ clientInfo: clientInfo, } @@ -45,14 +45,14 @@ func (r *PingOneBrandingThemeResource) ExportAll() (*[]connector.ImportBlock, er commentData := map[string]string{ "Branding Theme ID": brandingThemeId, "Branding Theme Name": brandingThemeName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: brandingThemeName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, brandingThemeId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, brandingThemeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneBrandingThemeResource) ExportAll() (*[]connector.ImportBlock, er func (r *PingOneBrandingThemeResource) getBrandingThemeData() (map[string]string, error) { brandingThemeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.BrandingThemesApi.ReadBrandingThemes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.BrandingThemesApi.ReadBrandingThemes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() brandingThemes, err := pingone.GetManagementAPIObjectsFromIterator[management.BrandingTheme](iter, "ReadBrandingThemes", "GetThemes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_branding_theme_default.go b/internal/connector/pingone/platform/resources/pingone_branding_theme_default.go index dae07a20..f50e5484 100644 --- a/internal/connector/pingone/platform/resources/pingone_branding_theme_default.go +++ b/internal/connector/pingone/platform/resources/pingone_branding_theme_default.go @@ -16,11 +16,11 @@ var ( ) type PingOneBrandingThemeDefaultResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneBrandingThemeDefaultResource -func BrandingThemeDefault(clientInfo *connector.PingOneClientInfo) *PingOneBrandingThemeDefaultResource { +func BrandingThemeDefault(clientInfo *connector.ClientInfo) *PingOneBrandingThemeDefaultResource { return &PingOneBrandingThemeDefaultResource{ clientInfo: clientInfo, } @@ -46,14 +46,14 @@ func (r *PingOneBrandingThemeDefaultResource) ExportAll() (*[]connector.ImportBl commentData := map[string]string{ "Default Branding Theme Name": *defaultBrandingThemeName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_default_theme", *defaultBrandingThemeName), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -63,7 +63,7 @@ func (r *PingOneBrandingThemeDefaultResource) ExportAll() (*[]connector.ImportBl } func (r *PingOneBrandingThemeDefaultResource) getDefaultBrandingThemeName() (*string, error) { - iter := r.clientInfo.ApiClient.ManagementAPIClient.BrandingThemesApi.ReadBrandingThemes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.BrandingThemesApi.ReadBrandingThemes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() brandingThemes, err := pingone.GetManagementAPIObjectsFromIterator[management.BrandingTheme](iter, "ReadBrandingThemes", "GetThemes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_branding_theme_default_test.go b/internal/connector/pingone/platform/resources/pingone_branding_theme_default_test.go index 95cafb14..7748d1c3 100644 --- a/internal/connector/pingone/platform/resources/pingone_branding_theme_default_test.go +++ b/internal/connector/pingone/platform/resources/pingone_branding_theme_default_test.go @@ -10,15 +10,15 @@ import ( func TestBrandingThemeDefaultExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.BrandingThemeDefault(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.BrandingThemeDefault(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_branding_theme_default", ResourceName: "test_slate_2_default_theme", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_branding_theme_test.go b/internal/connector/pingone/platform/resources/pingone_branding_theme_test.go index 1dea4362..9e583d47 100644 --- a/internal/connector/pingone/platform/resources/pingone_branding_theme_test.go +++ b/internal/connector/pingone/platform/resources/pingone_branding_theme_test.go @@ -11,25 +11,25 @@ import ( func TestBrandingThemeExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.BrandingTheme(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.BrandingTheme(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_branding_theme", ResourceName: "test_slate_2", - ResourceID: fmt.Sprintf("%s/a3e0fc98-a7bf-4750-9778-2397fc0a3586", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a3e0fc98-a7bf-4750-9778-2397fc0a3586", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_branding_theme", ResourceName: "Ping Default", - ResourceID: fmt.Sprintf("%s/b02d49a3-c468-462a-9fd0-659e0f3dde96", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b02d49a3-c468-462a-9fd0-659e0f3dde96", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_branding_theme", ResourceName: "Slate", - ResourceID: fmt.Sprintf("%s/fbf0886a-fb1f-41c2-ad42-e7dc601dabb3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/fbf0886a-fb1f-41c2-ad42-e7dc601dabb3", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_certificate.go b/internal/connector/pingone/platform/resources/pingone_certificate.go index 9b6fcfc8..9591f2ad 100644 --- a/internal/connector/pingone/platform/resources/pingone_certificate.go +++ b/internal/connector/pingone/platform/resources/pingone_certificate.go @@ -14,11 +14,11 @@ var ( ) type PingOneCertificateResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneCertificateResource -func Certificate(clientInfo *connector.PingOneClientInfo) *PingOneCertificateResource { +func Certificate(clientInfo *connector.ClientInfo) *PingOneCertificateResource { return &PingOneCertificateResource{ clientInfo: clientInfo, } @@ -43,14 +43,14 @@ func (r *PingOneCertificateResource) ExportAll() (*[]connector.ImportBlock, erro commentData := map[string]string{ "Certificate ID": certificateId, "Certificate Name": certificateName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: certificateName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, certificateId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, certificateId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -64,7 +64,7 @@ func (r *PingOneCertificateResource) getCertificateData() (map[string]string, er certificateData := make(map[string]string) // TODO: Implement pagination once supported in the PingOne Go Client SDK - entityArray, response, err := r.clientInfo.ApiClient.ManagementAPIClient.CertificateManagementApi.GetCertificates(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + entityArray, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.CertificateManagementApi.GetCertificates(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() ok, err := common.HandleClientResponse(response, err, "GetCertificates", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_certificate_test.go b/internal/connector/pingone/platform/resources/pingone_certificate_test.go index fda5dd95..658f4724 100644 --- a/internal/connector/pingone/platform/resources/pingone_certificate_test.go +++ b/internal/connector/pingone/platform/resources/pingone_certificate_test.go @@ -11,20 +11,20 @@ import ( func TestCertificateExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Certificate(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Certificate(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_certificate", ResourceName: "common name", - ResourceID: fmt.Sprintf("%s/b9eb2b6e-381e-4b1c-86d3-096d951787f4", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b9eb2b6e-381e-4b1c-86d3-096d951787f4", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_certificate", ResourceName: "terraform", - ResourceID: fmt.Sprintf("%s/fa8f15d6-1c62-4db1-920e-d22f6dd68ba8", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/fa8f15d6-1c62-4db1-920e-d22f6dd68ba8", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_custom_domain.go b/internal/connector/pingone/platform/resources/pingone_custom_domain.go index d7d77c11..6156c248 100644 --- a/internal/connector/pingone/platform/resources/pingone_custom_domain.go +++ b/internal/connector/pingone/platform/resources/pingone_custom_domain.go @@ -16,11 +16,11 @@ var ( ) type PingOneCustomDomainResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneCustomDomainResource -func CustomDomain(clientInfo *connector.PingOneClientInfo) *PingOneCustomDomainResource { +func CustomDomain(clientInfo *connector.ClientInfo) *PingOneCustomDomainResource { return &PingOneCustomDomainResource{ clientInfo: clientInfo, } @@ -45,14 +45,14 @@ func (r *PingOneCustomDomainResource) ExportAll() (*[]connector.ImportBlock, err commentData := map[string]string{ "Custom Domain ID": domainId, "Custom Domain Name": domainName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: domainName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, domainId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, domainId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneCustomDomainResource) ExportAll() (*[]connector.ImportBlock, err func (r *PingOneCustomDomainResource) getCustomDomainData() (map[string]string, error) { domainData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.CustomDomainsApi.ReadAllDomains(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.CustomDomainsApi.ReadAllDomains(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() customDomains, err := pingone.GetManagementAPIObjectsFromIterator[management.CustomDomain](iter, "ReadAllDomains", "GetCustomDomains", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_custom_domain_test.go b/internal/connector/pingone/platform/resources/pingone_custom_domain_test.go index 8eca9d7a..24e97ee5 100644 --- a/internal/connector/pingone/platform/resources/pingone_custom_domain_test.go +++ b/internal/connector/pingone/platform/resources/pingone_custom_domain_test.go @@ -11,15 +11,15 @@ import ( func TestCustomDomainExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.CustomDomain(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.CustomDomain(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_custom_domain", ResourceName: "pioneerpalaceband.com", - ResourceID: fmt.Sprintf("%s/5eb2548d-fdb2-45f6-85bc-7adfd856cbd9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5eb2548d-fdb2-45f6-85bc-7adfd856cbd9", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_environment.go b/internal/connector/pingone/platform/resources/pingone_environment.go index eb599ede..b217b565 100644 --- a/internal/connector/pingone/platform/resources/pingone_environment.go +++ b/internal/connector/pingone/platform/resources/pingone_environment.go @@ -3,7 +3,6 @@ package resources import ( "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/connector/pingone" "github.com/pingidentity/pingcli/internal/logger" ) @@ -13,11 +12,11 @@ var ( ) type PingOneEnvironmentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneEnvironmentResource -func Environment(clientInfo *connector.PingOneClientInfo) *PingOneEnvironmentResource { +func Environment(clientInfo *connector.ClientInfo) *PingOneEnvironmentResource { return &PingOneEnvironmentResource{ clientInfo: clientInfo, } @@ -43,13 +42,13 @@ func (r *PingOneEnvironmentResource) ExportAll() (*[]connector.ImportBlock, erro commentData := map[string]string{ "Resource Type": r.ResourceType(), - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: r.ResourceType(), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -59,6 +58,6 @@ func (r *PingOneEnvironmentResource) ExportAll() (*[]connector.ImportBlock, erro } func (r *PingOneEnvironmentResource) checkEnvironmentData() (bool, error) { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.EnvironmentsApi.ReadOneEnvironment(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() - return pingone.CheckSingletonResource(response, err, "ReadOneEnvironment", r.ResourceType()) + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.EnvironmentsApi.ReadOneEnvironment(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadOneEnvironment", r.ResourceType()) } diff --git a/internal/connector/pingone/platform/resources/pingone_environment_test.go b/internal/connector/pingone/platform/resources/pingone_environment_test.go index ebc34e9e..5360de0d 100644 --- a/internal/connector/pingone/platform/resources/pingone_environment_test.go +++ b/internal/connector/pingone/platform/resources/pingone_environment_test.go @@ -10,15 +10,15 @@ import ( func TestEnvironmentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Environment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Environment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_environment", ResourceName: "pingone_environment", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_form.go b/internal/connector/pingone/platform/resources/pingone_form.go index cf6b0546..7ad3b61c 100644 --- a/internal/connector/pingone/platform/resources/pingone_form.go +++ b/internal/connector/pingone/platform/resources/pingone_form.go @@ -16,11 +16,11 @@ var ( ) type PingOneFormResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneFormResource -func Form(clientInfo *connector.PingOneClientInfo) *PingOneFormResource { +func Form(clientInfo *connector.ClientInfo) *PingOneFormResource { return &PingOneFormResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneFormResource) ExportAll() (*[]connector.ImportBlock, error) { for formId, formName := range formData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Form ID": formId, "Form Name": formName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneFormResource) ExportAll() (*[]connector.ImportBlock, error) { importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: formName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, formId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, formId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneFormResource) ExportAll() (*[]connector.ImportBlock, error) { func (r *PingOneFormResource) getFormData() (map[string]string, error) { formData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.FormManagementApi.ReadAllForms(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.FormManagementApi.ReadAllForms(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() forms, err := pingone.GetManagementAPIObjectsFromIterator[management.Form](iter, "ReadAllForms", "GetForms", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_form_test.go b/internal/connector/pingone/platform/resources/pingone_form_test.go index 1a4fdd2c..94f591d5 100644 --- a/internal/connector/pingone/platform/resources/pingone_form_test.go +++ b/internal/connector/pingone/platform/resources/pingone_form_test.go @@ -11,15 +11,15 @@ import ( func TestFormExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Form(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Form(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_form", ResourceName: "Test Form", - ResourceID: fmt.Sprintf("%s/837c2f09-f8dc-41e9-b2f2-5f7bf1efded1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/837c2f09-f8dc-41e9-b2f2-5f7bf1efded1", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2.go b/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2.go index 0e811c94..ac8c6996 100644 --- a/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2.go +++ b/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2.go @@ -3,7 +3,6 @@ package resources import ( "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/connector/pingone" "github.com/pingidentity/pingcli/internal/logger" ) @@ -13,11 +12,11 @@ var ( ) type PingOneFormRecaptchaV2Resource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneFormRecaptchaV2Resource -func FormRecaptchaV2(clientInfo *connector.PingOneClientInfo) *PingOneFormRecaptchaV2Resource { +func FormRecaptchaV2(clientInfo *connector.ClientInfo) *PingOneFormRecaptchaV2Resource { return &PingOneFormRecaptchaV2Resource{ clientInfo: clientInfo, } @@ -42,14 +41,14 @@ func (r *PingOneFormRecaptchaV2Resource) ExportAll() (*[]connector.ImportBlock, } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: r.ResourceType(), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -59,6 +58,6 @@ func (r *PingOneFormRecaptchaV2Resource) ExportAll() (*[]connector.ImportBlock, } func (r *PingOneFormRecaptchaV2Resource) checkFormRecaptchaV2Data() (bool, error) { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.RecaptchaConfigurationApi.ReadRecaptchaConfiguration(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() - return pingone.CheckSingletonResource(response, err, "ReadRecaptchaConfiguration", r.ResourceType()) + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.RecaptchaConfigurationApi.ReadRecaptchaConfiguration(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadRecaptchaConfiguration", r.ResourceType()) } diff --git a/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2_test.go b/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2_test.go index ca277d56..9eed52a4 100644 --- a/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2_test.go +++ b/internal/connector/pingone/platform/resources/pingone_forms_recaptcha_v2_test.go @@ -10,15 +10,15 @@ import ( func TestFormRecaptchaV2Export(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.FormRecaptchaV2(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.FormRecaptchaV2(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_forms_recaptcha_v2", ResourceName: "pingone_forms_recaptcha_v2", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_gateway.go b/internal/connector/pingone/platform/resources/pingone_gateway.go index 1fdb0d2f..c37e64b9 100644 --- a/internal/connector/pingone/platform/resources/pingone_gateway.go +++ b/internal/connector/pingone/platform/resources/pingone_gateway.go @@ -16,11 +16,11 @@ var ( ) type PingOneGatewayResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneGatewayResource -func Gateway(clientInfo *connector.PingOneClientInfo) *PingOneGatewayResource { +func Gateway(clientInfo *connector.ClientInfo) *PingOneGatewayResource { return &PingOneGatewayResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneGatewayResource) ExportAll() (*[]connector.ImportBlock, error) { for gatewayId, gatewayName := range gatewayData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Gateway ID": gatewayId, "Gateway Name": gatewayName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneGatewayResource) ExportAll() (*[]connector.ImportBlock, error) { importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: gatewayName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, gatewayId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, gatewayId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneGatewayResource) ExportAll() (*[]connector.ImportBlock, error) { func (r *PingOneGatewayResource) getGatewayData() (map[string]string, error) { gatewayData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GatewaysApi.ReadAllGateways(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GatewaysApi.ReadAllGateways(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() gateways, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedGatewaysInner](iter, "ReadAllGateways", "GetGateways", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_gateway_credential.go b/internal/connector/pingone/platform/resources/pingone_gateway_credential.go index ef4d93a7..6eaed9f4 100644 --- a/internal/connector/pingone/platform/resources/pingone_gateway_credential.go +++ b/internal/connector/pingone/platform/resources/pingone_gateway_credential.go @@ -16,11 +16,11 @@ var ( ) type PingOneGatewayCredentialResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneGatewayCredentialResource -func GatewayCredential(clientInfo *connector.PingOneClientInfo) *PingOneGatewayCredentialResource { +func GatewayCredential(clientInfo *connector.ClientInfo) *PingOneGatewayCredentialResource { return &PingOneGatewayCredentialResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneGatewayCredentialResource) ExportAll() (*[]connector.ImportBlock for _, gatewayCredentialId := range gatewayCredentialData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Gateway Credential ID": gatewayCredentialId, "Gateway ID": gatewayId, "Gateway Name": gatewayName, @@ -59,7 +59,7 @@ func (r *PingOneGatewayCredentialResource) ExportAll() (*[]connector.ImportBlock importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_credential_%s", gatewayName, gatewayCredentialId), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, gatewayId, gatewayCredentialId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, gatewayId, gatewayCredentialId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -73,7 +73,7 @@ func (r *PingOneGatewayCredentialResource) ExportAll() (*[]connector.ImportBlock func (r *PingOneGatewayCredentialResource) getGatewayData() (map[string]string, error) { gatewayData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GatewaysApi.ReadAllGateways(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GatewaysApi.ReadAllGateways(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() gatewayInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedGatewaysInner](iter, "ReadAllGateways", "GetGateways", r.ResourceType()) if err != nil { return nil, err @@ -112,7 +112,7 @@ func (r *PingOneGatewayCredentialResource) getGatewayData() (map[string]string, func (r *PingOneGatewayCredentialResource) getGatewayCredentialData(gatewayId string) ([]string, error) { gatewayCredentialData := []string{} - iter := r.clientInfo.ApiClient.ManagementAPIClient.GatewayCredentialsApi.ReadAllGatewayCredentials(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, gatewayId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GatewayCredentialsApi.ReadAllGatewayCredentials(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, gatewayId).Execute() gatewayCredentials, err := pingone.GetManagementAPIObjectsFromIterator[management.GatewayCredential](iter, "ReadAllGatewayCredentials", "GetCredentials", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_gateway_credential_test.go b/internal/connector/pingone/platform/resources/pingone_gateway_credential_test.go index ae24b50f..648ef2ca 100644 --- a/internal/connector/pingone/platform/resources/pingone_gateway_credential_test.go +++ b/internal/connector/pingone/platform/resources/pingone_gateway_credential_test.go @@ -11,50 +11,50 @@ import ( func TestGatewayCredentialExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.GatewayCredential(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.GatewayCredential(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_gateway_credential", ResourceName: "random_credential_932c1ca6-da29-4a0e-b19c-d012f5b6014f", - ResourceID: fmt.Sprintf("%s/0b1d882c-5c71-4600-a9fb-befdad921df2/932c1ca6-da29-4a0e-b19c-d012f5b6014f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0b1d882c-5c71-4600-a9fb-befdad921df2/932c1ca6-da29-4a0e-b19c-d012f5b6014f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "PingFederate LDAP Gateway_credential_fa809636-4796-4a25-8693-2b786eed4f71", - ResourceID: fmt.Sprintf("%s/3b7b5d9d-1820-4b21-bb29-a5336af65352/fa809636-4796-4a25-8693-2b786eed4f71", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3b7b5d9d-1820-4b21-bb29-a5336af65352/fa809636-4796-4a25-8693-2b786eed4f71", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "PF TF Provider_credential_971b5d20-0955-4030-b49b-7e349b3b9b1e", - ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312/971b5d20-0955-4030-b49b-7e349b3b9b1e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312/971b5d20-0955-4030-b49b-7e349b3b9b1e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "Local Test_credential_bd2307d8-2a5e-4c11-a397-cfb991179f3f", - ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102/bd2307d8-2a5e-4c11-a397-cfb991179f3f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102/bd2307d8-2a5e-4c11-a397-cfb991179f3f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "TestGateway_credential_2e2ab72c-6dcf-4ec2-96be-1a5ba2e66f4a", - ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5/2e2ab72c-6dcf-4ec2-96be-1a5ba2e66f4a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5/2e2ab72c-6dcf-4ec2-96be-1a5ba2e66f4a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "TestGateway_credential_5aa73594-66a3-4175-ad69-67fa38b5e307", - ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5/5aa73594-66a3-4175-ad69-67fa38b5e307", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5/5aa73594-66a3-4175-ad69-67fa38b5e307", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "TestGateway_credential_ed648842-d109-4a40-97ba-ef4f8ce8eabe", - ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5/ed648842-d109-4a40-97ba-ef4f8ce8eabe", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5/ed648842-d109-4a40-97ba-ef4f8ce8eabe", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_credential", ResourceName: "another connection for testing_credential_98f9946c-3a78-4b4b-8645-a425f89c7ab5", - ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135/98f9946c-3a78-4b4b-8645-a425f89c7ab5", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135/98f9946c-3a78-4b4b-8645-a425f89c7ab5", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment.go b/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment.go index e01a4170..ae090517 100644 --- a/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment.go +++ b/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment.go @@ -16,11 +16,11 @@ var ( ) type PingOneGatewayRoleAssignmentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneGatewayRoleAssignmentResource -func GatewayRoleAssignment(clientInfo *connector.PingOneClientInfo) *PingOneGatewayRoleAssignmentResource { +func GatewayRoleAssignment(clientInfo *connector.ClientInfo) *PingOneGatewayRoleAssignmentResource { return &PingOneGatewayRoleAssignmentResource{ clientInfo: clientInfo, } @@ -57,7 +57,7 @@ func (r *PingOneGatewayRoleAssignmentResource) ExportAll() (*[]connector.ImportB } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Gateway ID": gatewayId, "Gateway Name": gatewayName, "Resource Type": r.ResourceType(), @@ -68,7 +68,7 @@ func (r *PingOneGatewayRoleAssignmentResource) ExportAll() (*[]connector.ImportB importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s_%s", gatewayName, string(*roleName), roleAssignmentId), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, gatewayId, roleAssignmentId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, gatewayId, roleAssignmentId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneGatewayRoleAssignmentResource) ExportAll() (*[]connector.ImportB func (r *PingOneGatewayRoleAssignmentResource) getGatewayData() (map[string]string, error) { gatewayData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GatewaysApi.ReadAllGateways(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GatewaysApi.ReadAllGateways(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() gatewayInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedGatewaysInner](iter, "ReadAllGateways", "GetGateways", r.ResourceType()) if err != nil { return nil, err @@ -110,7 +110,7 @@ func (r *PingOneGatewayRoleAssignmentResource) getGatewayData() (map[string]stri func (r *PingOneGatewayRoleAssignmentResource) getGatewayRoleAssignmentData(gatewayId string) (map[string]string, error) { gatewayRoleAssignmentData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GatewayRoleAssignmentsApi.ReadGatewayRoleAssignments(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, gatewayId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GatewayRoleAssignmentsApi.ReadGatewayRoleAssignments(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, gatewayId).Execute() gatewayRoleAssignments, err := pingone.GetManagementAPIObjectsFromIterator[management.RoleAssignment](iter, "ReadGatewayRoleAssignments", "GetRoleAssignments", r.ResourceType()) if err != nil { return nil, err @@ -132,8 +132,8 @@ func (r *PingOneGatewayRoleAssignmentResource) getGatewayRoleAssignmentData(gate } func (r *PingOneGatewayRoleAssignmentResource) getRoleAssignmentRoleName(roleId string) (*management.EnumRoleName, error) { - role, resp, err := r.clientInfo.ApiClient.ManagementAPIClient.RolesApi.ReadOneRole(r.clientInfo.Context, roleId).Execute() - ok, err := pingone.CheckSingletonResource(resp, err, "ReadOneRole", r.ResourceType()) + role, resp, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.RolesApi.ReadOneRole(r.clientInfo.PingOneContext, roleId).Execute() + ok, err := common.CheckSingletonResource(resp, err, "ReadOneRole", r.ResourceType()) if err != nil { return nil, err } diff --git a/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment_test.go b/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment_test.go index 713e3a5c..a29090cd 100644 --- a/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment_test.go +++ b/internal/connector/pingone/platform/resources/pingone_gateway_role_assignment_test.go @@ -11,40 +11,40 @@ import ( func TestGatewayRoleAssignmentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.GatewayRoleAssignment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.GatewayRoleAssignment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_gateway_role_assignment", ResourceName: "PF TF Provider_Identity Data Admin_1c5549f9-95f5-4380-b975-d0165aadd9d2", - ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312/1c5549f9-95f5-4380-b975-d0165aadd9d2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312/1c5549f9-95f5-4380-b975-d0165aadd9d2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_role_assignment", ResourceName: "PF TF Provider_Environment Admin_1cf8fca5-f14f-4a64-a521-60efc7891e7e", - ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312/1cf8fca5-f14f-4a64-a521-60efc7891e7e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312/1cf8fca5-f14f-4a64-a521-60efc7891e7e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_role_assignment", ResourceName: "Local Test_Identity Data Admin_e424fff4-a8ca-4a75-a169-3376dd2aad96", - ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102/e424fff4-a8ca-4a75-a169-3376dd2aad96", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102/e424fff4-a8ca-4a75-a169-3376dd2aad96", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_role_assignment", ResourceName: "Local Test_Environment Admin_393d4c4e-6642-432d-bc11-1638948d6dd2", - ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102/393d4c4e-6642-432d-bc11-1638948d6dd2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102/393d4c4e-6642-432d-bc11-1638948d6dd2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_role_assignment", ResourceName: "another connection for testing_Identity Data Admin_239579d0-fc0b-4b50-ba03-dfe80e2bb6d0", - ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135/239579d0-fc0b-4b50-ba03-dfe80e2bb6d0", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135/239579d0-fc0b-4b50-ba03-dfe80e2bb6d0", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway_role_assignment", ResourceName: "another connection for testing_Environment Admin_07ed5801-4d44-4578-9d2f-c6ef6d537e83", - ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135/07ed5801-4d44-4578-9d2f-c6ef6d537e83", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135/07ed5801-4d44-4578-9d2f-c6ef6d537e83", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_gateway_test.go b/internal/connector/pingone/platform/resources/pingone_gateway_test.go index 8a28ac37..c590c859 100644 --- a/internal/connector/pingone/platform/resources/pingone_gateway_test.go +++ b/internal/connector/pingone/platform/resources/pingone_gateway_test.go @@ -11,40 +11,40 @@ import ( func TestGatewayExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Gateway(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Gateway(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_gateway", ResourceName: "random", - ResourceID: fmt.Sprintf("%s/0b1d882c-5c71-4600-a9fb-befdad921df2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0b1d882c-5c71-4600-a9fb-befdad921df2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway", ResourceName: "PingFederate LDAP Gateway", - ResourceID: fmt.Sprintf("%s/3b7b5d9d-1820-4b21-bb29-a5336af65352", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3b7b5d9d-1820-4b21-bb29-a5336af65352", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway", ResourceName: "PF TF Provider", - ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/554257ac-76ca-447a-a210-722343328312", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway", ResourceName: "Local Test", - ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5cd3f6b7-35f0-4873-ac64-f32118bf3102", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway", ResourceName: "TestGateway", - ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/bc37814f-b3a9-4149-b880-0ed457bbb5c5", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_gateway", ResourceName: "another connection for testing", - ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8773b833-ade0-4883-9cad-05fe82b23135", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan.go b/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan.go index f69c73ba..c56afb66 100644 --- a/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan.go +++ b/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan.go @@ -16,11 +16,11 @@ var ( ) type PingOneIdentityPropagationPlanResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneIdentityPropagationPlanResource -func IdentityPropagationPlan(clientInfo *connector.PingOneClientInfo) *PingOneIdentityPropagationPlanResource { +func IdentityPropagationPlan(clientInfo *connector.ClientInfo) *PingOneIdentityPropagationPlanResource { return &PingOneIdentityPropagationPlanResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneIdentityPropagationPlanResource) ExportAll() (*[]connector.Impor for planId, planName := range planData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Identity Propagation Plan ID": planId, "Identity Propagation Plan Name": planName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneIdentityPropagationPlanResource) ExportAll() (*[]connector.Impor importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: planName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, planId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, planId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneIdentityPropagationPlanResource) ExportAll() (*[]connector.Impor func (r *PingOneIdentityPropagationPlanResource) getIdentityPropagationPlanData() (map[string]string, error) { identityPropagationPlanData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.IdentityPropagationPlansApi.ReadAllPlans(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.IdentityPropagationPlansApi.ReadAllPlans(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() identityPropagationPlans, err := pingone.GetManagementAPIObjectsFromIterator[management.IdentityPropagationPlan](iter, "ReadAllPlans", "GetPlans", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan_test.go b/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan_test.go index 128d3339..6a890010 100644 --- a/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan_test.go +++ b/internal/connector/pingone/platform/resources/pingone_identity_propagation_plan_test.go @@ -11,15 +11,15 @@ import ( func TestIdentityPropagationPlanExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.IdentityPropagationPlan(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.IdentityPropagationPlan(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_identity_propagation_plan", ResourceName: "Default", - ResourceID: fmt.Sprintf("%s/ffc23586-01a8-498a-9745-af0b9f0e9c74", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ffc23586-01a8-498a-9745-af0b9f0e9c74", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_key.go b/internal/connector/pingone/platform/resources/pingone_key.go index fb204331..e17c5666 100644 --- a/internal/connector/pingone/platform/resources/pingone_key.go +++ b/internal/connector/pingone/platform/resources/pingone_key.go @@ -14,11 +14,11 @@ var ( ) type PingOneKeyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneKeyResource -func Key(clientInfo *connector.PingOneClientInfo) *PingOneKeyResource { +func Key(clientInfo *connector.ClientInfo) *PingOneKeyResource { return &PingOneKeyResource{ clientInfo: clientInfo, } @@ -44,7 +44,7 @@ func (r *PingOneKeyResource) ExportAll() (*[]connector.ImportBlock, error) { keyType := keyNameAndType[1] commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Key ID": keyId, "Key Name": keyName, "Key Type": keyType, @@ -54,7 +54,7 @@ func (r *PingOneKeyResource) ExportAll() (*[]connector.ImportBlock, error) { importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", keyName, keyType), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, keyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, keyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -68,7 +68,7 @@ func (r *PingOneKeyResource) getKeyData() (map[string][]string, error) { keyData := make(map[string][]string) // TODO: Implement pagination once supported in the PingOne Go Client SDK - entityArray, response, err := r.clientInfo.ApiClient.ManagementAPIClient.CertificateManagementApi.GetKeys(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + entityArray, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.CertificateManagementApi.GetKeys(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() ok, err := common.HandleClientResponse(response, err, "GetKeys", r.ResourceType()) if err != nil { diff --git a/internal/connector/pingone/platform/resources/pingone_key_rotation_policy.go b/internal/connector/pingone/platform/resources/pingone_key_rotation_policy.go index 97328065..8861a31a 100644 --- a/internal/connector/pingone/platform/resources/pingone_key_rotation_policy.go +++ b/internal/connector/pingone/platform/resources/pingone_key_rotation_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOneKeyRotationPolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneKeyRotationPolicyResource -func KeyRotationPolicy(clientInfo *connector.PingOneClientInfo) *PingOneKeyRotationPolicyResource { +func KeyRotationPolicy(clientInfo *connector.ClientInfo) *PingOneKeyRotationPolicyResource { return &PingOneKeyRotationPolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneKeyRotationPolicyResource) ExportAll() (*[]connector.ImportBlock for keyRotationPolicyId, keyRotationPolicyName := range keyRotationPolicyData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Key Rotation Policy ID": keyRotationPolicyId, "Key Rotation Policy Name": keyRotationPolicyName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneKeyRotationPolicyResource) ExportAll() (*[]connector.ImportBlock importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: keyRotationPolicyName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, keyRotationPolicyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, keyRotationPolicyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneKeyRotationPolicyResource) ExportAll() (*[]connector.ImportBlock func (r *PingOneKeyRotationPolicyResource) getKeyRotationPolicyData() (map[string]string, error) { keyRotationPolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.KeyRotationPoliciesApi.GetKeyRotationPolicies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.KeyRotationPoliciesApi.GetKeyRotationPolicies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() keyRotationPolicies, err := pingone.GetManagementAPIObjectsFromIterator[management.KeyRotationPolicy](iter, "GetKeyRotationPolicies", "GetKeyRotationPolicies", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_key_rotation_policy_test.go b/internal/connector/pingone/platform/resources/pingone_key_rotation_policy_test.go index 2bfac4cc..86ba6f68 100644 --- a/internal/connector/pingone/platform/resources/pingone_key_rotation_policy_test.go +++ b/internal/connector/pingone/platform/resources/pingone_key_rotation_policy_test.go @@ -11,15 +11,15 @@ import ( func TestKeyRotationPolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.KeyRotationPolicy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.KeyRotationPolicy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_key_rotation_policy", ResourceName: "PingOne Key Rotation Policy for PingFederate Terraform Provider environment", - ResourceID: fmt.Sprintf("%s/9ad5e4a1-b414-40cc-84d1-8255272e4a30", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9ad5e4a1-b414-40cc-84d1-8255272e4a30", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_key_test.go b/internal/connector/pingone/platform/resources/pingone_key_test.go index 5e830bce..da6b03f3 100644 --- a/internal/connector/pingone/platform/resources/pingone_key_test.go +++ b/internal/connector/pingone/platform/resources/pingone_key_test.go @@ -11,30 +11,30 @@ import ( func TestKeyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Key(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Key(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_key", ResourceName: "PingOne SSO Certificate for PingFederate Terraform Provider environment_ENCRYPTION", - ResourceID: fmt.Sprintf("%s/46a2d7ad-27ee-4743-92ce-aac279a4358a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/46a2d7ad-27ee-4743-92ce-aac279a4358a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_key", ResourceName: "test_SIGNING", - ResourceID: fmt.Sprintf("%s/619bad1d-c884-47c5-99d7-a998bc317791", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/619bad1d-c884-47c5-99d7-a998bc317791", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_key", ResourceName: "PingOne SSO Certificate for PingFederate Terraform Provider environment_SIGNING", - ResourceID: fmt.Sprintf("%s/702d1a27-10e9-40cc-ba73-d0274a2c97d2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/702d1a27-10e9-40cc-ba73-d0274a2c97d2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_key", ResourceName: "common name_SIGNING", - ResourceID: fmt.Sprintf("%s/7d16daa9-f7eb-405f-b130-6567fe9d918f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7d16daa9-f7eb-405f-b130-6567fe9d918f", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_language.go b/internal/connector/pingone/platform/resources/pingone_language.go index 953c6094..401da581 100644 --- a/internal/connector/pingone/platform/resources/pingone_language.go +++ b/internal/connector/pingone/platform/resources/pingone_language.go @@ -16,11 +16,11 @@ var ( ) type PingOneLanguageResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneLanguageResource -func Language(clientInfo *connector.PingOneClientInfo) *PingOneLanguageResource { +func Language(clientInfo *connector.ClientInfo) *PingOneLanguageResource { return &PingOneLanguageResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneLanguageResource) ExportAll() (*[]connector.ImportBlock, error) for languageId, languageName := range languageData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Language ID": languageId, "Language Name": languageName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneLanguageResource) ExportAll() (*[]connector.ImportBlock, error) importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: languageName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, languageId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, languageId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneLanguageResource) ExportAll() (*[]connector.ImportBlock, error) func (r *PingOneLanguageResource) getLanguageData() (map[string]string, error) { languageData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.LanguagesApi.ReadLanguages(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.LanguagesApi.ReadLanguages(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() languageInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedLanguagesInner](iter, "ReadLanguages", "GetLanguages", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_language_test.go b/internal/connector/pingone/platform/resources/pingone_language_test.go index a7403db0..3afec5c9 100644 --- a/internal/connector/pingone/platform/resources/pingone_language_test.go +++ b/internal/connector/pingone/platform/resources/pingone_language_test.go @@ -11,15 +11,15 @@ import ( func TestLanguageExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Language(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Language(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_language", ResourceName: "Afar", - ResourceID: fmt.Sprintf("%s/c5f97303-c5c1-459a-b8ee-3fcb183eb52a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c5f97303-c5c1-459a-b8ee-3fcb183eb52a", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_language_update.go b/internal/connector/pingone/platform/resources/pingone_language_update.go index e3673928..8d9689d2 100644 --- a/internal/connector/pingone/platform/resources/pingone_language_update.go +++ b/internal/connector/pingone/platform/resources/pingone_language_update.go @@ -16,11 +16,11 @@ var ( ) type PingOneLanguageUpdateResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneLanguageUpdateResource -func LanguageUpdate(clientInfo *connector.PingOneClientInfo) *PingOneLanguageUpdateResource { +func LanguageUpdate(clientInfo *connector.ClientInfo) *PingOneLanguageUpdateResource { return &PingOneLanguageUpdateResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneLanguageUpdateResource) ExportAll() (*[]connector.ImportBlock, e for languageId, languageName := range languageUpdateData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Language ID": languageId, "Language Name": languageName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneLanguageUpdateResource) ExportAll() (*[]connector.ImportBlock, e importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_update", languageName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, languageId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, languageId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneLanguageUpdateResource) ExportAll() (*[]connector.ImportBlock, e func (r *PingOneLanguageUpdateResource) getLanguageUpdateData() (map[string]string, error) { languageUpdateData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.LanguagesApi.ReadLanguages(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.LanguagesApi.ReadLanguages(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() languageInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedLanguagesInner](iter, "ReadLanguages", "GetLanguages", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_language_update_test.go b/internal/connector/pingone/platform/resources/pingone_language_update_test.go index 5462624f..4ea07440 100644 --- a/internal/connector/pingone/platform/resources/pingone_language_update_test.go +++ b/internal/connector/pingone/platform/resources/pingone_language_update_test.go @@ -11,20 +11,20 @@ import ( func TestLanguageUpdateExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.LanguageUpdate(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.LanguageUpdate(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_language_update", ResourceName: "French_update", - ResourceID: fmt.Sprintf("%s/3f8a2e14-0ace-41db-a92d-74b3b7913ffe", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3f8a2e14-0ace-41db-a92d-74b3b7913ffe", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_language_update", ResourceName: "English_update", - ResourceID: fmt.Sprintf("%s/88c78fb2-9d74-41e3-a1d8-a9f729a2b463", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/88c78fb2-9d74-41e3-a1d8-a9f729a2b463", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_notification_policy.go b/internal/connector/pingone/platform/resources/pingone_notification_policy.go index 976e7819..d065ffeb 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_policy.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOneNotificationPolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneNotificationPolicyResource -func NotificationPolicy(clientInfo *connector.PingOneClientInfo) *PingOneNotificationPolicyResource { +func NotificationPolicy(clientInfo *connector.ClientInfo) *PingOneNotificationPolicyResource { return &PingOneNotificationPolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneNotificationPolicyResource) ExportAll() (*[]connector.ImportBloc for notificationPolicyId, notificationPolicyName := range notificationPolicyData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Notification Policy ID": notificationPolicyId, "Notification Policy Name": notificationPolicyName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneNotificationPolicyResource) ExportAll() (*[]connector.ImportBloc importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: notificationPolicyName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, notificationPolicyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, notificationPolicyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneNotificationPolicyResource) ExportAll() (*[]connector.ImportBloc func (r *PingOneNotificationPolicyResource) getNotificationPolicyData() (map[string]string, error) { notificationPolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.NotificationsPoliciesApi.ReadAllNotificationsPolicies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.NotificationsPoliciesApi.ReadAllNotificationsPolicies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() notificationPolicies, err := pingone.GetManagementAPIObjectsFromIterator[management.NotificationsPolicy](iter, "ReadAllNotificationsPolicies", "GetNotificationsPolicies", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_notification_policy_test.go b/internal/connector/pingone/platform/resources/pingone_notification_policy_test.go index c4aef5d7..b1d52372 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_policy_test.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_policy_test.go @@ -11,20 +11,20 @@ import ( func TestNotificationPolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.NotificationPolicy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.NotificationPolicy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_notification_policy", ResourceName: "Test", - ResourceID: fmt.Sprintf("%s/32cc413d-0ec8-4be9-823c-a9e06f5a5830", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/32cc413d-0ec8-4be9-823c-a9e06f5a5830", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_policy", ResourceName: "Default Notification Policy", - ResourceID: fmt.Sprintf("%s/54606af4-72a6-4b38-bfb8-75034097af9a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/54606af4-72a6-4b38-bfb8-75034097af9a", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_notification_settings.go b/internal/connector/pingone/platform/resources/pingone_notification_settings.go index fd63d9b6..044e5fe4 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_settings.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_settings.go @@ -3,7 +3,6 @@ package resources import ( "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/connector/pingone" "github.com/pingidentity/pingcli/internal/logger" ) @@ -13,11 +12,11 @@ var ( ) type PingOneNotificationSettingsResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneNotificationSettingsResource -func NotificationSettings(clientInfo *connector.PingOneClientInfo) *PingOneNotificationSettingsResource { +func NotificationSettings(clientInfo *connector.ClientInfo) *PingOneNotificationSettingsResource { return &PingOneNotificationSettingsResource{ clientInfo: clientInfo, } @@ -42,14 +41,14 @@ func (r *PingOneNotificationSettingsResource) ExportAll() (*[]connector.ImportBl } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: r.ResourceType(), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -59,6 +58,6 @@ func (r *PingOneNotificationSettingsResource) ExportAll() (*[]connector.ImportBl } func (r *PingOneNotificationSettingsResource) checkNotificationSettingsData() (bool, error) { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.NotificationsSettingsApi.ReadNotificationsSettings(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() - return pingone.CheckSingletonResource(response, err, "ReadNotificationsSettings", r.ResourceType()) + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.NotificationsSettingsApi.ReadNotificationsSettings(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadNotificationsSettings", r.ResourceType()) } diff --git a/internal/connector/pingone/platform/resources/pingone_notification_settings_email.go b/internal/connector/pingone/platform/resources/pingone_notification_settings_email.go index b630c860..f8e6d312 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_settings_email.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_settings_email.go @@ -3,7 +3,6 @@ package resources import ( "github.com/pingidentity/pingcli/internal/connector" "github.com/pingidentity/pingcli/internal/connector/common" - "github.com/pingidentity/pingcli/internal/connector/pingone" "github.com/pingidentity/pingcli/internal/logger" ) @@ -13,11 +12,11 @@ var ( ) type PingOneNotificationSettingsEmailResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneNotificationSettingsEmailResource -func NotificationSettingsEmail(clientInfo *connector.PingOneClientInfo) *PingOneNotificationSettingsEmailResource { +func NotificationSettingsEmail(clientInfo *connector.ClientInfo) *PingOneNotificationSettingsEmailResource { return &PingOneNotificationSettingsEmailResource{ clientInfo: clientInfo, } @@ -42,14 +41,14 @@ func (r *PingOneNotificationSettingsEmailResource) ExportAll() (*[]connector.Imp } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: r.ResourceType(), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -59,6 +58,6 @@ func (r *PingOneNotificationSettingsEmailResource) ExportAll() (*[]connector.Imp } func (r *PingOneNotificationSettingsEmailResource) checkNotificationSettingsEmailData() (bool, error) { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.NotificationsSettingsSMTPApi.ReadEmailNotificationsSettings(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() - return pingone.CheckSingletonResource(response, err, "ReadEmailNotificationsSettings", r.ResourceType()) + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.NotificationsSettingsSMTPApi.ReadEmailNotificationsSettings(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadEmailNotificationsSettings", r.ResourceType()) } diff --git a/internal/connector/pingone/platform/resources/pingone_notification_settings_email_test.go b/internal/connector/pingone/platform/resources/pingone_notification_settings_email_test.go index 564453cb..96089c90 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_settings_email_test.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_settings_email_test.go @@ -10,15 +10,15 @@ import ( func TestNotificationSettingsEmailExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.NotificationSettingsEmail(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.NotificationSettingsEmail(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_notification_settings_email", ResourceName: "pingone_notification_settings_email", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_notification_settings_test.go b/internal/connector/pingone/platform/resources/pingone_notification_settings_test.go index dca2f02f..81aa755f 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_settings_test.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_settings_test.go @@ -10,15 +10,15 @@ import ( func TestNotificationSettingsExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.NotificationSettings(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.NotificationSettings(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_notification_settings", ResourceName: "pingone_notification_settings", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/platform/resources/pingone_notification_template_content.go b/internal/connector/pingone/platform/resources/pingone_notification_template_content.go index 954debb8..8cd784c7 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_template_content.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_template_content.go @@ -26,11 +26,11 @@ var ( ) type PingOneNotificationTemplateContentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneNotificationTemplateContentResource -func NotificationTemplateContent(clientInfo *connector.PingOneClientInfo) *PingOneNotificationTemplateContentResource { +func NotificationTemplateContent(clientInfo *connector.ClientInfo) *PingOneNotificationTemplateContentResource { return &PingOneNotificationTemplateContentResource{ clientInfo: clientInfo, } @@ -75,7 +75,7 @@ func (r *PingOneNotificationTemplateContentResource) ExportAll() (*[]connector.I "Template Name": string(templateName), "Template Content Delivery Method": templateContentDeliveryMethod, "Template Content Locale": templateContentLocale, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Template Content ID": templateContentId, } @@ -87,7 +87,7 @@ func (r *PingOneNotificationTemplateContentResource) ExportAll() (*[]connector.I importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s_%s%s", string(templateName), templateContentDeliveryMethod, templateContentLocale, templateContentVariant), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, string(templateName), templateContentId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, string(templateName), templateContentId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -102,7 +102,7 @@ func (r *PingOneNotificationTemplateContentResource) ExportAll() (*[]connector.I func (r *PingOneNotificationTemplateContentResource) getEnabledLocales() (map[string]bool, error) { enabledLocales := make(map[string]bool) - iter := r.clientInfo.ApiClient.ManagementAPIClient.LanguagesApi.ReadLanguages(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.LanguagesApi.ReadLanguages(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() languageInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedLanguagesInner](iter, "ReadLanguages", "GetLanguages", r.ResourceType()) if err != nil { return nil, err @@ -126,7 +126,7 @@ func (r *PingOneNotificationTemplateContentResource) getTemplateNames() ([]manag templateNames := []management.EnumTemplateName{} for _, templateName := range management.AllowedEnumTemplateNameEnumValues { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.NotificationsTemplatesApi.ReadOneTemplate(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, templateName).Execute() + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.NotificationsTemplatesApi.ReadOneTemplate(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, templateName).Execute() // When PingOne services are not enabled in an environment, // the response code for the templates related to that service is // 400 Bad Request - "CONSTRAINT_VIOLATION" @@ -160,7 +160,7 @@ func (r *PingOneNotificationTemplateContentResource) getTemplateNames() ([]manag func (r *PingOneNotificationTemplateContentResource) getTemplateContentData(templateName management.EnumTemplateName) ([]NotificationTemplateContentData, error) { templateContentData := []NotificationTemplateContentData{} - iter := r.clientInfo.ApiClient.ManagementAPIClient.NotificationsTemplatesApi.ReadAllTemplateContents(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, templateName).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.NotificationsTemplatesApi.ReadAllTemplateContents(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, templateName).Execute() templateContents, err := pingone.GetManagementAPIObjectsFromIterator[management.TemplateContent](iter, "ReadAllTemplateContents", "GetContents", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_notification_template_content_test.go b/internal/connector/pingone/platform/resources/pingone_notification_template_content_test.go index 3cee9cfb..c2052eea 100644 --- a/internal/connector/pingone/platform/resources/pingone_notification_template_content_test.go +++ b/internal/connector/pingone/platform/resources/pingone_notification_template_content_test.go @@ -14,245 +14,245 @@ func TestNotificationTemplateContentExport(t *testing.T) { t.SkipNow() // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.NotificationTemplateContent(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.NotificationTemplateContent(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_email_en_625d98de_9f2d_4e1b_8417_d0ba139d36b2", - ResourceID: fmt.Sprintf("%s/device_pairing/625d98de-9f2d-4e1b-8417-d0ba139d36b2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/625d98de-9f2d-4e1b-8417-d0ba139d36b2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_sms_en_d4ca6154_bf87_4201_825b_6a1fecbd66ac", - ResourceID: fmt.Sprintf("%s/device_pairing/d4ca6154-bf87-4201-825b-6a1fecbd66ac", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/d4ca6154-bf87-4201-825b-6a1fecbd66ac", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_voice_en_d4ed6d8d_1b54_4903_970f_1c9896eed55d", - ResourceID: fmt.Sprintf("%s/device_pairing/d4ed6d8d-1b54-4903-970f-1c9896eed55d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/d4ed6d8d-1b54-4903-970f-1c9896eed55d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_email_en_2acfe36d_065c_465e_be21_cb95e46cee45", - ResourceID: fmt.Sprintf("%s/device_pairing/2acfe36d-065c-465e-be21-cb95e46cee45", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/2acfe36d-065c-465e-be21-cb95e46cee45", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_voice_fr_f50e80bc_e84d_7124_0db5_4fd4cf72d7c9", - ResourceID: fmt.Sprintf("%s/device_pairing/f50e80bc-e84d-7124-0db5-4fd4cf72d7c9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/f50e80bc-e84d-7124-0db5-4fd4cf72d7c9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_email_fr_a0a13d00_a249_7ad1_3f7e_b6ba77a55955", - ResourceID: fmt.Sprintf("%s/device_pairing/a0a13d00-a249-7ad1-3f7e-b6ba77a55955", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/a0a13d00-a249-7ad1-3f7e-b6ba77a55955", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_sms_fr_c21bda2c_64b4_7025_2c83_d04d0f72077f", - ResourceID: fmt.Sprintf("%s/device_pairing/c21bda2c-64b4-7025-2c83-d04d0f72077f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/c21bda2c-64b4-7025-2c83-d04d0f72077f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_email_en_14651a6a_945b_725b_321f_e13cbe0fd9c6", - ResourceID: fmt.Sprintf("%s/device_pairing/14651a6a-945b-725b-321f-e13cbe0fd9c6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/14651a6a-945b-725b-321f-e13cbe0fd9c6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_sms_en_f67b076d_bb78_4cbd_b945_f721be9c88f6", - ResourceID: fmt.Sprintf("%s/device_pairing/f67b076d-bb78-4cbd-b945-f721be9c88f6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/f67b076d-bb78-4cbd-b945-f721be9c88f6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_voice_en_56b27d33_0110_7670_2c16_f0fca48b6340", - ResourceID: fmt.Sprintf("%s/device_pairing/56b27d33-0110-7670-2c16-f0fca48b6340", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/56b27d33-0110-7670-2c16-f0fca48b6340", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_voice_en_d02693ae_8809_4a7f_a7f9_da9f272c8096", - ResourceID: fmt.Sprintf("%s/device_pairing/d02693ae-8809-4a7f-a7f9-da9f272c8096", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/d02693ae-8809-4a7f-a7f9-da9f272c8096", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "device_pairing_sms_en_2512b56d_e14d_7cbd_3667_e1663d44fa41", - ResourceID: fmt.Sprintf("%s/device_pairing/2512b56d-e14d-7cbd-3667-e1663d44fa41", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/device_pairing/2512b56d-e14d-7cbd-3667-e1663d44fa41", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "email_verification_admin_email_en_b130f9a6_a422_72c0_3afa_105d5f8fbb88", - ResourceID: fmt.Sprintf("%s/email_verification_admin/b130f9a6-a422-72c0-3afa-105d5f8fbb88", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/email_verification_admin/b130f9a6-a422-72c0-3afa-105d5f8fbb88", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "email_verification_user_email_en_5eda6f7b_59c6_7c22_3348_9821179c2b37", - ResourceID: fmt.Sprintf("%s/email_verification_user/5eda6f7b-59c6-7c22-3348-9821179c2b37", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/email_verification_user/5eda6f7b-59c6-7c22-3348-9821179c2b37", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "general_sms_fr_63501c32_723c_7d4c_1f93_4e3c8c0cb292", - ResourceID: fmt.Sprintf("%s/general/63501c32-723c-7d4c-1f93-4e3c8c0cb292", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/general/63501c32-723c-7d4c-1f93-4e3c8c0cb292", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "general_email_en_92adace7_5056_7d40_1c7e_adc71e57cc3f", - ResourceID: fmt.Sprintf("%s/general/92adace7-5056-7d40-1c7e-adc71e57cc3f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/general/92adace7-5056-7d40-1c7e-adc71e57cc3f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "general_sms_en_1dd4c1a3_802b_70c0_3d10_5524eb9defc7", - ResourceID: fmt.Sprintf("%s/general/1dd4c1a3-802b-70c0-3d10-5524eb9defc7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/general/1dd4c1a3-802b-70c0-3d10-5524eb9defc7", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "general_voice_en_72618f82_18ed_7b7c_19ac_0b5899d92f0c", - ResourceID: fmt.Sprintf("%s/general/72618f82-18ed-7b7c-19ac-0b5899d92f0c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/general/72618f82-18ed-7b7c-19ac-0b5899d92f0c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "general_email_fr_28524b17_b60b_7fa2_131d_59816ac19864", - ResourceID: fmt.Sprintf("%s/general/28524b17-b60b-7fa2-131d-59816ac19864", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/general/28524b17-b60b-7fa2-131d-59816ac19864", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "general_voice_fr_831e9b77_5a05_7ed1_0fa6_c8cb637b5904", - ResourceID: fmt.Sprintf("%s/general/831e9b77-5a05-7ed1-0fa6-c8cb637b5904", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/general/831e9b77-5a05-7ed1-0fa6-c8cb637b5904", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "new_device_paired_email_fr_a7c11013_ca70_7071_3955_d647568f95d2", - ResourceID: fmt.Sprintf("%s/new_device_paired/a7c11013-ca70-7071-3955-d647568f95d2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/new_device_paired/a7c11013-ca70-7071-3955-d647568f95d2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "new_device_paired_email_en_995558d3_39a9_72bf_32a6_e3c1e395aa1f", - ResourceID: fmt.Sprintf("%s/new_device_paired/995558d3-39a9-72bf-32a6-e3c1e395aa1f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/new_device_paired/995558d3-39a9-72bf-32a6-e3c1e395aa1f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "new_device_paired_sms_fr_a5dacd1c_c395_74ab_216f_a17037b22cf6", - ResourceID: fmt.Sprintf("%s/new_device_paired/a5dacd1c-c395-74ab-216f-a17037b22cf6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/new_device_paired/a5dacd1c-c395-74ab-216f-a17037b22cf6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "new_device_paired_sms_en_daef917c_3695_7347_1ed0_bb03d80198c2", - ResourceID: fmt.Sprintf("%s/new_device_paired/daef917c-3695-7347-1ed0-bb03d80198c2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/new_device_paired/daef917c-3695-7347-1ed0-bb03d80198c2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "recovery_code_template_email_fr_c558cd3c_eb16_7158_38c3_d87fb2e320f0", - ResourceID: fmt.Sprintf("%s/recovery_code_template/c558cd3c-eb16-7158-38c3-d87fb2e320f0", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/recovery_code_template/c558cd3c-eb16-7158-38c3-d87fb2e320f0", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "recovery_code_template_email_en_dc6755cd_123b_71f6_2fe0_5b74d3789001", - ResourceID: fmt.Sprintf("%s/recovery_code_template/dc6755cd-123b-71f6-2fe0-5b74d3789001", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/recovery_code_template/dc6755cd-123b-71f6-2fe0-5b74d3789001", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_push_en_c6b2f1e9_fcde_4b64_b473_f5370219da76", - ResourceID: fmt.Sprintf("%s/strong_authentication/c6b2f1e9-fcde-4b64-b473-f5370219da76", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/c6b2f1e9-fcde-4b64-b473-f5370219da76", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_voice_fr_c6de3d50_d766_7533_25cf_bd28f72e2f86", - ResourceID: fmt.Sprintf("%s/strong_authentication/c6de3d50-d766-7533-25cf-bd28f72e2f86", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/c6de3d50-d766-7533-25cf-bd28f72e2f86", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_sms_en_5d2b94bc_d264_7f79_048f_a0f062f66d98", - ResourceID: fmt.Sprintf("%s/strong_authentication/5d2b94bc-d264-7f79-048f-a0f062f66d98", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/5d2b94bc-d264-7f79-048f-a0f062f66d98", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_push_en_b368bc5e_0815_7d16_178c_2631a620e00c", - ResourceID: fmt.Sprintf("%s/strong_authentication/b368bc5e-0815-7d16-178c-2631a620e00c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/b368bc5e-0815-7d16-178c-2631a620e00c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_email_fr_2e103d6d_af8e_70fa_282f_91821ed778fd", - ResourceID: fmt.Sprintf("%s/strong_authentication/2e103d6d-af8e-70fa-282f-91821ed778fd", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/2e103d6d-af8e-70fa-282f-91821ed778fd", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_push_fr_d3d66f1b_b748_7afc_2d4b_a1daffd50a77", - ResourceID: fmt.Sprintf("%s/strong_authentication/d3d66f1b-b748-7afc-2d4b-a1daffd50a77", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/d3d66f1b-b748-7afc-2d4b-a1daffd50a77", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_voice_en_8a888c96_4cb9_7941_0c07_0a4e99a54a04", - ResourceID: fmt.Sprintf("%s/strong_authentication/8a888c96-4cb9-7941-0c07-0a4e99a54a04", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/8a888c96-4cb9-7941-0c07-0a4e99a54a04", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_sms_en_41054e31_dacd_4591_a8c8_f44cbec6313f", - ResourceID: fmt.Sprintf("%s/strong_authentication/41054e31-dacd-4591-a8c8-f44cbec6313f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/41054e31-dacd-4591-a8c8-f44cbec6313f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_sms_fr_807cd1a1_f3f8_7440_10f5_5f9cf944abb3", - ResourceID: fmt.Sprintf("%s/strong_authentication/807cd1a1-f3f8-7440-10f5-5f9cf944abb3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/807cd1a1-f3f8-7440-10f5-5f9cf944abb3", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_email_en_e8539132_48c6_7061_1309_f33e99599a3e", - ResourceID: fmt.Sprintf("%s/strong_authentication/e8539132-48c6-7061-1309-f33e99599a3e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/e8539132-48c6-7061-1309-f33e99599a3e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "strong_authentication_email_en_d1235c66_48c6_46ae_ae6d_599513ab26d7", - ResourceID: fmt.Sprintf("%s/strong_authentication/d1235c66-48c6-46ae-ae6d-599513ab26d7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/strong_authentication/d1235c66-48c6-46ae-ae6d-599513ab26d7", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_push_fr_453937a6_e95b_78b9_0d13_be9e17cdda89", - ResourceID: fmt.Sprintf("%s/transaction/453937a6-e95b-78b9-0d13-be9e17cdda89", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/453937a6-e95b-78b9-0d13-be9e17cdda89", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_sms_fr_10458132_7361_7d6b_3e42_04128ae31625", - ResourceID: fmt.Sprintf("%s/transaction/10458132-7361-7d6b-3e42-04128ae31625", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/10458132-7361-7d6b-3e42-04128ae31625", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_voice_en_b2509f63_c86c_7f76_0fea_52472af67df2", - ResourceID: fmt.Sprintf("%s/transaction/b2509f63-c86c-7f76-0fea-52472af67df2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/b2509f63-c86c-7f76-0fea-52472af67df2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_email_fr_1953c10e_53a9_7c44_13eb_560823acacf6", - ResourceID: fmt.Sprintf("%s/transaction/1953c10e-53a9-7c44-13eb-560823acacf6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/1953c10e-53a9-7c44-13eb-560823acacf6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_push_en_926802db_4abb_7369_249a_ff3c63c6a7d1", - ResourceID: fmt.Sprintf("%s/transaction/926802db-4abb-7369-249a-ff3c63c6a7d1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/926802db-4abb-7369-249a-ff3c63c6a7d1", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_email_en_996806a7_0c4e_744c_117b_6312e08225d3", - ResourceID: fmt.Sprintf("%s/transaction/996806a7-0c4e-744c-117b-6312e08225d3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/996806a7-0c4e-744c-117b-6312e08225d3", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_sms_en_d9751d12_2f37_7d6e_3cc4_33368770f6da", - ResourceID: fmt.Sprintf("%s/transaction/d9751d12-2f37-7d6e-3cc4-33368770f6da", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/d9751d12-2f37-7d6e-3cc4-33368770f6da", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "transaction_voice_fr_0db4c9f4_c1d6_7adf_1870_22f70f5e95a1", - ResourceID: fmt.Sprintf("%s/transaction/0db4c9f4-c1d6-7adf-1870-22f70f5e95a1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/transaction/0db4c9f4-c1d6-7adf-1870-22f70f5e95a1", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "verification_code_template_email_fr_03bdf108_c71d_74fb_28e8_143f22b98125", - ResourceID: fmt.Sprintf("%s/verification_code_template/03bdf108-c71d-74fb-28e8-143f22b98125", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/verification_code_template/03bdf108-c71d-74fb-28e8-143f22b98125", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_notification_template_content", ResourceName: "verification_code_template_email_en_93688f61_e554_736d_227d_ac8ee610c254", - ResourceID: fmt.Sprintf("%s/verification_code_template/93688f61-e554-736d-227d-ac8ee610c254", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/verification_code_template/93688f61-e554-736d-227d-ac8ee610c254", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings.go b/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings.go index d0cb292e..360caad9 100644 --- a/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings.go +++ b/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings.go @@ -16,11 +16,11 @@ var ( ) type PingOnePhoneDeliverySettingsResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOnePhoneDeliverySettingsResource -func PhoneDeliverySettings(clientInfo *connector.PingOneClientInfo) *PingOnePhoneDeliverySettingsResource { +func PhoneDeliverySettings(clientInfo *connector.ClientInfo) *PingOnePhoneDeliverySettingsResource { return &PingOnePhoneDeliverySettingsResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOnePhoneDeliverySettingsResource) ExportAll() (*[]connector.ImportB for phoneDeliverySettingsId, phoneDeliverySettingsName := range phoneDeliverySettingsData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Phone Delivery Settings ID": phoneDeliverySettingsId, "Phone Delivery Settings Name": phoneDeliverySettingsName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOnePhoneDeliverySettingsResource) ExportAll() (*[]connector.ImportB importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: phoneDeliverySettingsName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, phoneDeliverySettingsId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, phoneDeliverySettingsId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOnePhoneDeliverySettingsResource) ExportAll() (*[]connector.ImportB func (r *PingOnePhoneDeliverySettingsResource) getPhoneDeliverySettingsData() (map[string]string, error) { phoneDeliverySettingsData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.PhoneDeliverySettingsApi.ReadAllPhoneDeliverySettings(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.PhoneDeliverySettingsApi.ReadAllPhoneDeliverySettings(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() phoneDeliverySettings, err := pingone.GetManagementAPIObjectsFromIterator[management.NotificationsSettingsPhoneDeliverySettings](iter, "ReadAllPhoneDeliverySettings", "GetPhoneDeliverySettings", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings_test.go b/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings_test.go index aafcb226..7251babc 100644 --- a/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings_test.go +++ b/internal/connector/pingone/platform/resources/pingone_phone_delivery_settings_test.go @@ -11,15 +11,15 @@ import ( func TestPhoneDeliverySettingsExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.PhoneDeliverySettings(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.PhoneDeliverySettings(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_phone_delivery_settings", ResourceName: "provider_custom_eb90b2a5-a801-45b3-8bf4-7d06cb6a5374", - ResourceID: fmt.Sprintf("%s/eb90b2a5-a801-45b3-8bf4-7d06cb6a5374", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/eb90b2a5-a801-45b3-8bf4-7d06cb6a5374", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_system_application.go b/internal/connector/pingone/platform/resources/pingone_system_application.go index 2940630f..6bbdd443 100644 --- a/internal/connector/pingone/platform/resources/pingone_system_application.go +++ b/internal/connector/pingone/platform/resources/pingone_system_application.go @@ -16,11 +16,11 @@ var ( ) type PingOneSystemApplicationResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneSystemApplicationResource -func SystemApplication(clientInfo *connector.PingOneClientInfo) *PingOneSystemApplicationResource { +func SystemApplication(clientInfo *connector.ClientInfo) *PingOneSystemApplicationResource { return &PingOneSystemApplicationResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneSystemApplicationResource) ExportAll() (*[]connector.ImportBlock for appId, appName := range applicationData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "System Application ID": appId, "System Application Name": appName, @@ -52,7 +52,7 @@ func (r *PingOneSystemApplicationResource) ExportAll() (*[]connector.ImportBlock importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: appName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, appId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneSystemApplicationResource) ExportAll() (*[]connector.ImportBlock func (r *PingOneSystemApplicationResource) getSystemApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_system_application_test.go b/internal/connector/pingone/platform/resources/pingone_system_application_test.go index 7676f9ee..41feee3e 100644 --- a/internal/connector/pingone/platform/resources/pingone_system_application_test.go +++ b/internal/connector/pingone/platform/resources/pingone_system_application_test.go @@ -11,20 +11,20 @@ import ( func TestSystemApplicationExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.SystemApplication(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.SystemApplication(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_system_application", ResourceName: "PingOne Application Portal", - ResourceID: fmt.Sprintf("%s/92a3765c-e135-4afa-8b12-4469672ac8a9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/92a3765c-e135-4afa-8b12-4469672ac8a9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_system_application", ResourceName: "PingOne Self-Service - MyAccount", - ResourceID: fmt.Sprintf("%s/4ce54d01-5138-4c56-8175-4f02f69278f5", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4ce54d01-5138-4c56-8175-4f02f69278f5", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_trusted_email_address.go b/internal/connector/pingone/platform/resources/pingone_trusted_email_address.go index a418d891..f4bb9ca5 100644 --- a/internal/connector/pingone/platform/resources/pingone_trusted_email_address.go +++ b/internal/connector/pingone/platform/resources/pingone_trusted_email_address.go @@ -16,11 +16,11 @@ var ( ) type PingOneTrustedEmailAddressResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneTrustedEmailAddressResource -func TrustedEmailAddress(clientInfo *connector.PingOneClientInfo) *PingOneTrustedEmailAddressResource { +func TrustedEmailAddress(clientInfo *connector.ClientInfo) *PingOneTrustedEmailAddressResource { return &PingOneTrustedEmailAddressResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneTrustedEmailAddressResource) ExportAll() (*[]connector.ImportBlo for trustedEmailId, trustedEmailAddress := range trustedEmailAddressData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Trusted Email Address": trustedEmailAddress, "Trusted Email Address ID": trustedEmailId, @@ -60,7 +60,7 @@ func (r *PingOneTrustedEmailAddressResource) ExportAll() (*[]connector.ImportBlo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", trustedEmailDomainName, trustedEmailAddress), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, trustedEmailDomainId, trustedEmailId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, trustedEmailDomainId, trustedEmailId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneTrustedEmailAddressResource) ExportAll() (*[]connector.ImportBlo func (r *PingOneTrustedEmailAddressResource) getTrustedEmailDomainData() (map[string]string, error) { trustedEmailDomainData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.TrustedEmailDomainsApi.ReadAllTrustedEmailDomains(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.TrustedEmailDomainsApi.ReadAllTrustedEmailDomains(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() trustedEmailDomains, err := pingone.GetManagementAPIObjectsFromIterator[management.EmailDomain](iter, "ReadAllTrustedEmailDomains", "GetEmailDomains", r.ResourceType()) if err != nil { return nil, err @@ -95,7 +95,7 @@ func (r *PingOneTrustedEmailAddressResource) getTrustedEmailDomainData() (map[st func (r *PingOneTrustedEmailAddressResource) getTrustedEmailAddressData(trustedEmailDomainId string) (map[string]string, error) { trustedEmailAddressData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.TrustedEmailAddressesApi.ReadAllTrustedEmailAddresses(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, trustedEmailDomainId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.TrustedEmailAddressesApi.ReadAllTrustedEmailAddresses(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, trustedEmailDomainId).Execute() trustedEmailAddresses, err := pingone.GetManagementAPIObjectsFromIterator[management.EmailDomainTrustedEmail](iter, "ReadAllTrustedEmailAddresses", "GetTrustedEmails", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_trusted_email_address_test.go b/internal/connector/pingone/platform/resources/pingone_trusted_email_address_test.go index 409a9d50..4b08e031 100644 --- a/internal/connector/pingone/platform/resources/pingone_trusted_email_address_test.go +++ b/internal/connector/pingone/platform/resources/pingone_trusted_email_address_test.go @@ -10,8 +10,8 @@ import ( func TestTrustedEmailAddressExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.TrustedEmailAddress(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.TrustedEmailAddress(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{} diff --git a/internal/connector/pingone/platform/resources/pingone_trusted_email_domain.go b/internal/connector/pingone/platform/resources/pingone_trusted_email_domain.go index 9ae6df09..3b9df378 100644 --- a/internal/connector/pingone/platform/resources/pingone_trusted_email_domain.go +++ b/internal/connector/pingone/platform/resources/pingone_trusted_email_domain.go @@ -16,11 +16,11 @@ var ( ) type PingOneTrustedEmailDomainResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOne Trusted Email Domain Resource -func TrustedEmailDomain(clientInfo *connector.PingOneClientInfo) *PingOneTrustedEmailDomainResource { +func TrustedEmailDomain(clientInfo *connector.ClientInfo) *PingOneTrustedEmailDomainResource { return &PingOneTrustedEmailDomainResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneTrustedEmailDomainResource) ExportAll() (*[]connector.ImportBloc for trustedEmailDomainId, trustedEmailDomainName := range trustedEmailDomainData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Trusted Email Domain ID": trustedEmailDomainId, "Trusted Email Domain Name": trustedEmailDomainName, @@ -52,7 +52,7 @@ func (r *PingOneTrustedEmailDomainResource) ExportAll() (*[]connector.ImportBloc importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: trustedEmailDomainName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, trustedEmailDomainId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, trustedEmailDomainId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneTrustedEmailDomainResource) ExportAll() (*[]connector.ImportBloc func (r *PingOneTrustedEmailDomainResource) getTrustedEmailDomainData() (map[string]string, error) { trustedEmailDomainData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.TrustedEmailDomainsApi.ReadAllTrustedEmailDomains(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.TrustedEmailDomainsApi.ReadAllTrustedEmailDomains(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() trustedEmailDomains, err := pingone.GetManagementAPIObjectsFromIterator[management.EmailDomain](iter, "ReadAllTrustedEmailDomains", "GetEmailDomains", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_trusted_email_domain_test.go b/internal/connector/pingone/platform/resources/pingone_trusted_email_domain_test.go index c47cb0d8..535a26a8 100644 --- a/internal/connector/pingone/platform/resources/pingone_trusted_email_domain_test.go +++ b/internal/connector/pingone/platform/resources/pingone_trusted_email_domain_test.go @@ -11,30 +11,30 @@ import ( func TestTrustedEmailDomainExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.TrustedEmailDomain(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.TrustedEmailDomain(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_trusted_email_domain", ResourceName: "test.customdomain.com", - ResourceID: fmt.Sprintf("%s/47efb375-e9e8-40dc-b1ce-8598bf7b4aea", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/47efb375-e9e8-40dc-b1ce-8598bf7b4aea", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_trusted_email_domain", ResourceName: "test.pingidentity.com", - ResourceID: fmt.Sprintf("%s/ff26c5c9-2e87-46d4-9cb0-077d162c7bcb", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff26c5c9-2e87-46d4-9cb0-077d162c7bcb", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_trusted_email_domain", ResourceName: "demo.bxretail.org", - ResourceID: fmt.Sprintf("%s/49f94864-f9c7-4778-ae37-839c2c546d1c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/49f94864-f9c7-4778-ae37-839c2c546d1c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_trusted_email_domain", ResourceName: "pioneerpalaceband.com", - ResourceID: fmt.Sprintf("%s/63d645d1-046a-4d53-a267-513cfc1d4213", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/63d645d1-046a-4d53-a267-513cfc1d4213", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/platform/resources/pingone_webhook.go b/internal/connector/pingone/platform/resources/pingone_webhook.go index 3e9e0f73..89f54b1e 100644 --- a/internal/connector/pingone/platform/resources/pingone_webhook.go +++ b/internal/connector/pingone/platform/resources/pingone_webhook.go @@ -16,11 +16,11 @@ var ( ) type PingOneWebhookResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneWebhookResource -func Webhook(clientInfo *connector.PingOneClientInfo) *PingOneWebhookResource { +func Webhook(clientInfo *connector.ClientInfo) *PingOneWebhookResource { return &PingOneWebhookResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneWebhookResource) ExportAll() (*[]connector.ImportBlock, error) { for subscriptionId, subscriptionName := range subscriptionData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Webhook ID": subscriptionId, "Webhook Name": subscriptionName, @@ -52,7 +52,7 @@ func (r *PingOneWebhookResource) ExportAll() (*[]connector.ImportBlock, error) { importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: subscriptionName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, subscriptionId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, subscriptionId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneWebhookResource) ExportAll() (*[]connector.ImportBlock, error) { func (r *PingOneWebhookResource) getSubscriptionData() (map[string]string, error) { subscriptionData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.SubscriptionsWebhooksApi.ReadAllSubscriptions(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.SubscriptionsWebhooksApi.ReadAllSubscriptions(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() subscriptions, err := pingone.GetManagementAPIObjectsFromIterator[management.Subscription](iter, "ReadAllSubscriptions", "GetSubscriptions", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/platform/resources/pingone_webhook_test.go b/internal/connector/pingone/platform/resources/pingone_webhook_test.go index 913f364f..c58c7744 100644 --- a/internal/connector/pingone/platform/resources/pingone_webhook_test.go +++ b/internal/connector/pingone/platform/resources/pingone_webhook_test.go @@ -11,15 +11,15 @@ import ( func TestWebhookExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Webhook(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Webhook(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_webhook", ResourceName: "Test Webhook", - ResourceID: fmt.Sprintf("%s/e50056fe-6571-46bc-aee1-e70f702c8b74", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/e50056fe-6571-46bc-aee1-e70f702c8b74", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/protect/pingone_protect_connector.go b/internal/connector/pingone/protect/pingone_protect_connector.go index 20d3ee25..a926d4dc 100644 --- a/internal/connector/pingone/protect/pingone_protect_connector.go +++ b/internal/connector/pingone/protect/pingone_protect_connector.go @@ -21,17 +21,17 @@ var ( ) type PingOneProtectConnector struct { - clientInfo connector.PingOneClientInfo + clientInfo connector.ClientInfo } // Utility method for creating a PingOneProtectConnector func ProtectConnector(ctx context.Context, apiClient *pingoneGoClient.Client, apiClientId *string, exportEnvironmentID string) *PingOneProtectConnector { return &PingOneProtectConnector{ - clientInfo: connector.PingOneClientInfo{ - Context: ctx, - ApiClient: apiClient, - ApiClientId: apiClientId, - ExportEnvironmentID: exportEnvironmentID, + clientInfo: connector.ClientInfo{ + PingOneContext: ctx, + PingOneApiClient: apiClient, + PingOneApiClientId: *apiClientId, + PingOneExportEnvironmentID: exportEnvironmentID, }, } } diff --git a/internal/connector/pingone/protect/pingone_protect_connector_test.go b/internal/connector/pingone/protect/pingone_protect_connector_test.go index b42595e7..9ffb470a 100644 --- a/internal/connector/pingone/protect/pingone_protect_connector_test.go +++ b/internal/connector/pingone/protect/pingone_protect_connector_test.go @@ -10,7 +10,7 @@ import ( ) func TestProtectTerraformPlan(t *testing.T) { - PingOneClientInfo := testutils.GetPingOneClientInfo(t) + clientInfo := testutils.GetClientInfo(t) testutils_terraform.InitPingOneTerraform(t) @@ -21,12 +21,12 @@ func TestProtectTerraformPlan(t *testing.T) { }{ { name: "RiskPolicy", - resource: resources.RiskPolicy(PingOneClientInfo), + resource: resources.RiskPolicy(clientInfo), ignoredErrors: nil, }, { name: "RiskPredictor", - resource: resources.RiskPredictor(PingOneClientInfo), + resource: resources.RiskPredictor(clientInfo), ignoredErrors: nil, }, } diff --git a/internal/connector/pingone/protect/resources/pingone_risk_policy.go b/internal/connector/pingone/protect/resources/pingone_risk_policy.go index 32ed7fcb..f75eb4e8 100644 --- a/internal/connector/pingone/protect/resources/pingone_risk_policy.go +++ b/internal/connector/pingone/protect/resources/pingone_risk_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOneRiskPolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneRiskPolicyResource -func RiskPolicy(clientInfo *connector.PingOneClientInfo) *PingOneRiskPolicyResource { +func RiskPolicy(clientInfo *connector.ClientInfo) *PingOneRiskPolicyResource { return &PingOneRiskPolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneRiskPolicyResource) ExportAll() (*[]connector.ImportBlock, error for riskPolicySetId, riskPolicySetName := range riskPolicySetData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Risk Policy ID": riskPolicySetId, "Risk Policy Name": riskPolicySetName, @@ -52,7 +52,7 @@ func (r *PingOneRiskPolicyResource) ExportAll() (*[]connector.ImportBlock, error importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: riskPolicySetName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, riskPolicySetId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, riskPolicySetId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneRiskPolicyResource) ExportAll() (*[]connector.ImportBlock, error func (r *PingOneRiskPolicyResource) getRiskPolicySetData() (map[string]string, error) { riskPolicySetData := make(map[string]string) - iter := r.clientInfo.ApiClient.RiskAPIClient.RiskPoliciesApi.ReadRiskPolicySets(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.RiskAPIClient.RiskPoliciesApi.ReadRiskPolicySets(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() riskPolicySets, err := pingone.GetRiskAPIObjectsFromIterator[risk.RiskPolicySet](iter, "ReadRiskPolicySets", "GetRiskPolicySets", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/protect/resources/pingone_risk_policy_test.go b/internal/connector/pingone/protect/resources/pingone_risk_policy_test.go index 051c5944..8b04d7f8 100644 --- a/internal/connector/pingone/protect/resources/pingone_risk_policy_test.go +++ b/internal/connector/pingone/protect/resources/pingone_risk_policy_test.go @@ -11,20 +11,20 @@ import ( func TestRiskPolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.RiskPolicy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.RiskPolicy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_risk_policy", ResourceName: "Default Risk Policy", - ResourceID: fmt.Sprintf("%s/f277d6e2-e073-018c-1b78-8be4cd16d898", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f277d6e2-e073-018c-1b78-8be4cd16d898", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_policy", ResourceName: "Test Risk Polict", - ResourceID: fmt.Sprintf("%s/9964b80b-3140-4d70-9ed5-ff29baf8438f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9964b80b-3140-4d70-9ed5-ff29baf8438f", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/protect/resources/pingone_risk_predictor.go b/internal/connector/pingone/protect/resources/pingone_risk_predictor.go index c2d1cf54..7c6fe212 100644 --- a/internal/connector/pingone/protect/resources/pingone_risk_predictor.go +++ b/internal/connector/pingone/protect/resources/pingone_risk_predictor.go @@ -16,11 +16,11 @@ var ( ) type PingOneRiskPredictorResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneRiskPredictorResource -func RiskPredictor(clientInfo *connector.PingOneClientInfo) *PingOneRiskPredictorResource { +func RiskPredictor(clientInfo *connector.ClientInfo) *PingOneRiskPredictorResource { return &PingOneRiskPredictorResource{ clientInfo: clientInfo, } @@ -46,7 +46,7 @@ func (r *PingOneRiskPredictorResource) ExportAll() (*[]connector.ImportBlock, er riskPredictorType := riskPredictorInfo[1] commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Risk Predictor ID": riskPredictorId, "Risk Predictor Name": riskPredictorName, @@ -56,7 +56,7 @@ func (r *PingOneRiskPredictorResource) ExportAll() (*[]connector.ImportBlock, er importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", riskPredictorType, riskPredictorName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, riskPredictorId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, riskPredictorId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -69,7 +69,7 @@ func (r *PingOneRiskPredictorResource) ExportAll() (*[]connector.ImportBlock, er func (r *PingOneRiskPredictorResource) getRiskPredictorData() (map[string][]string, error) { riskPredictorData := make(map[string][]string) - iter := r.clientInfo.ApiClient.RiskAPIClient.RiskAdvancedPredictorsApi.ReadAllRiskPredictors(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.RiskAPIClient.RiskAdvancedPredictorsApi.ReadAllRiskPredictors(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() riskPredictors, err := pingone.GetRiskAPIObjectsFromIterator[risk.RiskPredictor](iter, "ReadAllRiskPredictors", "GetRiskPredictors", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/protect/resources/pingone_risk_predictor_test.go b/internal/connector/pingone/protect/resources/pingone_risk_predictor_test.go index 53c9d281..ed22c543 100644 --- a/internal/connector/pingone/protect/resources/pingone_risk_predictor_test.go +++ b/internal/connector/pingone/protect/resources/pingone_risk_predictor_test.go @@ -11,75 +11,75 @@ import ( func TestRiskPredictorExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.RiskPredictor(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.RiskPredictor(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_risk_predictor", ResourceName: "USER_RISK_BEHAVIOR_User Risk Behavior", - ResourceID: fmt.Sprintf("%s/b7a259a3-f762-03df-1c0c-4c558a94e783", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b7a259a3-f762-03df-1c0c-4c558a94e783", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "VELOCITY_IP Velocity", - ResourceID: fmt.Sprintf("%s/eaf75445-0fa4-07f9-31f6-806a6b513b59", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/eaf75445-0fa4-07f9-31f6-806a6b513b59", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "VELOCITY_User Velocity", - ResourceID: fmt.Sprintf("%s/ab6c4119-90c4-0f07-0708-bf7802182a70", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ab6c4119-90c4-0f07-0708-bf7802182a70", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "USER_RISK_BEHAVIOR_User-Based Risk Behavior", - ResourceID: fmt.Sprintf("%s/f6e64983-2ae1-0b02-2af4-73389ce879fa", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/f6e64983-2ae1-0b02-2af4-73389ce879fa", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "DEVICE_New Device", - ResourceID: fmt.Sprintf("%s/b5339087-4e8c-08da-0c51-c826d67ca317", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b5339087-4e8c-08da-0c51-c826d67ca317", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "ANONYMOUS_NETWORK_Anonymous Network Detection", - ResourceID: fmt.Sprintf("%s/1bb86739-b74d-0882-1fbb-4da12fc3afc9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/1bb86739-b74d-0882-1fbb-4da12fc3afc9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "IP_REPUTATION_IP Reputation", - ResourceID: fmt.Sprintf("%s/c2753cc6-21b0-0490-3526-de9082c47fac", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c2753cc6-21b0-0490-3526-de9082c47fac", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "GEO_VELOCITY_Geovelocity Anomaly", - ResourceID: fmt.Sprintf("%s/13c1f49f-0f98-0870-2b3c-cf68549e9a4a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/13c1f49f-0f98-0870-2b3c-cf68549e9a4a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "USER_LOCATION_ANOMALY_User Location Anomaly", - ResourceID: fmt.Sprintf("%s/6c2a6e1f-f345-07a3-348e-8d820577338f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/6c2a6e1f-f345-07a3-348e-8d820577338f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "BOT_Bot Detection", - ResourceID: fmt.Sprintf("%s/818db5ee-209f-0371-18cf-f440ecbe3982", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/818db5ee-209f-0371-18cf-f440ecbe3982", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "DEVICE_Suspicious Device", - ResourceID: fmt.Sprintf("%s/dd53d209-c3eb-0980-3acb-0d1d4ecc10d1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/dd53d209-c3eb-0980-3acb-0d1d4ecc10d1", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "ADVERSARY_IN_THE_MIDDLE_Adversary In The Middle", - ResourceID: fmt.Sprintf("%s/8e9a0b6f-61a8-06a1-2bdb-fc168000a55d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8e9a0b6f-61a8-06a1-2bdb-fc168000a55d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_risk_predictor", ResourceName: "EMAIL_REPUTATION_Email Reputation", - ResourceID: fmt.Sprintf("%s/0a59b68e-e772-0eed-213a-a351f275f418", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0a59b68e-e772-0eed-213a-a351f275f418", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/pingone_sso_connector.go b/internal/connector/pingone/sso/pingone_sso_connector.go index a06aa3d6..d8e065c8 100644 --- a/internal/connector/pingone/sso/pingone_sso_connector.go +++ b/internal/connector/pingone/sso/pingone_sso_connector.go @@ -21,17 +21,17 @@ var ( ) type PingOneSSOConnector struct { - clientInfo connector.PingOneClientInfo + clientInfo connector.ClientInfo } // Utility method for creating a PingOneSSOConnector func SSOConnector(ctx context.Context, apiClient *pingoneGoClient.Client, apiClientId *string, exportEnvironmentID string) *PingOneSSOConnector { return &PingOneSSOConnector{ - clientInfo: connector.PingOneClientInfo{ - Context: ctx, - ApiClient: apiClient, - ApiClientId: apiClientId, - ExportEnvironmentID: exportEnvironmentID, + clientInfo: connector.ClientInfo{ + PingOneContext: ctx, + PingOneApiClient: apiClient, + PingOneApiClientId: *apiClientId, + PingOneExportEnvironmentID: exportEnvironmentID, }, } } diff --git a/internal/connector/pingone/sso/pingone_sso_connector_test.go b/internal/connector/pingone/sso/pingone_sso_connector_test.go index c9db28ac..c0c44a3d 100644 --- a/internal/connector/pingone/sso/pingone_sso_connector_test.go +++ b/internal/connector/pingone/sso/pingone_sso_connector_test.go @@ -10,7 +10,7 @@ import ( ) func TestSSOTerraformPlan(t *testing.T) { - PingOneClientInfo := testutils.GetPingOneClientInfo(t) + clientInfo := testutils.GetClientInfo(t) testutils_terraform.InitPingOneTerraform(t) @@ -21,129 +21,129 @@ func TestSSOTerraformPlan(t *testing.T) { }{ { name: "Application", - resource: resources.Application(PingOneClientInfo), + resource: resources.Application(clientInfo), ignoredErrors: nil, }, { name: "ApplicationAttributeMapping", - resource: resources.ApplicationAttributeMapping(PingOneClientInfo), + resource: resources.ApplicationAttributeMapping(clientInfo), ignoredErrors: nil, }, { name: "ApplicationFlowPolicyAssignment", - resource: resources.ApplicationFlowPolicyAssignment(PingOneClientInfo), + resource: resources.ApplicationFlowPolicyAssignment(clientInfo), ignoredErrors: nil, }, { name: "ApplicationResourceGrant", - resource: resources.ApplicationResourceGrant(PingOneClientInfo), + resource: resources.ApplicationResourceGrant(clientInfo), ignoredErrors: nil, }, { name: "ApplicationRoleAssignment", - resource: resources.ApplicationRoleAssignment(PingOneClientInfo), + resource: resources.ApplicationRoleAssignment(clientInfo), ignoredErrors: nil, }, { name: "ApplicationSecret", - resource: resources.ApplicationSecret(PingOneClientInfo), + resource: resources.ApplicationSecret(clientInfo), ignoredErrors: nil, }, { name: "ApplicationSignOnPolicyAssignment", - resource: resources.ApplicationSignOnPolicyAssignment(PingOneClientInfo), + resource: resources.ApplicationSignOnPolicyAssignment(clientInfo), ignoredErrors: nil, }, { name: "Group", - resource: resources.Group(PingOneClientInfo), + resource: resources.Group(clientInfo), ignoredErrors: nil, }, { name: "GroupNesting", - resource: resources.GroupNesting(PingOneClientInfo), + resource: resources.GroupNesting(clientInfo), ignoredErrors: nil, }, { name: "GroupRoleAssignment", - resource: resources.GroupRoleAssignment(PingOneClientInfo), + resource: resources.GroupRoleAssignment(clientInfo), ignoredErrors: nil, }, { name: "IdentityProvider", - resource: resources.IdentityProvider(PingOneClientInfo), + resource: resources.IdentityProvider(clientInfo), ignoredErrors: nil, }, { name: "IdentityProviderAttribute", - resource: resources.IdentityProviderAttribute(PingOneClientInfo), + resource: resources.IdentityProviderAttribute(clientInfo), ignoredErrors: nil, }, { name: "PasswordPolicy", - resource: resources.PasswordPolicy(PingOneClientInfo), + resource: resources.PasswordPolicy(clientInfo), ignoredErrors: nil, }, { name: "Population", - resource: resources.Population(PingOneClientInfo), + resource: resources.Population(clientInfo), ignoredErrors: nil, }, { name: "PopulationDefault", - resource: resources.PopulationDefault(PingOneClientInfo), + resource: resources.PopulationDefault(clientInfo), ignoredErrors: nil, }, { name: "PopulationDefaultIdp", - resource: resources.PopulationDefaultIdp(PingOneClientInfo), + resource: resources.PopulationDefaultIdp(clientInfo), ignoredErrors: nil, }, { name: "Resource", - resource: resources.Resource(PingOneClientInfo), + resource: resources.Resource(clientInfo), ignoredErrors: nil, }, { name: "ResourceAttribute", - resource: resources.ResourceAttribute(PingOneClientInfo), + resource: resources.ResourceAttribute(clientInfo), ignoredErrors: nil, }, { name: "ResourceScope", - resource: resources.ResourceScope(PingOneClientInfo), + resource: resources.ResourceScope(clientInfo), ignoredErrors: nil, }, { name: "ResourceScopeOpenId", - resource: resources.ResourceScopeOpenId(PingOneClientInfo), + resource: resources.ResourceScopeOpenId(clientInfo), ignoredErrors: nil, }, { name: "ResourceScopePingOneApi", - resource: resources.ResourceScopePingOneApi(PingOneClientInfo), + resource: resources.ResourceScopePingOneApi(clientInfo), ignoredErrors: nil, }, { name: "ResourceSecret", - resource: resources.ResourceSecret(PingOneClientInfo), + resource: resources.ResourceSecret(clientInfo), ignoredErrors: nil, }, { name: "SchemaAttribute", - resource: resources.SchemaAttribute(PingOneClientInfo), + resource: resources.SchemaAttribute(clientInfo), ignoredErrors: []string{ "Error: Data Loss Protection", }, }, { name: "SignOnPolicy", - resource: resources.SignOnPolicy(PingOneClientInfo), + resource: resources.SignOnPolicy(clientInfo), ignoredErrors: nil, }, { name: "SignOnPolicyAction", - resource: resources.SignOnPolicyAction(PingOneClientInfo), + resource: resources.SignOnPolicyAction(clientInfo), ignoredErrors: []string{ "Error: Conflicting configuration arguments", }, diff --git a/internal/connector/pingone/sso/resources/pingone_application.go b/internal/connector/pingone/sso/resources/pingone_application.go index 91ca6a58..3e63a068 100644 --- a/internal/connector/pingone/sso/resources/pingone_application.go +++ b/internal/connector/pingone/sso/resources/pingone_application.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationResource -func Application(clientInfo *connector.PingOneClientInfo) *PingOneApplicationResource { +func Application(clientInfo *connector.ClientInfo) *PingOneApplicationResource { return &PingOneApplicationResource{ clientInfo: clientInfo, } @@ -45,14 +45,14 @@ func (r *PingOneApplicationResource) ExportAll() (*[]connector.ImportBlock, erro commentData := map[string]string{ "Application ID": appId, "Application Name": appName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: appName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, appId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneApplicationResource) ExportAll() (*[]connector.ImportBlock, erro func (r *PingOneApplicationResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping.go b/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping.go index 847109de..6ec343ad 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping.go +++ b/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationAttributeMappingResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationAttributeMappingResource -func ApplicationAttributeMapping(clientInfo *connector.PingOneClientInfo) *PingOneApplicationAttributeMappingResource { +func ApplicationAttributeMapping(clientInfo *connector.ClientInfo) *PingOneApplicationAttributeMappingResource { return &PingOneApplicationAttributeMappingResource{ clientInfo: clientInfo, } @@ -53,14 +53,14 @@ func (r *PingOneApplicationAttributeMappingResource) ExportAll() (*[]connector.I "Application Name": appName, "Attribute Mapping ID": attributeMappingId, "Attribute Mapping Name": attributeMappingName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", appName, attributeMappingName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appId, attributeMappingId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId, attributeMappingId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneApplicationAttributeMappingResource) ExportAll() (*[]connector.I func (r *PingOneApplicationAttributeMappingResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -110,7 +110,7 @@ func (r *PingOneApplicationAttributeMappingResource) getApplicationData() (map[s func (r *PingOneApplicationAttributeMappingResource) getApplicationAttributeMappingData(appId string) (map[string]string, error) { applicationAttributeMappingData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationAttributeMappingApi.ReadAllApplicationAttributeMappings(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationAttributeMappingApi.ReadAllApplicationAttributeMappings(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appId).Execute() attributeMappingInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedAttributesInner](iter, "ReadAllApplicationAttributeMappings", "GetAttributes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping_test.go b/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping_test.go index beeb7942..47294b52 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_attribute_mapping_test.go @@ -11,45 +11,45 @@ import ( func TestApplicationAttributeMappingExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationAttributeMapping(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationAttributeMapping(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_attribute_mapping", ResourceName: "Example OAuth App_sub", - ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_attribute_mapping", ResourceName: "Getting Started Application_sub", - ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_attribute_mapping", ResourceName: "OAuth Worker App_sub", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_attribute_mapping", ResourceName: "PingOne DaVinci Connection_sub", - ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_attribute_mapping", ResourceName: "test app_sub", - ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_attribute_mapping", ResourceName: "Worker App_sub", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_attribute_mapping", ResourceName: "Test MFA_sub", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/f6d41400-e571-432e-9151-4ff06e0b51ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/f6d41400-e571-432e-9151-4ff06e0b51ce", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment.go b/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment.go index 96211e7e..1257ad9b 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment.go +++ b/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationFlowPolicyAssignmentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationFlowPolicyAssignmentResource -func ApplicationFlowPolicyAssignment(clientInfo *connector.PingOneClientInfo) *PingOneApplicationFlowPolicyAssignmentResource { +func ApplicationFlowPolicyAssignment(clientInfo *connector.ClientInfo) *PingOneApplicationFlowPolicyAssignmentResource { return &PingOneApplicationFlowPolicyAssignmentResource{ clientInfo: clientInfo, } @@ -59,7 +59,7 @@ func (r *PingOneApplicationFlowPolicyAssignmentResource) ExportAll() (*[]connect commentData := map[string]string{ "Application ID": appId, "Application Name": appName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Flow Policy Assignment ID": flowPolicyAssignmentId, "Flow Policy Name": flowPolicyName, "Resource Type": r.ResourceType(), @@ -68,7 +68,7 @@ func (r *PingOneApplicationFlowPolicyAssignmentResource) ExportAll() (*[]connect importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", appName, flowPolicyName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appId, flowPolicyAssignmentId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId, flowPolicyAssignmentId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneApplicationFlowPolicyAssignmentResource) ExportAll() (*[]connect func (r *PingOneApplicationFlowPolicyAssignmentResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -121,7 +121,7 @@ func (r *PingOneApplicationFlowPolicyAssignmentResource) getApplicationData() (m func (r *PingOneApplicationFlowPolicyAssignmentResource) getFlowPolicyAssignmentData(appId string) (map[string]string, error) { flowPolicyAssignmentData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationFlowPolicyAssignmentsApi.ReadAllFlowPolicyAssignments(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationFlowPolicyAssignmentsApi.ReadAllFlowPolicyAssignments(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appId).Execute() flowPolicyAssignments, err := pingone.GetManagementAPIObjectsFromIterator[management.FlowPolicyAssignment](iter, "ReadAllFlowPolicyAssignments", "GetFlowPolicyAssignments", r.ResourceType()) if err != nil { return nil, err @@ -144,7 +144,7 @@ func (r *PingOneApplicationFlowPolicyAssignmentResource) getFlowPolicyAssignment } func (r *PingOneApplicationFlowPolicyAssignmentResource) getFlowPolicyName(flowPolicyId string) (string, bool, error) { - flowPolicy, response, err := r.clientInfo.ApiClient.ManagementAPIClient.FlowPoliciesApi.ReadOneFlowPolicy(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, flowPolicyId).Execute() + flowPolicy, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.FlowPoliciesApi.ReadOneFlowPolicy(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, flowPolicyId).Execute() ok, err := common.HandleClientResponse(response, err, "ReadOneFlowPolicy", r.ResourceType()) if err != nil { diff --git a/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment_test.go b/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment_test.go index 6834f0e5..35a49ede 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_flow_policy_assignment_test.go @@ -11,20 +11,20 @@ import ( func TestApplicationFlowPolicyAssignmentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationFlowPolicyAssignment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationFlowPolicyAssignment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_flow_policy_assignment", ResourceName: "Getting Started Application_PingOne - Sign On and Registration", - ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86/0b08c0c3-db40-4be2-aa5b-eb0e17396a75", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86/0b08c0c3-db40-4be2-aa5b-eb0e17396a75", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_flow_policy_assignment", ResourceName: "test app_PingOne - Sign On and Registration", - ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2/87a6045e-fa59-41fd-9a06-867ef8cc7a0c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2/87a6045e-fa59-41fd-9a06-867ef8cc7a0c", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_application_resource_grant.go b/internal/connector/pingone/sso/resources/pingone_application_resource_grant.go index 891eb8d7..10d909a7 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_resource_grant.go +++ b/internal/connector/pingone/sso/resources/pingone_application_resource_grant.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationResourceGrantResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationResourceGrantResource -func ApplicationResourceGrant(clientInfo *connector.PingOneClientInfo) *PingOneApplicationResourceGrantResource { +func ApplicationResourceGrant(clientInfo *connector.ClientInfo) *PingOneApplicationResourceGrantResource { return &PingOneApplicationResourceGrantResource{ clientInfo: clientInfo, } @@ -61,14 +61,14 @@ func (r *PingOneApplicationResourceGrantResource) ExportAll() (*[]connector.Impo "Application Name": appName, "Application Resource Grant ID": grantId, "Application Resource Name": resourceName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", appName, resourceName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appId, grantId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId, grantId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneApplicationResourceGrantResource) ExportAll() (*[]connector.Impo func (r *PingOneApplicationResourceGrantResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -121,7 +121,7 @@ func (r *PingOneApplicationResourceGrantResource) getApplicationData() (map[stri func (r *PingOneApplicationResourceGrantResource) getApplicationGrantData(appId string) (map[string]string, error) { applicationGrantData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationResourceGrantsApi.ReadAllApplicationGrants(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationResourceGrantsApi.ReadAllApplicationGrants(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appId).Execute() applicationGrants, err := pingone.GetManagementAPIObjectsFromIterator[management.ApplicationResourceGrant](iter, "ReadAllApplicationGrants", "GetGrants", r.ResourceType()) if err != nil { return nil, err @@ -144,7 +144,7 @@ func (r *PingOneApplicationResourceGrantResource) getApplicationGrantData(appId } func (r *PingOneApplicationResourceGrantResource) getGrantResourceName(grantResourceId string) (string, bool, error) { - resource, response, err := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadOneResource(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, grantResourceId).Execute() + resource, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadOneResource(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, grantResourceId).Execute() ok, err := common.HandleClientResponse(response, err, "ReadOneResource", r.ResourceType()) if err != nil { return "", false, err diff --git a/internal/connector/pingone/sso/resources/pingone_application_resource_grant_test.go b/internal/connector/pingone/sso/resources/pingone_application_resource_grant_test.go index c688cdf9..442780b1 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_resource_grant_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_resource_grant_test.go @@ -11,30 +11,30 @@ import ( func TestApplicationResourceGrantExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationResourceGrant(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationResourceGrant(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_resource_grant", ResourceName: "PingOne Application Portal_openid", - ResourceID: fmt.Sprintf("%s/92a3765c-e135-4afa-8b12-4469672ac8a9/7e1e25cd-a29e-43b3-bf4a-317ffaabb49c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/92a3765c-e135-4afa-8b12-4469672ac8a9/7e1e25cd-a29e-43b3-bf4a-317ffaabb49c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_resource_grant", ResourceName: "PingOne Application Portal_PingOne API", - ResourceID: fmt.Sprintf("%s/92a3765c-e135-4afa-8b12-4469672ac8a9/cf7c2b8e-718c-4ccc-ad1e-1612724baf8e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/92a3765c-e135-4afa-8b12-4469672ac8a9/cf7c2b8e-718c-4ccc-ad1e-1612724baf8e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_resource_grant", ResourceName: "PingOne Self-Service - MyAccount_PingOne API", - ResourceID: fmt.Sprintf("%s/4ce54d01-5138-4c56-8175-4f02f69278f5/78d28a77-127d-434b-ae30-71bc18c97902", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4ce54d01-5138-4c56-8175-4f02f69278f5/78d28a77-127d-434b-ae30-71bc18c97902", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_resource_grant", ResourceName: "PingOne Self-Service - MyAccount_openid", - ResourceID: fmt.Sprintf("%s/4ce54d01-5138-4c56-8175-4f02f69278f5/88063562-7b01-4dbc-b638-119435f74860", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4ce54d01-5138-4c56-8175-4f02f69278f5/88063562-7b01-4dbc-b638-119435f74860", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_application_role_assignment.go b/internal/connector/pingone/sso/resources/pingone_application_role_assignment.go index f3ca158a..62137192 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_role_assignment.go +++ b/internal/connector/pingone/sso/resources/pingone_application_role_assignment.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationRoleAssignmentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationRoleAssignmentResource -func ApplicationRoleAssignment(clientInfo *connector.PingOneClientInfo) *PingOneApplicationRoleAssignmentResource { +func ApplicationRoleAssignment(clientInfo *connector.ClientInfo) *PingOneApplicationRoleAssignmentResource { return &PingOneApplicationRoleAssignmentResource{ clientInfo: clientInfo, } @@ -61,14 +61,14 @@ func (r *PingOneApplicationRoleAssignmentResource) ExportAll() (*[]connector.Imp "Application Name": appName, "Application Role Assignment ID": roleAssignmentId, "Application Role Name": string(roleName), - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s_%s", appName, string(roleName), roleAssignmentId), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appId, roleAssignmentId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId, roleAssignmentId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneApplicationRoleAssignmentResource) ExportAll() (*[]connector.Imp func (r *PingOneApplicationRoleAssignmentResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -136,7 +136,7 @@ func (r *PingOneApplicationRoleAssignmentResource) getApplicationData() (map[str func (r *PingOneApplicationRoleAssignmentResource) getApplicationRoleAssignmentData(appId string) (map[string]string, error) { applicationRoleAssignmentData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationRoleAssignmentsApi.ReadApplicationRoleAssignments(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationRoleAssignmentsApi.ReadApplicationRoleAssignments(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appId).Execute() applicationRoleAssignments, err := pingone.GetManagementAPIObjectsFromIterator[management.RoleAssignment](iter, "ReadApplicationRoleAssignments", "GetRoleAssignments", r.ResourceType()) if err != nil { return nil, err @@ -159,7 +159,7 @@ func (r *PingOneApplicationRoleAssignmentResource) getApplicationRoleAssignmentD } func (r *PingOneApplicationRoleAssignmentResource) getRoleName(roleId string) (management.EnumRoleName, bool, error) { - apiRole, resp, err := r.clientInfo.ApiClient.ManagementAPIClient.RolesApi.ReadOneRole(r.clientInfo.Context, roleId).Execute() + apiRole, resp, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.RolesApi.ReadOneRole(r.clientInfo.PingOneContext, roleId).Execute() ok, err := common.HandleClientResponse(resp, err, "ReadOneRole", r.ResourceType()) if err != nil { return "", false, err diff --git a/internal/connector/pingone/sso/resources/pingone_application_role_assignment_test.go b/internal/connector/pingone/sso/resources/pingone_application_role_assignment_test.go index ebead167..9c15c069 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_role_assignment_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_role_assignment_test.go @@ -11,140 +11,140 @@ import ( func TestApplicationRoleAssignmentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationRoleAssignment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationRoleAssignment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_role_assignment", ResourceName: "OAuth Worker App_PingFederate Crypto Administrator_d4aa4aec-c521-4538-ab76-8776355d2b22", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/d4aa4aec-c521-4538-ab76-8776355d2b22", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/d4aa4aec-c521-4538-ab76-8776355d2b22", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "OAuth Worker App_PingFederate User Administrator_9f431f95-8df7-43cb-8419-e2b3898ca8c4", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/9f431f95-8df7-43cb-8419-e2b3898ca8c4", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/9f431f95-8df7-43cb-8419-e2b3898ca8c4", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "OAuth Worker App_PingFederate Administrator_28607a1f-b0b3-4c43-8807-4bf8a93c8d07", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/28607a1f-b0b3-4c43-8807-4bf8a93c8d07", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/28607a1f-b0b3-4c43-8807-4bf8a93c8d07", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "OAuth Worker App_PingFederate Expression Administrator_cbd5b6a0-1748-4ca6-b252-e02fd843897e", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/cbd5b6a0-1748-4ca6-b252-e02fd843897e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599/cbd5b6a0-1748-4ca6-b252-e02fd843897e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "PingOne DaVinci Connection_Identity Data Admin_4331fc1a-434c-4cee-ba2a-ceb57974550c", - ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/4331fc1a-434c-4cee-ba2a-ceb57974550c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/4331fc1a-434c-4cee-ba2a-ceb57974550c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "PingOne DaVinci Connection_DaVinci Admin_ebcdd4c7-0014-4eb5-9aa9-15af45795c15", - ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/ebcdd4c7-0014-4eb5-9aa9-15af45795c15", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/ebcdd4c7-0014-4eb5-9aa9-15af45795c15", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "PingOne DaVinci Connection_Environment Admin_9e1d7f96-c4a9-49d3-bb2d-d2b1fef197dd", - ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/9e1d7f96-c4a9-49d3-bb2d-d2b1fef197dd", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb/9e1d7f96-c4a9-49d3-bb2d-d2b1fef197dd", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Identity Data Admin_9225c10f-b902-4107-8aba-b15b219d6c0e", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/9225c10f-b902-4107-8aba-b15b219d6c0e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/9225c10f-b902-4107-8aba-b15b219d6c0e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Client Application Developer_0081f0ab-d02c-4718-b10c-35fd48b82f47", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/0081f0ab-d02c-4718-b10c-35fd48b82f47", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/0081f0ab-d02c-4718-b10c-35fd48b82f47", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Identity Data Read Only_a0f34409-4d1b-4b22-911a-7b4a61ac68b1", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/a0f34409-4d1b-4b22-911a-7b4a61ac68b1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/a0f34409-4d1b-4b22-911a-7b4a61ac68b1", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Identity Data Admin_970667f1-26d5-4021-809f-e5d17fe44a7d", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/970667f1-26d5-4021-809f-e5d17fe44a7d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/970667f1-26d5-4021-809f-e5d17fe44a7d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Client Application Developer_785b582f-eaf2-4a0b-ac8e-b7c7f9665762", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/785b582f-eaf2-4a0b-ac8e-b7c7f9665762", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/785b582f-eaf2-4a0b-ac8e-b7c7f9665762", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Identity Data Read Only_91562725-239b-4854-8cef-c4efe35ea77f", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/91562725-239b-4854-8cef-c4efe35ea77f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/91562725-239b-4854-8cef-c4efe35ea77f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Identity Data Admin_ed54c262-38ab-4874-a206-2d13e34f21fd", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/ed54c262-38ab-4874-a206-2d13e34f21fd", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/ed54c262-38ab-4874-a206-2d13e34f21fd", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Client Application Developer_3f112aa9-b712-4388-821d-8f37a429b071", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/3f112aa9-b712-4388-821d-8f37a429b071", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/3f112aa9-b712-4388-821d-8f37a429b071", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Identity Data Read Only_1395d969-6527-45f4-b356-4ef36a5d6349", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/1395d969-6527-45f4-b356-4ef36a5d6349", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/1395d969-6527-45f4-b356-4ef36a5d6349", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_PingFederate Crypto Administrator_c01ef5c4-74c4-4074-8929-b0836aa9a783", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/c01ef5c4-74c4-4074-8929-b0836aa9a783", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/c01ef5c4-74c4-4074-8929-b0836aa9a783", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_DaVinci Admin_9bdbe295-e199-4952-8717-3405112eccad", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/9bdbe295-e199-4952-8717-3405112eccad", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/9bdbe295-e199-4952-8717-3405112eccad", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Organization Admin_b57756a8-d9c6-4fbc-95d4-9d2aabf801e0", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/b57756a8-d9c6-4fbc-95d4-9d2aabf801e0", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/b57756a8-d9c6-4fbc-95d4-9d2aabf801e0", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Environment Admin_3e77cca6-8820-4eb6-bcfd-761cf4e74ad1", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/3e77cca6-8820-4eb6-bcfd-761cf4e74ad1", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/3e77cca6-8820-4eb6-bcfd-761cf4e74ad1", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_PingFederate User Administrator_6600fad1-82c4-412f-aa2c-22e8668d8c3a", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/6600fad1-82c4-412f-aa2c-22e8668d8c3a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/6600fad1-82c4-412f-aa2c-22e8668d8c3a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_Configuration Read Only_6f01ea75-5e04-45a5-8614-186b58f9eb4e", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/6f01ea75-5e04-45a5-8614-186b58f9eb4e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/6f01ea75-5e04-45a5-8614-186b58f9eb4e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_PingFederate Auditor_cf1edf79-fd13-4d72-a049-7bdc4377ee0c", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/cf1edf79-fd13-4d72-a049-7bdc4377ee0c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/cf1edf79-fd13-4d72-a049-7bdc4377ee0c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_PingFederate Administrator_530824c1-675f-4282-8a61-6567fc3afee6", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/530824c1-675f-4282-8a61-6567fc3afee6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/530824c1-675f-4282-8a61-6567fc3afee6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_DaVinci Admin Read Only_e82d85ed-8687-4724-87ad-7f138cdbe673", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/e82d85ed-8687-4724-87ad-7f138cdbe673", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/e82d85ed-8687-4724-87ad-7f138cdbe673", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_role_assignment", ResourceName: "Worker App_PingFederate Expression Administrator_c090f7c9-4419-447b-8316-baf3e70030bc", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/c090f7c9-4419-447b-8316-baf3e70030bc", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57/c090f7c9-4419-447b-8316-baf3e70030bc", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_application_secret.go b/internal/connector/pingone/sso/resources/pingone_application_secret.go index 2dff1ddd..e17c950e 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_secret.go +++ b/internal/connector/pingone/sso/resources/pingone_application_secret.go @@ -17,11 +17,11 @@ var ( ) type PingOneApplicationSecretResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationSecretResource -func ApplicationSecret(clientInfo *connector.PingOneClientInfo) *PingOneApplicationSecretResource { +func ApplicationSecret(clientInfo *connector.ClientInfo) *PingOneApplicationSecretResource { return &PingOneApplicationSecretResource{ clientInfo: clientInfo, } @@ -55,14 +55,14 @@ func (r *PingOneApplicationSecretResource) ExportAll() (*[]connector.ImportBlock commentData := map[string]string{ "Application ID": appId, "Application Name": appName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_secret", appName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, appId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -75,7 +75,7 @@ func (r *PingOneApplicationSecretResource) ExportAll() (*[]connector.ImportBlock func (r *PingOneApplicationSecretResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -114,11 +114,11 @@ func (r *PingOneApplicationSecretResource) getApplicationData() (map[string]stri func (r *PingOneApplicationSecretResource) checkApplicationSecretData(appId string) (bool, error) { // The platform enforces that worker apps cannot read their own secret // Make sure we can read the secret before adding it to the import blocks - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationSecretApi.ReadApplicationSecret(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appId).Execute() + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationSecretApi.ReadApplicationSecret(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appId).Execute() defer response.Body.Close() // If the appId is the same as the worker ID, make sure the API response is a 403 and ignore the error - if appId == *r.clientInfo.ApiClientId { + if appId == r.clientInfo.PingOneApiClientId { if response.StatusCode == 403 { return false, nil } else { diff --git a/internal/connector/pingone/sso/resources/pingone_application_secret_test.go b/internal/connector/pingone/sso/resources/pingone_application_secret_test.go index 4baec63b..f89215a8 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_secret_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_secret_test.go @@ -11,45 +11,40 @@ import ( func TestApplicationSecretExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationSecret(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationSecret(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_secret", ResourceName: "Example OAuth App_secret", - ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_secret", ResourceName: "Getting Started Application_secret", - ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_secret", ResourceName: "OAuth Worker App_secret", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_secret", ResourceName: "PingOne DaVinci Connection_secret", - ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_secret", ResourceName: "test app_secret", - ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_secret", ResourceName: "Test MFA_secret", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932", testutils.GetEnvironmentID()), - }, - { - ResourceType: "pingone_application_secret", - ResourceName: "Worker App_secret", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment.go b/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment.go index 8aa47086..b0d3e0c2 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment.go +++ b/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment.go @@ -16,11 +16,11 @@ var ( ) type PingOneApplicationSignOnPolicyAssignmentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneApplicationSignOnPolicyAssignmentResource -func ApplicationSignOnPolicyAssignment(clientInfo *connector.PingOneClientInfo) *PingOneApplicationSignOnPolicyAssignmentResource { +func ApplicationSignOnPolicyAssignment(clientInfo *connector.ClientInfo) *PingOneApplicationSignOnPolicyAssignmentResource { return &PingOneApplicationSignOnPolicyAssignmentResource{ clientInfo: clientInfo, } @@ -62,13 +62,13 @@ func (r *PingOneApplicationSignOnPolicyAssignmentResource) ExportAll() (*[]conne "Application Name": appName, "Application Sign-On Policy Assignment ID": signOnPolicyAssignmentId, "Application Sign-On Policy Name": signOnPolicyName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", appName, signOnPolicyName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, appId, signOnPolicyAssignmentId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, appId, signOnPolicyAssignmentId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneApplicationSignOnPolicyAssignmentResource) ExportAll() (*[]conne func (r *PingOneApplicationSignOnPolicyAssignmentResource) getApplicationData() (map[string]string, error) { applicationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.ReadAllApplications(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() applications, err := pingone.GetManagementAPIObjectsFromIterator[management.ReadOneApplication200Response](iter, "ReadAllApplications", "GetApplications", r.ResourceType()) if err != nil { return nil, err @@ -121,7 +121,7 @@ func (r *PingOneApplicationSignOnPolicyAssignmentResource) getApplicationData() func (r *PingOneApplicationSignOnPolicyAssignmentResource) getApplicationSignOnPolicyAssignmentData(appId string) (map[string]string, error) { signOnPolicyAssignmentData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ApplicationSignOnPolicyAssignmentsApi.ReadAllSignOnPolicyAssignments(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, appId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationSignOnPolicyAssignmentsApi.ReadAllSignOnPolicyAssignments(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, appId).Execute() signOnPolicyAssignments, err := pingone.GetManagementAPIObjectsFromIterator[management.SignOnPolicyAssignment](iter, "ReadAllSignOnPolicyAssignments", "GetSignOnPolicyAssignments", r.ResourceType()) if err != nil { return nil, err @@ -144,7 +144,7 @@ func (r *PingOneApplicationSignOnPolicyAssignmentResource) getApplicationSignOnP } func (r *PingOneApplicationSignOnPolicyAssignmentResource) getSignOnPolicyName(signOnPolicyId string) (string, bool, error) { - signOnPolicy, response, err := r.clientInfo.ApiClient.ManagementAPIClient.SignOnPoliciesApi.ReadOneSignOnPolicy(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, signOnPolicyId).Execute() + signOnPolicy, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.SignOnPoliciesApi.ReadOneSignOnPolicy(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, signOnPolicyId).Execute() ok, err := common.HandleClientResponse(response, err, "ReadOneSignOnPolicy", r.ResourceType()) if err != nil { return "", false, err diff --git a/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment_test.go b/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment_test.go index e62ecbab..f24e067b 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_sign_on_policy_assignment_test.go @@ -11,21 +11,21 @@ import ( func TestApplicationSignOnPolicyAssignmentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ApplicationSignOnPolicyAssignment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ApplicationSignOnPolicyAssignment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application_sign_on_policy_assignment", ResourceName: "Example OAuth App_Single_Factor", - ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785/056ed696-f2e9-44b1-8d2c-68e690cd1f24", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785/056ed696-f2e9-44b1-8d2c-68e690cd1f24", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application_sign_on_policy_assignment", ResourceName: "Test MFA_multi_factor", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/b0ecdaab-9d7c-4c1f-ab0d-891cfdbc73b2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932/b0ecdaab-9d7c-4c1f-ab0d-891cfdbc73b2", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_application_test.go b/internal/connector/pingone/sso/resources/pingone_application_test.go index 716e79af..38bf5334 100644 --- a/internal/connector/pingone/sso/resources/pingone_application_test.go +++ b/internal/connector/pingone/sso/resources/pingone_application_test.go @@ -11,45 +11,45 @@ import ( func TestApplicationExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Application(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Application(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_application", ResourceName: "Example OAuth App", - ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/2a7c1b5d-415b-4fb5-a6c0-1e290f776785", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application", ResourceName: "Getting Started Application", - ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3da7aae6-92e5-4295-a37c-8515d1f2cd86", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application", ResourceName: "OAuth Worker App", - ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/9d6c443b-6329-4d3c-949e-880eda3b9599", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application", ResourceName: "PingOne DaVinci Connection", - ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7b621870-7124-4426-b432-6c675642afcb", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application", ResourceName: "test app", - ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a4cbf57e-fa2c-452f-bbc8-f40b551da0e2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application", ResourceName: "Worker App", - ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c45c2f8c-dee0-4a12-b169-bae693a13d57", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_application", ResourceName: "Test MFA", - ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/11cfc8c7-ec0c-43ff-b49a-64f5e243f932", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_group.go b/internal/connector/pingone/sso/resources/pingone_group.go index 3d6b9153..b264081f 100644 --- a/internal/connector/pingone/sso/resources/pingone_group.go +++ b/internal/connector/pingone/sso/resources/pingone_group.go @@ -16,11 +16,11 @@ var ( ) type PingOneGroupResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneGroupResource -func Group(clientInfo *connector.PingOneClientInfo) *PingOneGroupResource { +func Group(clientInfo *connector.ClientInfo) *PingOneGroupResource { return &PingOneGroupResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneGroupResource) ExportAll() (*[]connector.ImportBlock, error) { for groupId, groupName := range groupData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Group ID": groupId, "Group Name": groupName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneGroupResource) ExportAll() (*[]connector.ImportBlock, error) { importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: groupName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, groupId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, groupId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneGroupResource) ExportAll() (*[]connector.ImportBlock, error) { func (r *PingOneGroupResource) getGroupData() (map[string]string, error) { groupData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GroupsApi.ReadAllGroups(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GroupsApi.ReadAllGroups(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() groups, err := pingone.GetManagementAPIObjectsFromIterator[management.Group](iter, "ReadAllGroups", "GetGroups", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_group_nesting.go b/internal/connector/pingone/sso/resources/pingone_group_nesting.go index 3958b257..26b5eed1 100644 --- a/internal/connector/pingone/sso/resources/pingone_group_nesting.go +++ b/internal/connector/pingone/sso/resources/pingone_group_nesting.go @@ -16,11 +16,11 @@ var ( ) type PingOneGroupNestingResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneGroupNestingResource -func GroupNesting(clientInfo *connector.PingOneClientInfo) *PingOneGroupNestingResource { +func GroupNesting(clientInfo *connector.ClientInfo) *PingOneGroupNestingResource { return &PingOneGroupNestingResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneGroupNestingResource) ExportAll() (*[]connector.ImportBlock, err for nestedGroupId, nestedGroupName := range groupNestingData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Nested Group ID": nestedGroupId, "Nested Group Name": nestedGroupName, "Parent Group ID": parentGroupId, @@ -60,7 +60,7 @@ func (r *PingOneGroupNestingResource) ExportAll() (*[]connector.ImportBlock, err importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", parentGroupName, nestedGroupName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, parentGroupId, nestedGroupId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, parentGroupId, nestedGroupId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneGroupNestingResource) ExportAll() (*[]connector.ImportBlock, err func (r *PingOneGroupNestingResource) getGroupData() (map[string]string, error) { groupData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GroupsApi.ReadAllGroups(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GroupsApi.ReadAllGroups(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() groups, err := pingone.GetManagementAPIObjectsFromIterator[management.Group](iter, "ReadAllGroups", "GetGroups", r.ResourceType()) if err != nil { return nil, err @@ -95,7 +95,7 @@ func (r *PingOneGroupNestingResource) getGroupData() (map[string]string, error) func (r *PingOneGroupNestingResource) getGroupNestingData(parentGroupId string) (map[string]string, error) { groupNestingData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GroupsApi.ReadGroupNesting(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, parentGroupId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GroupsApi.ReadGroupNesting(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, parentGroupId).Execute() groupNestings, err := pingone.GetManagementAPIObjectsFromIterator[management.GroupMembership](iter, "ReadGroupNesting", "GetGroupMemberships", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_group_nesting_test.go b/internal/connector/pingone/sso/resources/pingone_group_nesting_test.go index 8c9d0112..0987a926 100644 --- a/internal/connector/pingone/sso/resources/pingone_group_nesting_test.go +++ b/internal/connector/pingone/sso/resources/pingone_group_nesting_test.go @@ -11,15 +11,15 @@ import ( func TestGroupNestingExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.GroupNesting(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.GroupNesting(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_group_nesting", ResourceName: "My parent group_My nested group", - ResourceID: fmt.Sprintf("%s/298cf355-6806-4058-b87e-1ae92c7fb13b/d12ae346-c596-438c-95e3-3d76f364d527", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/298cf355-6806-4058-b87e-1ae92c7fb13b/d12ae346-c596-438c-95e3-3d76f364d527", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_group_role_assignment.go b/internal/connector/pingone/sso/resources/pingone_group_role_assignment.go index 6951abff..8eded400 100644 --- a/internal/connector/pingone/sso/resources/pingone_group_role_assignment.go +++ b/internal/connector/pingone/sso/resources/pingone_group_role_assignment.go @@ -16,11 +16,11 @@ var ( ) type PingOneGroupRoleAssignmentResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneGroupRoleAssignmentResource -func GroupRoleAssignment(clientInfo *connector.PingOneClientInfo) *PingOneGroupRoleAssignmentResource { +func GroupRoleAssignment(clientInfo *connector.ClientInfo) *PingOneGroupRoleAssignmentResource { return &PingOneGroupRoleAssignmentResource{ clientInfo: clientInfo, } @@ -57,7 +57,7 @@ func (r *PingOneGroupRoleAssignmentResource) ExportAll() (*[]connector.ImportBlo } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Group ID": groupId, "Group Name": groupName, "Group Role Assignment ID": groupRoleAssignmentId, @@ -68,7 +68,7 @@ func (r *PingOneGroupRoleAssignmentResource) ExportAll() (*[]connector.ImportBlo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s_%s", groupName, string(*roleName), groupRoleAssignmentId), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, groupId, groupRoleAssignmentId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, groupId, groupRoleAssignmentId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -82,7 +82,7 @@ func (r *PingOneGroupRoleAssignmentResource) ExportAll() (*[]connector.ImportBlo func (r *PingOneGroupRoleAssignmentResource) getGroupData() (map[string]string, error) { groupData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GroupsApi.ReadAllGroups(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GroupsApi.ReadAllGroups(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() groups, err := pingone.GetManagementAPIObjectsFromIterator[management.Group](iter, "ReadAllGroups", "GetGroups", r.ResourceType()) if err != nil { return nil, err @@ -103,7 +103,7 @@ func (r *PingOneGroupRoleAssignmentResource) getGroupData() (map[string]string, func (r *PingOneGroupRoleAssignmentResource) getGroupRoleAssignmentData(groupId string) (map[string]string, error) { groupRoleAssignmentData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.GroupRoleAssignmentsApi.ReadGroupRoleAssignments(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, groupId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.GroupRoleAssignmentsApi.ReadGroupRoleAssignments(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, groupId).Execute() roleAssignments, err := pingone.GetManagementAPIObjectsFromIterator[management.RoleAssignment](iter, "ReadGroupRoleAssignments", "GetRoleAssignments", r.ResourceType()) if err != nil { return nil, err @@ -126,7 +126,7 @@ func (r *PingOneGroupRoleAssignmentResource) getGroupRoleAssignmentData(groupId } func (r *PingOneGroupRoleAssignmentResource) getRoleName(roleId string) (*management.EnumRoleName, error) { - apiRole, resp, err := r.clientInfo.ApiClient.ManagementAPIClient.RolesApi.ReadOneRole(r.clientInfo.Context, roleId).Execute() + apiRole, resp, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.RolesApi.ReadOneRole(r.clientInfo.PingOneContext, roleId).Execute() ok, err := common.HandleClientResponse(resp, err, "ReadOneRole", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_group_role_assignment_test.go b/internal/connector/pingone/sso/resources/pingone_group_role_assignment_test.go index 9e76a060..f176fe28 100644 --- a/internal/connector/pingone/sso/resources/pingone_group_role_assignment_test.go +++ b/internal/connector/pingone/sso/resources/pingone_group_role_assignment_test.go @@ -11,20 +11,20 @@ import ( func TestGroupRoleAssignmentExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.GroupRoleAssignment(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.GroupRoleAssignment(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_group_role_assignment", ResourceName: "testing_Client Application Developer_1db1accc-f63f-4f03-ab62-c767398fa730", - ResourceID: fmt.Sprintf("%s/b6924f30-73ca-4d3c-964b-90c77adce6a7/1db1accc-f63f-4f03-ab62-c767398fa730", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b6924f30-73ca-4d3c-964b-90c77adce6a7/1db1accc-f63f-4f03-ab62-c767398fa730", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_group_role_assignment", ResourceName: "testing_Identity Data Read Only_53a88921-2a9f-44f1-958e-3db9be3f8c69", - ResourceID: fmt.Sprintf("%s/b6924f30-73ca-4d3c-964b-90c77adce6a7/53a88921-2a9f-44f1-958e-3db9be3f8c69", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b6924f30-73ca-4d3c-964b-90c77adce6a7/53a88921-2a9f-44f1-958e-3db9be3f8c69", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_group_test.go b/internal/connector/pingone/sso/resources/pingone_group_test.go index 3e654e5e..d78b95a3 100644 --- a/internal/connector/pingone/sso/resources/pingone_group_test.go +++ b/internal/connector/pingone/sso/resources/pingone_group_test.go @@ -11,30 +11,30 @@ import ( func TestGroupExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Group(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Group(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_group", ResourceName: "test group", - ResourceID: fmt.Sprintf("%s/ebdf1771-4f43-4fa6-bb9a-ec17333e5ca7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ebdf1771-4f43-4fa6-bb9a-ec17333e5ca7", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_group", ResourceName: "testing", - ResourceID: fmt.Sprintf("%s/b6924f30-73ca-4d3c-964b-90c77adce6a7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b6924f30-73ca-4d3c-964b-90c77adce6a7", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_group", ResourceName: "My parent group", - ResourceID: fmt.Sprintf("%s/298cf355-6806-4058-b87e-1ae92c7fb13b", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/298cf355-6806-4058-b87e-1ae92c7fb13b", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_group", ResourceName: "My nested group", - ResourceID: fmt.Sprintf("%s/d12ae346-c596-438c-95e3-3d76f364d527", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/d12ae346-c596-438c-95e3-3d76f364d527", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_identity_provider.go b/internal/connector/pingone/sso/resources/pingone_identity_provider.go index c8bab690..a9e69bbd 100644 --- a/internal/connector/pingone/sso/resources/pingone_identity_provider.go +++ b/internal/connector/pingone/sso/resources/pingone_identity_provider.go @@ -16,11 +16,11 @@ var ( ) type PingOneIdentityProviderResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneIdentityProviderResource -func IdentityProvider(clientInfo *connector.PingOneClientInfo) *PingOneIdentityProviderResource { +func IdentityProvider(clientInfo *connector.ClientInfo) *PingOneIdentityProviderResource { return &PingOneIdentityProviderResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneIdentityProviderResource) ExportAll() (*[]connector.ImportBlock, for idpId, idpName := range identityProviderData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Identity Provider ID": idpId, "Identity Provider Name": idpName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneIdentityProviderResource) ExportAll() (*[]connector.ImportBlock, importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: idpName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, idpId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, idpId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneIdentityProviderResource) ExportAll() (*[]connector.ImportBlock, func (r *PingOneIdentityProviderResource) getIdentityProviderData() (map[string]string, error) { identityProviderData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.IdentityProvidersApi.ReadAllIdentityProviders(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.IdentityProvidersApi.ReadAllIdentityProviders(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() identityProviders, err := pingone.GetManagementAPIObjectsFromIterator[management.IdentityProvider](iter, "ReadAllIdentityProviders", "GetIdentityProviders", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute.go b/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute.go index 34912a9c..26c0981f 100644 --- a/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute.go +++ b/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute.go @@ -16,11 +16,11 @@ var ( ) type PingOneIdentityProviderAttributeResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneIdentityProviderAttributeResource -func IdentityProviderAttribute(clientInfo *connector.PingOneClientInfo) *PingOneIdentityProviderAttributeResource { +func IdentityProviderAttribute(clientInfo *connector.ClientInfo) *PingOneIdentityProviderAttributeResource { return &PingOneIdentityProviderAttributeResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneIdentityProviderAttributeResource) ExportAll() (*[]connector.Imp for idpAttributeId, idpAttributeName := range identityProviderAttributeData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Identity Provider Attribute ID": idpAttributeId, "Identity Provider Attribute Name": idpAttributeName, "Identity Provider ID": idpId, @@ -60,7 +60,7 @@ func (r *PingOneIdentityProviderAttributeResource) ExportAll() (*[]connector.Imp importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", idpName, idpAttributeName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, idpId, idpAttributeId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, idpId, idpAttributeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneIdentityProviderAttributeResource) ExportAll() (*[]connector.Imp func (r *PingOneIdentityProviderAttributeResource) getIdentityProviderData() (map[string]string, error) { identityProviderData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.IdentityProvidersApi.ReadAllIdentityProviders(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.IdentityProvidersApi.ReadAllIdentityProviders(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() identityProviders, err := pingone.GetManagementAPIObjectsFromIterator[management.IdentityProvider](iter, "ReadAllIdentityProviders", "GetIdentityProviders", r.ResourceType()) if err != nil { return nil, err @@ -122,7 +122,7 @@ func (r *PingOneIdentityProviderAttributeResource) getIdentityProviderData() (ma func (r *PingOneIdentityProviderAttributeResource) getIdentityProviderAttributeData(idpId string) (map[string]string, error) { identityProviderAttributeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.IdentityProviderAttributesApi.ReadAllIdentityProviderAttributes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, idpId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.IdentityProviderAttributesApi.ReadAllIdentityProviderAttributes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, idpId).Execute() attributeInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedAttributesInner](iter, "ReadAllIdentityProviderAttributes", "GetAttributes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute_test.go b/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute_test.go index 61aba367..fd5ce780 100644 --- a/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute_test.go +++ b/internal/connector/pingone/sso/resources/pingone_identity_provider_attribute_test.go @@ -11,15 +11,15 @@ import ( func TestIdentityProviderAttributeExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.IdentityProviderAttribute(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.IdentityProviderAttribute(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_identity_provider_attribute", ResourceName: "Default Idp Test_username", - ResourceID: fmt.Sprintf("%s/a99df558-7090-4303-8f35-860ac660e371/51a036c6-41ed-44f7-bd1d-eacaa2a1feab", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a99df558-7090-4303-8f35-860ac660e371/51a036c6-41ed-44f7-bd1d-eacaa2a1feab", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_identity_provider_test.go b/internal/connector/pingone/sso/resources/pingone_identity_provider_test.go index 8cc66e23..60e91bea 100644 --- a/internal/connector/pingone/sso/resources/pingone_identity_provider_test.go +++ b/internal/connector/pingone/sso/resources/pingone_identity_provider_test.go @@ -11,15 +11,15 @@ import ( func TestIdentityProviderExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.IdentityProvider(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.IdentityProvider(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_identity_provider", ResourceName: "Default Idp Test", - ResourceID: fmt.Sprintf("%s/a99df558-7090-4303-8f35-860ac660e371", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a99df558-7090-4303-8f35-860ac660e371", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_password_policy.go b/internal/connector/pingone/sso/resources/pingone_password_policy.go index 4c3dd4af..efebdb57 100644 --- a/internal/connector/pingone/sso/resources/pingone_password_policy.go +++ b/internal/connector/pingone/sso/resources/pingone_password_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOnePasswordPolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOnePasswordPolicyResource -func PasswordPolicy(clientInfo *connector.PingOneClientInfo) *PingOnePasswordPolicyResource { +func PasswordPolicy(clientInfo *connector.ClientInfo) *PingOnePasswordPolicyResource { return &PingOnePasswordPolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOnePasswordPolicyResource) ExportAll() (*[]connector.ImportBlock, e for passwordPolicyId, passwordPolicyName := range passwordPolicyData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Password Policy ID": passwordPolicyId, "Password Policy Name": passwordPolicyName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOnePasswordPolicyResource) ExportAll() (*[]connector.ImportBlock, e importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: passwordPolicyName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, passwordPolicyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, passwordPolicyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOnePasswordPolicyResource) ExportAll() (*[]connector.ImportBlock, e func (r *PingOnePasswordPolicyResource) getPasswordPolicyData() (map[string]string, error) { passwordPolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.PasswordPoliciesApi.ReadAllPasswordPolicies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.PasswordPoliciesApi.ReadAllPasswordPolicies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() passwordPolicies, err := pingone.GetManagementAPIObjectsFromIterator[management.PasswordPolicy](iter, "ReadAllPasswordPolicies", "GetPasswordPolicies", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_password_policy_test.go b/internal/connector/pingone/sso/resources/pingone_password_policy_test.go index 4554330c..b58aeec5 100644 --- a/internal/connector/pingone/sso/resources/pingone_password_policy_test.go +++ b/internal/connector/pingone/sso/resources/pingone_password_policy_test.go @@ -11,30 +11,30 @@ import ( func TestPasswordPolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.PasswordPolicy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.PasswordPolicy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_password_policy", ResourceName: "Standard", - ResourceID: fmt.Sprintf("%s/10c1f1bc-3dff-49ca-9abb-cf034b728793", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/10c1f1bc-3dff-49ca-9abb-cf034b728793", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_password_policy", ResourceName: "Basic", - ResourceID: fmt.Sprintf("%s/48641620-f51d-4675-86e1-e45d378ac0b2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/48641620-f51d-4675-86e1-e45d378ac0b2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_password_policy", ResourceName: "Passphrase", - ResourceID: fmt.Sprintf("%s/686e2710-d59f-484a-8ba5-47959753012c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/686e2710-d59f-484a-8ba5-47959753012c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_password_policy", ResourceName: "LDAP Gateway Policy", - ResourceID: fmt.Sprintf("%s/c79032d2-b156-46a5-a9c9-7d18e93095b7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/c79032d2-b156-46a5-a9c9-7d18e93095b7", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_population.go b/internal/connector/pingone/sso/resources/pingone_population.go index cd83c8a3..58876507 100644 --- a/internal/connector/pingone/sso/resources/pingone_population.go +++ b/internal/connector/pingone/sso/resources/pingone_population.go @@ -16,11 +16,11 @@ var ( ) type PingOnePopulationResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOnePopulationResource -func Population(clientInfo *connector.PingOneClientInfo) *PingOnePopulationResource { +func Population(clientInfo *connector.ClientInfo) *PingOnePopulationResource { return &PingOnePopulationResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOnePopulationResource) ExportAll() (*[]connector.ImportBlock, error for populationId, populationName := range populationData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Population ID": populationId, "Population Name": populationName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOnePopulationResource) ExportAll() (*[]connector.ImportBlock, error importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: populationName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, populationId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, populationId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOnePopulationResource) ExportAll() (*[]connector.ImportBlock, error func (r *PingOnePopulationResource) getPopulationData() (map[string]string, error) { populationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.PopulationsApi.ReadAllPopulations(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.PopulationsApi.ReadAllPopulations(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() populations, err := pingone.GetManagementAPIObjectsFromIterator[management.Population](iter, "ReadAllPopulations", "GetPopulations", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_population_default.go b/internal/connector/pingone/sso/resources/pingone_population_default.go index bd8319aa..172f1a37 100644 --- a/internal/connector/pingone/sso/resources/pingone_population_default.go +++ b/internal/connector/pingone/sso/resources/pingone_population_default.go @@ -16,11 +16,11 @@ var ( ) type PingOnePopulationDefaultResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOnePopulationDefaultResource -func PopulationDefault(clientInfo *connector.PingOneClientInfo) *PingOnePopulationDefaultResource { +func PopulationDefault(clientInfo *connector.ClientInfo) *PingOnePopulationDefaultResource { return &PingOnePopulationDefaultResource{ clientInfo: clientInfo, } @@ -43,14 +43,14 @@ func (r *PingOnePopulationDefaultResource) ExportAll() (*[]connector.ImportBlock commentData := map[string]string{ "Default Population Name": *defaultPopulationName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_population_default", *defaultPopulationName), - ResourceID: r.clientInfo.ExportEnvironmentID, + ResourceID: r.clientInfo.PingOneExportEnvironmentID, CommentInformation: common.GenerateCommentInformation(commentData), } @@ -60,7 +60,7 @@ func (r *PingOnePopulationDefaultResource) ExportAll() (*[]connector.ImportBlock } func (r *PingOnePopulationDefaultResource) getDefaultPopulationName() (*string, error) { - iter := r.clientInfo.ApiClient.ManagementAPIClient.PopulationsApi.ReadAllPopulations(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.PopulationsApi.ReadAllPopulations(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() populations, err := pingone.GetManagementAPIObjectsFromIterator[management.Population](iter, "ReadAllPopulations", "GetPopulations", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider.go b/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider.go index 10892e70..efcf65a5 100644 --- a/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider.go +++ b/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider.go @@ -16,11 +16,11 @@ var ( ) type PingOnePopulationDefaultIdpResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOnePopulationDefaultIdpResource -func PopulationDefaultIdp(clientInfo *connector.PingOneClientInfo) *PingOnePopulationDefaultIdpResource { +func PopulationDefaultIdp(clientInfo *connector.ClientInfo) *PingOnePopulationDefaultIdpResource { return &PingOnePopulationDefaultIdpResource{ clientInfo: clientInfo, } @@ -51,7 +51,7 @@ func (r *PingOnePopulationDefaultIdpResource) ExportAll() (*[]connector.ImportBl } commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Population ID": populationId, "Population Name": populationName, "Resource Type": r.ResourceType(), @@ -60,7 +60,7 @@ func (r *PingOnePopulationDefaultIdpResource) ExportAll() (*[]connector.ImportBl importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_default_identity_provider", populationName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, populationId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, populationId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -73,7 +73,7 @@ func (r *PingOnePopulationDefaultIdpResource) ExportAll() (*[]connector.ImportBl func (r *PingOnePopulationDefaultIdpResource) getPopulationData() (map[string]string, error) { populationData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.PopulationsApi.ReadAllPopulations(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.PopulationsApi.ReadAllPopulations(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() populations, err := pingone.GetManagementAPIObjectsFromIterator[management.Population](iter, "ReadAllPopulations", "GetPopulations", r.ResourceType()) if err != nil { return nil, err @@ -92,6 +92,6 @@ func (r *PingOnePopulationDefaultIdpResource) getPopulationData() (map[string]st } func (r *PingOnePopulationDefaultIdpResource) checkPopulationDefaultIdp(populationId string) (bool, error) { - _, resp, err := r.clientInfo.ApiClient.ManagementAPIClient.PopulationsApi.ReadOnePopulationDefaultIdp(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, populationId).Execute() - return pingone.CheckSingletonResource(resp, err, "ReadOnePopulationDefaultIdp", r.ResourceType()) + _, resp, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.PopulationsApi.ReadOnePopulationDefaultIdp(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, populationId).Execute() + return common.CheckSingletonResource(resp, err, "ReadOnePopulationDefaultIdp", r.ResourceType()) } diff --git a/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider_test.go b/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider_test.go index 4f1aaea4..8d6046a5 100644 --- a/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider_test.go +++ b/internal/connector/pingone/sso/resources/pingone_population_default_identity_provider_test.go @@ -11,25 +11,25 @@ import ( func TestPopulationDefaultIdpExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.PopulationDefaultIdp(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.PopulationDefaultIdp(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_population_default_identity_provider", ResourceName: "Default_default_identity_provider", - ResourceID: fmt.Sprintf("%s/720da2ce-4dd0-48d9-af75-aeadbda1860d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/720da2ce-4dd0-48d9-af75-aeadbda1860d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_population_default_identity_provider", ResourceName: "LDAP Gateway Population_default_identity_provider", - ResourceID: fmt.Sprintf("%s/374fdb3c-4e94-4547-838a-0c200b9a7c70", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/374fdb3c-4e94-4547-838a-0c200b9a7c70", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_population_default_identity_provider", ResourceName: "Test Default Idp Population_default_identity_provider", - ResourceID: fmt.Sprintf("%s/2814912d-4a0f-4104-a779-80c13b2a6dcd", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/2814912d-4a0f-4104-a779-80c13b2a6dcd", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_population_default_test.go b/internal/connector/pingone/sso/resources/pingone_population_default_test.go index 56862023..78bdc590 100644 --- a/internal/connector/pingone/sso/resources/pingone_population_default_test.go +++ b/internal/connector/pingone/sso/resources/pingone_population_default_test.go @@ -10,15 +10,15 @@ import ( func TestPopulationDefaultExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.PopulationDefault(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.PopulationDefault(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_population_default", ResourceName: "Default_population_default", - ResourceID: testutils.GetEnvironmentID(), + ResourceID: clientInfo.PingOneExportEnvironmentID, }, } diff --git a/internal/connector/pingone/sso/resources/pingone_population_test.go b/internal/connector/pingone/sso/resources/pingone_population_test.go index 2c445d51..095b5c8f 100644 --- a/internal/connector/pingone/sso/resources/pingone_population_test.go +++ b/internal/connector/pingone/sso/resources/pingone_population_test.go @@ -11,25 +11,25 @@ import ( func TestPopulationExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Population(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Population(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_population", ResourceName: "Default", - ResourceID: fmt.Sprintf("%s/720da2ce-4dd0-48d9-af75-aeadbda1860d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/720da2ce-4dd0-48d9-af75-aeadbda1860d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_population", ResourceName: "LDAP Gateway Population", - ResourceID: fmt.Sprintf("%s/374fdb3c-4e94-4547-838a-0c200b9a7c70", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/374fdb3c-4e94-4547-838a-0c200b9a7c70", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_population", ResourceName: "Test Default Idp Population", - ResourceID: fmt.Sprintf("%s/2814912d-4a0f-4104-a779-80c13b2a6dcd", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/2814912d-4a0f-4104-a779-80c13b2a6dcd", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_resource.go b/internal/connector/pingone/sso/resources/pingone_resource.go index 1c1e26cd..ba825393 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource.go +++ b/internal/connector/pingone/sso/resources/pingone_resource.go @@ -16,11 +16,11 @@ var ( ) type PingOneResourceResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneResourceResource -func Resource(clientInfo *connector.PingOneClientInfo) *PingOneResourceResource { +func Resource(clientInfo *connector.ClientInfo) *PingOneResourceResource { return &PingOneResourceResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneResourceResource) ExportAll() (*[]connector.ImportBlock, error) for resourceId, resourceName := range resourceData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "PingOne Resource ID": resourceId, "PingOne Resource Name": resourceName, "Resource Type": r.ResourceType(), @@ -52,7 +52,7 @@ func (r *PingOneResourceResource) ExportAll() (*[]connector.ImportBlock, error) importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: resourceName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, resourceId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, resourceId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneResourceResource) ExportAll() (*[]connector.ImportBlock, error) func (r *PingOneResourceResource) getResourceData() (map[string]string, error) { resourceData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() resourceInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedResourcesInner](iter, "ReadAllResources", "GetResources", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_resource_attribute.go b/internal/connector/pingone/sso/resources/pingone_resource_attribute.go index a86852ae..a5c3ed1e 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_attribute.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_attribute.go @@ -16,11 +16,11 @@ var ( ) type PingOneResourceAttributeResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneResourceAttributeResource -func ResourceAttribute(clientInfo *connector.PingOneClientInfo) *PingOneResourceAttributeResource { +func ResourceAttribute(clientInfo *connector.ClientInfo) *PingOneResourceAttributeResource { return &PingOneResourceAttributeResource{ clientInfo: clientInfo, } @@ -52,7 +52,7 @@ func (r *PingOneResourceAttributeResource) ExportAll() (*[]connector.ImportBlock for resourceAttributeId, resourceAttributeName := range resourceAttributeData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "PingOne Resource Attribute ID": resourceAttributeId, "PingOne Resource Attribute Name": resourceAttributeName, "PingOne Resource ID": resourceId, @@ -63,7 +63,7 @@ func (r *PingOneResourceAttributeResource) ExportAll() (*[]connector.ImportBlock importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", resourceName, resourceAttributeName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, resourceId, resourceAttributeId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, resourceId, resourceAttributeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -77,7 +77,7 @@ func (r *PingOneResourceAttributeResource) ExportAll() (*[]connector.ImportBlock func (r *PingOneResourceAttributeResource) getResourceData() (map[string][]string, error) { resourceData := make(map[string][]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() resourceInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedResourcesInner](iter, "ReadAllResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -101,7 +101,7 @@ func (r *PingOneResourceAttributeResource) getResourceData() (map[string][]strin func (r *PingOneResourceAttributeResource) getResourceAttributeData(resourceId string, resourceType string) (map[string]string, error) { resourceAttributeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourceAttributesApi.ReadAllResourceAttributes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, resourceId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourceAttributesApi.ReadAllResourceAttributes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, resourceId).Execute() attributeInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedAttributesInner](iter, "ReadAllResourceAttributes", "GetAttributes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_resource_attribute_test.go b/internal/connector/pingone/sso/resources/pingone_resource_attribute_test.go index 490649e7..af771e80 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_attribute_test.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_attribute_test.go @@ -11,155 +11,155 @@ import ( func TestResourceAttributeExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ResourceAttribute(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ResourceAttribute(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_resource_attribute", ResourceName: "authorize-api-service_sub", - ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/3f79ad4f-588a-4652-bad8-d64d405bef8a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/3f79ad4f-588a-4652-bad8-d64d405bef8a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "test_sub", - ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d/c82b24b9-7ea3-4de4-8840-50b6c3cb1387", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d/c82b24b9-7ea3-4de4-8840-50b6c3cb1387", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "testing_sub", - ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b/a7cf0daf-0e30-4ae5-bf88-7c5dc629d7cf", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b/a7cf0daf-0e30-4ae5-bf88-7c5dc629d7cf", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_locale", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/0122f755-ac5d-4bc1-a755-0f56b6f582ec", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/0122f755-ac5d-4bc1-a755-0f56b6f582ec", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_preferred_username", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/09c1e110-7b3b-4f2d-a1ab-7d3054df8aa6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/09c1e110-7b3b-4f2d-a1ab-7d3054df8aa6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_email", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/0b230ac5-25a4-4012-a393-e2529d91d4df", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/0b230ac5-25a4-4012-a393-e2529d91d4df", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_email_verified", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1754e8e0-97b5-4477-b76e-a97d6d4fcb8d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1754e8e0-97b5-4477-b76e-a97d6d4fcb8d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_phone_number", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1b6c9496-a281-4379-a8ef-dc5b60cb1bf4", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1b6c9496-a281-4379-a8ef-dc5b60cb1bf4", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_nickname", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1c822a3c-52fb-4cb2-b8c7-99800d32221a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1c822a3c-52fb-4cb2-b8c7-99800d32221a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_address.postal_code", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1fdeb8af-3f4d-4979-a4eb-2344694f9ec2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/1fdeb8af-3f4d-4979-a4eb-2344694f9ec2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_name", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/28ce7067-77cb-460c-ad61-c7300b6b2ceb", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/28ce7067-77cb-460c-ad61-c7300b6b2ceb", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_updated_at", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/310677e7-2ece-4740-a17a-ec5cd9412b5c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/310677e7-2ece-4740-a17a-ec5cd9412b5c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_family_name", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/37c492db-521d-4ef5-9fb2-dec64bb1de1e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/37c492db-521d-4ef5-9fb2-dec64bb1de1e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_profile", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/3c3f3bfe-d096-4f0e-9f9e-1ce9633cac5d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/3c3f3bfe-d096-4f0e-9f9e-1ce9633cac5d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_address.formatted", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/3dc6971b-d7e8-4019-8502-d43dc0ced872", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/3dc6971b-d7e8-4019-8502-d43dc0ced872", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_address.region", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/4dab2957-276b-4132-886f-fd217d21c01d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/4dab2957-276b-4132-886f-fd217d21c01d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_phone_number_verified", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/791968e4-08bb-4aa8-bfc3-a28287fe0070", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/791968e4-08bb-4aa8-bfc3-a28287fe0070", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_website", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/8447184f-1d5c-43cd-951b-a15c924b5bae", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/8447184f-1d5c-43cd-951b-a15c924b5bae", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_given_name", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/8bf9debc-5f13-45e4-81ba-cae3bc1c0d77", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/8bf9debc-5f13-45e4-81ba-cae3bc1c0d77", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_birthdate", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/91234ec7-61e8-4c5b-83f3-a08388e1a5f7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/91234ec7-61e8-4c5b-83f3-a08388e1a5f7", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_address.locality", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/b1f8538f-2b55-43ff-9b78-238fcad14b9d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/b1f8538f-2b55-43ff-9b78-238fcad14b9d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_zoneinfo", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/b298df9c-75c8-4b5a-b1a9-97b71bce415f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/b298df9c-75c8-4b5a-b1a9-97b71bce415f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_gender", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/c24c29ad-14d9-407e-a7c9-acb22a4792ce", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/c24c29ad-14d9-407e-a7c9-acb22a4792ce", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_address.street_address", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/d1c9d1eb-f988-4983-93e1-97ed6f0d835f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/d1c9d1eb-f988-4983-93e1-97ed6f0d835f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_address.country", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/d2964153-b987-4688-a5dc-09b7a1d52667", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/d2964153-b987-4688-a5dc-09b7a1d52667", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_exampleAttribute", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/dc35abb7-79bc-4449-8fcc-265fbb39345f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/dc35abb7-79bc-4449-8fcc-265fbb39345f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_picture", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/dc9cd3f2-2076-44d2-b760-100a2beb49db", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/dc9cd3f2-2076-44d2-b760-100a2beb49db", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "openid_middle_name", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/fd6180af-b339-47bb-a9e3-6e02b69fb7ad", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80/fd6180af-b339-47bb-a9e3-6e02b69fb7ad", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_attribute", ResourceName: "Undeployed Test API Service_sub", - ResourceID: fmt.Sprintf("%s/a35fe5ea-084c-4245-80f1-85f9eaf4f063/be2a2418-127a-4d60-9c04-88a5a568e25c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a35fe5ea-084c-4245-80f1-85f9eaf4f063/be2a2418-127a-4d60-9c04-88a5a568e25c", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_resource_scope.go b/internal/connector/pingone/sso/resources/pingone_resource_scope.go index 33a50eb5..1ab19837 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_scope.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_scope.go @@ -16,11 +16,11 @@ var ( ) type PingOneResourceScopeResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneResourceScopeResource -func ResourceScope(clientInfo *connector.PingOneClientInfo) *PingOneResourceScopeResource { +func ResourceScope(clientInfo *connector.ClientInfo) *PingOneResourceScopeResource { return &PingOneResourceScopeResource{ clientInfo: clientInfo, } @@ -53,14 +53,14 @@ func (r *PingOneResourceScopeResource) ExportAll() (*[]connector.ImportBlock, er "Custom Resource Name": resourceName, "Custom Resource Scope ID": resourceScopeId, "Custom Resource Scope Name": resourceScopeName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", resourceName, resourceScopeName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, resourceId, resourceScopeId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, resourceId, resourceScopeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneResourceScopeResource) ExportAll() (*[]connector.ImportBlock, er func (r *PingOneResourceScopeResource) getResourceData() (map[string]string, error) { resourceData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() resourceInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedResourcesInner](iter, "ReadAllResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -98,7 +98,7 @@ func (r *PingOneResourceScopeResource) getResourceData() (map[string]string, err func (r *PingOneResourceScopeResource) getResourceScopeData(resourceId string) (map[string]string, error) { resourceScopeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourceScopesApi.ReadAllResourceScopes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, resourceId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourceScopesApi.ReadAllResourceScopes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, resourceId).Execute() resourceScopes, err := pingone.GetManagementAPIObjectsFromIterator[management.ResourceScope](iter, "ReadAllResourceScopes", "GetScopes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_resource_scope_openid.go b/internal/connector/pingone/sso/resources/pingone_resource_scope_openid.go index bfc5663e..76d9c739 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_scope_openid.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_scope_openid.go @@ -16,11 +16,11 @@ var ( ) type PingOneResourceScopeOpenIdResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneResourceScopeOpenIdResource -func ResourceScopeOpenId(clientInfo *connector.PingOneClientInfo) *PingOneResourceScopeOpenIdResource { +func ResourceScopeOpenId(clientInfo *connector.ClientInfo) *PingOneResourceScopeOpenIdResource { return &PingOneResourceScopeOpenIdResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneResourceScopeOpenIdResource) ExportAll() (*[]connector.ImportBlo for resourceScopeId, resourceScopeName := range resourceScopeData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "OpenID Connect Resource Name": resourceName, "OpenID Connect Resource Scope ID": resourceScopeId, "OpenID Connect Resource Scope Name": resourceScopeName, @@ -59,7 +59,7 @@ func (r *PingOneResourceScopeOpenIdResource) ExportAll() (*[]connector.ImportBlo importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", resourceName, resourceScopeName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, resourceScopeId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, resourceScopeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -73,7 +73,7 @@ func (r *PingOneResourceScopeOpenIdResource) ExportAll() (*[]connector.ImportBlo func (r *PingOneResourceScopeOpenIdResource) getResourceData() (map[string]string, error) { resourceData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() resourceInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedResourcesInner](iter, "ReadAllResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -97,7 +97,7 @@ func (r *PingOneResourceScopeOpenIdResource) getResourceData() (map[string]strin func (r *PingOneResourceScopeOpenIdResource) getResourceScopeData(resourceId string) (map[string]string, error) { resourceScopeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourceScopesApi.ReadAllResourceScopes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, resourceId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourceScopesApi.ReadAllResourceScopes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, resourceId).Execute() resourceScopes, err := pingone.GetManagementAPIObjectsFromIterator[management.ResourceScope](iter, "ReadAllResourceScopes", "GetScopes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_resource_scope_openid_test.go b/internal/connector/pingone/sso/resources/pingone_resource_scope_openid_test.go index a2ac903e..3a6383a4 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_scope_openid_test.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_scope_openid_test.go @@ -11,60 +11,60 @@ import ( func TestResourceScopeOpenIdExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ResourceScopeOpenId(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ResourceScopeOpenId(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_profile", - ResourceID: fmt.Sprintf("%s/5a2881ba-affc-4556-a9ff-ad662ea84e89", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5a2881ba-affc-4556-a9ff-ad662ea84e89", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_newscope2", - ResourceID: fmt.Sprintf("%s/5f07b021-5f0e-47d0-a62b-1e983bdff753", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/5f07b021-5f0e-47d0-a62b-1e983bdff753", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_openid", - ResourceID: fmt.Sprintf("%s/6f095311-2cb9-4414-b30f-af8ee5e11e34", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/6f095311-2cb9-4414-b30f-af8ee5e11e34", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_newscope", - ResourceID: fmt.Sprintf("%s/792fa804-8aae-43c8-bea7-ea2dbbb1ca88", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/792fa804-8aae-43c8-bea7-ea2dbbb1ca88", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_email", - ResourceID: fmt.Sprintf("%s/a95eb903-b691-4aa9-91df-8b02d69816df", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a95eb903-b691-4aa9-91df-8b02d69816df", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_test", - ResourceID: fmt.Sprintf("%s/d4213f0d-e1fc-42db-bcc6-dfad730f7be7", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/d4213f0d-e1fc-42db-bcc6-dfad730f7be7", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_phone", - ResourceID: fmt.Sprintf("%s/dad64f0c-187e-4991-a5b3-c4e53a4167e5", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/dad64f0c-187e-4991-a5b3-c4e53a4167e5", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_testing", - ResourceID: fmt.Sprintf("%s/eb7e9feb-6076-4a2e-9e9e-5c9c0a503606", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/eb7e9feb-6076-4a2e-9e9e-5c9c0a503606", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_address", - ResourceID: fmt.Sprintf("%s/fcd04665-fb97-4943-9c88-427331ebe930", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/fcd04665-fb97-4943-9c88-427331ebe930", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_openid", ResourceName: "openid_offline_access", - ResourceID: fmt.Sprintf("%s/4ac3e5ac-7baf-4c05-80a5-01a40c813d1a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4ac3e5ac-7baf-4c05-80a5-01a40c813d1a", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api.go b/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api.go index 9f356be3..a4ab9e30 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api.go @@ -17,11 +17,11 @@ var ( ) type PingOneResourceScopePingOneApiResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneResourceScopePingOneApiResource -func ResourceScopePingOneApi(clientInfo *connector.PingOneClientInfo) *PingOneResourceScopePingOneApiResource { +func ResourceScopePingOneApi(clientInfo *connector.ClientInfo) *PingOneResourceScopePingOneApiResource { return &PingOneResourceScopePingOneApiResource{ clientInfo: clientInfo, } @@ -50,7 +50,7 @@ func (r *PingOneResourceScopePingOneApiResource) ExportAll() (*[]connector.Impor for resourceScopeId, resourceScopeName := range resourceScopeData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "PingOne API Resource Name": resourceName, "PingOne API Resource Scope ID": resourceScopeId, "PingOne API Resource Scope Name": resourceScopeName, @@ -60,7 +60,7 @@ func (r *PingOneResourceScopePingOneApiResource) ExportAll() (*[]connector.Impor importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", resourceName, resourceScopeName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, resourceScopeId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, resourceScopeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneResourceScopePingOneApiResource) ExportAll() (*[]connector.Impor func (r *PingOneResourceScopePingOneApiResource) getResourceData() (map[string]string, error) { resourceData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() resourceInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedResourcesInner](iter, "ReadAllResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -98,7 +98,7 @@ func (r *PingOneResourceScopePingOneApiResource) getResourceData() (map[string]s func (r *PingOneResourceScopePingOneApiResource) getResourceScopeData(resourceId string) (map[string]string, error) { resourceScopeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourceScopesApi.ReadAllResourceScopes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, resourceId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourceScopesApi.ReadAllResourceScopes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, resourceId).Execute() resourceScopes, err := pingone.GetManagementAPIObjectsFromIterator[management.ResourceScope](iter, "ReadAllResourceScopes", "GetScopes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api_test.go b/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api_test.go index e8f18cd6..bbb4f7a8 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api_test.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_scope_pingone_api_test.go @@ -11,25 +11,25 @@ import ( func TestResourceScopePingOneApiExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ResourceScopePingOneApi(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ResourceScopePingOneApi(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_resource_scope_pingone_api", ResourceName: "PingOne API_p1:read:user", - ResourceID: fmt.Sprintf("%s/089adcde-be64-4e7e-9a5a-dda60ce38a9f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/089adcde-be64-4e7e-9a5a-dda60ce38a9f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_pingone_api", ResourceName: "PingOne API_p1:read:user:2", - ResourceID: fmt.Sprintf("%s/83d8ee1d-938f-4287-9792-aa808dc0cad9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/83d8ee1d-938f-4287-9792-aa808dc0cad9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope_pingone_api", ResourceName: "PingOne API_p1:update:user", - ResourceID: fmt.Sprintf("%s/d5bd66de-8044-41c5-aed2-278b6cf47dad", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/d5bd66de-8044-41c5-aed2-278b6cf47dad", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_resource_scope_test.go b/internal/connector/pingone/sso/resources/pingone_resource_scope_test.go index 11c1d1ac..760e4669 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_scope_test.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_scope_test.go @@ -11,35 +11,35 @@ import ( func TestResourceScopeExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ResourceScope(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ResourceScope(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_resource_scope", ResourceName: "authorize-api-service_apiscope", - ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/97b9c81c-56a3-4727-8626-9c55826f98c0", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/97b9c81c-56a3-4727-8626-9c55826f98c0", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope", ResourceName: "authorize-api-service_testing", - ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/6aa03c9d-7003-4ddb-9395-b176d4bde6d6", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2/6aa03c9d-7003-4ddb-9395-b176d4bde6d6", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope", ResourceName: "test_testing", - ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d/99bda6e7-f34b-4218-8fb0-221f5414e0db", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d/99bda6e7-f34b-4218-8fb0-221f5414e0db", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope", ResourceName: "test_oidc", - ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d/9f2c9b87-a190-446e-bf6b-d97b7f8b1a70", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d/9f2c9b87-a190-446e-bf6b-d97b7f8b1a70", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_scope", ResourceName: "testing_test", - ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b/d9935d01-5baa-4843-970a-9df33b60439f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b/d9935d01-5baa-4843-970a-9df33b60439f", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_resource_secret.go b/internal/connector/pingone/sso/resources/pingone_resource_secret.go index faf72066..0db8350f 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_secret.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_secret.go @@ -16,11 +16,11 @@ var ( ) type PingOneResourceSecretResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneResourceSecretResource -func ResourceSecret(clientInfo *connector.PingOneClientInfo) *PingOneResourceSecretResource { +func ResourceSecret(clientInfo *connector.ClientInfo) *PingOneResourceSecretResource { return &PingOneResourceSecretResource{ clientInfo: clientInfo, } @@ -54,14 +54,14 @@ func (r *PingOneResourceSecretResource) ExportAll() (*[]connector.ImportBlock, e commentData := map[string]string{ "Resource ID": resourceId, "Resource Name": resourceName, - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), } importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_secret", resourceName), - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, resourceId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, resourceId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneResourceSecretResource) ExportAll() (*[]connector.ImportBlock, e func (r *PingOneResourceSecretResource) getResourceData() (map[string]string, error) { resourceData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourcesApi.ReadAllResources(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() resourceInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedResourcesInner](iter, "ReadAllResources", "GetResources", r.ResourceType()) if err != nil { return nil, err @@ -96,6 +96,6 @@ func (r *PingOneResourceSecretResource) getResourceData() (map[string]string, er } func (r *PingOneResourceSecretResource) getResourceSecret(resourceId string) (bool, error) { - _, response, err := r.clientInfo.ApiClient.ManagementAPIClient.ResourceClientSecretApi.ReadResourceSecret(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, resourceId).Execute() + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.ResourceClientSecretApi.ReadResourceSecret(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, resourceId).Execute() return common.HandleClientResponse(response, err, "ReadResourceSecret", r.ResourceType()) } diff --git a/internal/connector/pingone/sso/resources/pingone_resource_secret_test.go b/internal/connector/pingone/sso/resources/pingone_resource_secret_test.go index fcfea08a..4d9000cf 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_secret_test.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_secret_test.go @@ -11,30 +11,30 @@ import ( func TestResourceSecretExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.ResourceSecret(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.ResourceSecret(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_resource_secret", ResourceName: "Undeployed Test API Service_secret", - ResourceID: fmt.Sprintf("%s/a35fe5ea-084c-4245-80f1-85f9eaf4f063", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a35fe5ea-084c-4245-80f1-85f9eaf4f063", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_secret", ResourceName: "authorize-api-service_secret", - ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_secret", ResourceName: "test_secret", - ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource_secret", ResourceName: "testing_secret", - ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_resource_test.go b/internal/connector/pingone/sso/resources/pingone_resource_test.go index 08bcc047..4498ca3b 100644 --- a/internal/connector/pingone/sso/resources/pingone_resource_test.go +++ b/internal/connector/pingone/sso/resources/pingone_resource_test.go @@ -11,40 +11,40 @@ import ( func TestResourceExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.Resource(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.Resource(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_resource", ResourceName: "authorize-api-service", - ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/3c6001a0-6110-4934-9d34-fa8c4a2894c2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource", ResourceName: "test", - ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/4b9ef858-62ce-4bd0-9186-997b8527529d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource", ResourceName: "testing", - ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/52afd89f-f3c0-4c78-b896-432c0a07329b", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource", ResourceName: "PingOne API", - ResourceID: fmt.Sprintf("%s/95ed3610-7668-4a17-8334-b3db5ff9a875", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/95ed3610-7668-4a17-8334-b3db5ff9a875", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource", ResourceName: "openid", - ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/8c428665-3e68-4f3c-997d-16a97f8cbe80", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_resource", ResourceName: "Undeployed Test API Service", - ResourceID: fmt.Sprintf("%s/a35fe5ea-084c-4245-80f1-85f9eaf4f063", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/a35fe5ea-084c-4245-80f1-85f9eaf4f063", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_schema_attribute.go b/internal/connector/pingone/sso/resources/pingone_schema_attribute.go index 2cb67f13..d6f8e5fd 100644 --- a/internal/connector/pingone/sso/resources/pingone_schema_attribute.go +++ b/internal/connector/pingone/sso/resources/pingone_schema_attribute.go @@ -16,11 +16,11 @@ var ( ) type PingOneSchemaAttributeResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneSchemaAttributeResource -func SchemaAttribute(clientInfo *connector.PingOneClientInfo) *PingOneSchemaAttributeResource { +func SchemaAttribute(clientInfo *connector.ClientInfo) *PingOneSchemaAttributeResource { return &PingOneSchemaAttributeResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneSchemaAttributeResource) ExportAll() (*[]connector.ImportBlock, for schemaAttributeId, schemaAttributeName := range schemaAttributeData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Schema Attribute ID": schemaAttributeId, "Schema Attribute Name": schemaAttributeName, @@ -60,7 +60,7 @@ func (r *PingOneSchemaAttributeResource) ExportAll() (*[]connector.ImportBlock, importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", schemaName, schemaAttributeName), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, schemaId, schemaAttributeId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, schemaId, schemaAttributeId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneSchemaAttributeResource) ExportAll() (*[]connector.ImportBlock, func (r *PingOneSchemaAttributeResource) getSchemaData() (map[string]string, error) { schemaData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.SchemasApi.ReadAllSchemas(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.SchemasApi.ReadAllSchemas(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() schemas, err := pingone.GetManagementAPIObjectsFromIterator[management.Schema](iter, "ReadAllSchemas", "GetSchemas", r.ResourceType()) if err != nil { return nil, err @@ -94,7 +94,7 @@ func (r *PingOneSchemaAttributeResource) getSchemaData() (map[string]string, err func (r *PingOneSchemaAttributeResource) getSchemaAttributeData(schemaId string) (map[string]string, error) { schemaAttributeData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.SchemasApi.ReadAllSchemaAttributes(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, schemaId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.SchemasApi.ReadAllSchemaAttributes(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, schemaId).Execute() attributeInners, err := pingone.GetManagementAPIObjectsFromIterator[management.EntityArrayEmbeddedAttributesInner](iter, "ReadAllSchemaAttributes", "GetAttributes", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_schema_attribute_test.go b/internal/connector/pingone/sso/resources/pingone_schema_attribute_test.go index b0343c23..dd298743 100644 --- a/internal/connector/pingone/sso/resources/pingone_schema_attribute_test.go +++ b/internal/connector/pingone/sso/resources/pingone_schema_attribute_test.go @@ -11,160 +11,160 @@ import ( func TestSchemaAttributeExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.SchemaAttribute(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.SchemaAttribute(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_schema_attribute", ResourceName: "User_preferredLanguage", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/364bc187-e88f-4853-87f3-64aa13d9a099", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/364bc187-e88f-4853-87f3-64aa13d9a099", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_timezone", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/4d3de681-a822-4633-bc42-8c67f9052fd3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/4d3de681-a822-4633-bc42-8c67f9052fd3", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_lastSignOn", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/6b6992f5-78f6-4a22-97a1-69ba30c591d0", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/6b6992f5-78f6-4a22-97a1-69ba30c591d0", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_title", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/47cdeaa0-5cf0-4964-83b5-b3fe125c092e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/47cdeaa0-5cf0-4964-83b5-b3fe125c092e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_type", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/acce5383-16ff-4973-8ded-2b19fd9146ed", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/acce5383-16ff-4973-8ded-2b19fd9146ed", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_locale", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/b9ff90eb-188e-40b1-9725-92b55e40f1eb", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/b9ff90eb-188e-40b1-9725-92b55e40f1eb", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_enabled", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/022607db-04b7-4d37-a034-798342d32060", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/022607db-04b7-4d37-a034-798342d32060", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_identityProvider", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/b77ef54a-54c1-4636-83d2-b410ed23aeee", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/b77ef54a-54c1-4636-83d2-b410ed23aeee", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_lifecycle", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/e3541156-0fe1-4177-aa69-dce02420d8cc", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/e3541156-0fe1-4177-aa69-dce02420d8cc", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_createdAt", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/d3221cc9-fb62-42e9-a14c-971a7c7a1e74", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/d3221cc9-fb62-42e9-a14c-971a7c7a1e74", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_verifyStatus", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/23a02ffd-9250-401e-8aa5-f8eb71b72c6c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/23a02ffd-9250-401e-8aa5-f8eb71b72c6c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_nickname", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/87efff27-cdb5-4829-9976-a80ebb4f8ee5", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/87efff27-cdb5-4829-9976-a80ebb4f8ee5", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_mfaEnabled", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/a49c17e2-ce8f-45e5-8e71-d51c8c4d140a", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/a49c17e2-ce8f-45e5-8e71-d51c8c4d140a", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_id", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/e4bb0b09-3f8d-485e-94ca-20e312471633", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/e4bb0b09-3f8d-485e-94ca-20e312471633", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_email", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/0473af5a-1294-4462-8a19-8567e5dccd9c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/0473af5a-1294-4462-8a19-8567e5dccd9c", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_updatedAt", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/8fe405d2-c620-4267-805d-371c2092eb59", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/8fe405d2-c620-4267-805d-371c2092eb59", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_memberOfGroupIDs", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/d85f4528-54a8-49c7-a643-c098ad28b860", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/d85f4528-54a8-49c7-a643-c098ad28b860", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_address", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/bc10ef33-b7cf-4efd-afc2-44bbd8f572a9", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/bc10ef33-b7cf-4efd-afc2-44bbd8f572a9", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_externalId", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/985359b0-a6a7-49e3-9079-be770e49b37f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/985359b0-a6a7-49e3-9079-be770e49b37f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_photo", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/d991bc82-002d-4872-b544-9f2562452269", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/d991bc82-002d-4872-b544-9f2562452269", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_memberOfGroupNames", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/6a2aa3a6-9926-4070-8827-3bf84f7033fb", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/6a2aa3a6-9926-4070-8827-3bf84f7033fb", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_population", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/fb572f33-8944-4a35-846c-e548dbdeb49f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/fb572f33-8944-4a35-846c-e548dbdeb49f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_primaryPhone", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/f48f844b-3ba2-45ad-ba3c-de473a12ca4d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/f48f844b-3ba2-45ad-ba3c-de473a12ca4d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_accountId", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/3658a298-8ce8-446d-ada5-cebb24678506", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/3658a298-8ce8-446d-ada5-cebb24678506", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_emailVerified", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/c4034a55-f6ae-406e-b3ad-5da3c66d77a2", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/c4034a55-f6ae-406e-b3ad-5da3c66d77a2", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_mobilePhone", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/b4a939bf-f60a-41c3-9aad-1482ddf31d32", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/b4a939bf-f60a-41c3-9aad-1482ddf31d32", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_name", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/c8cac0ca-31c6-43d4-a2e6-63b07c936a43", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/c8cac0ca-31c6-43d4-a2e6-63b07c936a43", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_account", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/eeed302f-8ca8-4993-aeb0-5d8d08587d8d", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/eeed302f-8ca8-4993-aeb0-5d8d08587d8d", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_username", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/77d3f22e-00ca-49d1-98a1-fc0ee48d2542", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/77d3f22e-00ca-49d1-98a1-fc0ee48d2542", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_schema_attribute", ResourceName: "User_bypassMFA", - ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/355c50dc-0eb6-4c5b-ab36-2b3152e0534c", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/ff3cb03d-4896-4d20-8612-f014c4048d01/355c50dc-0eb6-4c5b-ab36-2b3152e0534c", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_sign_on_policy.go b/internal/connector/pingone/sso/resources/pingone_sign_on_policy.go index 8af1bd60..9caa8e34 100644 --- a/internal/connector/pingone/sso/resources/pingone_sign_on_policy.go +++ b/internal/connector/pingone/sso/resources/pingone_sign_on_policy.go @@ -16,11 +16,11 @@ var ( ) type PingOneSignOnPolicyResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneSignOnPolicyResource -func SignOnPolicy(clientInfo *connector.PingOneClientInfo) *PingOneSignOnPolicyResource { +func SignOnPolicy(clientInfo *connector.ClientInfo) *PingOneSignOnPolicyResource { return &PingOneSignOnPolicyResource{ clientInfo: clientInfo, } @@ -43,7 +43,7 @@ func (r *PingOneSignOnPolicyResource) ExportAll() (*[]connector.ImportBlock, err for signOnPolicyId, signOnPolicyName := range signOnPolicyData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Sign-On Policy ID": signOnPolicyId, "Sign-On Policy Name": signOnPolicyName, @@ -52,7 +52,7 @@ func (r *PingOneSignOnPolicyResource) ExportAll() (*[]connector.ImportBlock, err importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: signOnPolicyName, - ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.ExportEnvironmentID, signOnPolicyId), + ResourceID: fmt.Sprintf("%s/%s", r.clientInfo.PingOneExportEnvironmentID, signOnPolicyId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -65,7 +65,7 @@ func (r *PingOneSignOnPolicyResource) ExportAll() (*[]connector.ImportBlock, err func (r *PingOneSignOnPolicyResource) getSignOnPolicyData() (map[string]string, error) { signOnPolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.SignOnPoliciesApi.ReadAllSignOnPolicies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.SignOnPoliciesApi.ReadAllSignOnPolicies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() signOnPolicies, err := pingone.GetManagementAPIObjectsFromIterator[management.SignOnPolicy](iter, "ReadAllSignOnPolicies", "GetSignOnPolicies", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action.go b/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action.go index f8943054..e3067f21 100644 --- a/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action.go +++ b/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action.go @@ -16,11 +16,11 @@ var ( ) type PingOneSignOnPolicyActionResource struct { - clientInfo *connector.PingOneClientInfo + clientInfo *connector.ClientInfo } // Utility method for creating a PingOneSignOnPolicyActionResource -func SignOnPolicyAction(clientInfo *connector.PingOneClientInfo) *PingOneSignOnPolicyActionResource { +func SignOnPolicyAction(clientInfo *connector.ClientInfo) *PingOneSignOnPolicyActionResource { return &PingOneSignOnPolicyActionResource{ clientInfo: clientInfo, } @@ -49,7 +49,7 @@ func (r *PingOneSignOnPolicyActionResource) ExportAll() (*[]connector.ImportBloc for actionId, actionType := range signOnPolicyActionData { commentData := map[string]string{ - "Export Environment ID": r.clientInfo.ExportEnvironmentID, + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, "Resource Type": r.ResourceType(), "Sign-On Policy Action ID": actionId, "Sign-On Policy Action Type": actionType, @@ -60,7 +60,7 @@ func (r *PingOneSignOnPolicyActionResource) ExportAll() (*[]connector.ImportBloc importBlock := connector.ImportBlock{ ResourceType: r.ResourceType(), ResourceName: fmt.Sprintf("%s_%s", signOnPolicyName, actionType), - ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.ExportEnvironmentID, signOnPolicyId, actionId), + ResourceID: fmt.Sprintf("%s/%s/%s", r.clientInfo.PingOneExportEnvironmentID, signOnPolicyId, actionId), CommentInformation: common.GenerateCommentInformation(commentData), } @@ -74,7 +74,7 @@ func (r *PingOneSignOnPolicyActionResource) ExportAll() (*[]connector.ImportBloc func (r *PingOneSignOnPolicyActionResource) getSignOnPolicyData() (map[string]string, error) { signOnPolicyData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.SignOnPoliciesApi.ReadAllSignOnPolicies(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.SignOnPoliciesApi.ReadAllSignOnPolicies(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() signOnPolicies, err := pingone.GetManagementAPIObjectsFromIterator[management.SignOnPolicy](iter, "ReadAllSignOnPolicies", "GetSignOnPolicies", r.ResourceType()) if err != nil { return nil, err @@ -95,7 +95,7 @@ func (r *PingOneSignOnPolicyActionResource) getSignOnPolicyData() (map[string]st func (r *PingOneSignOnPolicyActionResource) getSignOnPolicyActionData(signOnPolicyId string) (map[string]string, error) { signOnPolicyActionData := make(map[string]string) - iter := r.clientInfo.ApiClient.ManagementAPIClient.SignOnPolicyActionsApi.ReadAllSignOnPolicyActions(r.clientInfo.Context, r.clientInfo.ExportEnvironmentID, signOnPolicyId).Execute() + iter := r.clientInfo.PingOneApiClient.ManagementAPIClient.SignOnPolicyActionsApi.ReadAllSignOnPolicyActions(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID, signOnPolicyId).Execute() signOnPolicyActions, err := pingone.GetManagementAPIObjectsFromIterator[management.SignOnPolicyAction](iter, "ReadAllSignOnPolicyActions", "GetActions", r.ResourceType()) if err != nil { return nil, err diff --git a/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action_test.go b/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action_test.go index ea0b50bd..cf4f890f 100644 --- a/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action_test.go +++ b/internal/connector/pingone/sso/resources/pingone_sign_on_policy_action_test.go @@ -11,40 +11,40 @@ import ( func TestSignOnPolicyActionExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.SignOnPolicyAction(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.SignOnPolicyAction(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_sign_on_policy_action", ResourceName: "testing_LOGIN", - ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc/8d6fbf89-6913-403d-ab16-1470af9be22f", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc/8d6fbf89-6913-403d-ab16-1470af9be22f", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy_action", ResourceName: "testing_AGREEMENT", - ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc/23a73045-e9a7-4557-83c7-8aa3b7c7fb2e", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc/23a73045-e9a7-4557-83c7-8aa3b7c7fb2e", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy_action", ResourceName: "testing_IDENTITY_PROVIDER", - ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc/e975d90d-8355-45a2-94ba-3757734cc64b", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc/e975d90d-8355-45a2-94ba-3757734cc64b", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy_action", ResourceName: "test_LOGIN", - ResourceID: fmt.Sprintf("%s/50cff7e5-7c95-4d1d-9fce-c9cdc7d6f6a3/8114540e-8deb-408b-9307-fa74f00d2683", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/50cff7e5-7c95-4d1d-9fce-c9cdc7d6f6a3/8114540e-8deb-408b-9307-fa74f00d2683", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy_action", ResourceName: "Single_Factor_LOGIN", - ResourceID: fmt.Sprintf("%s/b1fdc38d-ea0c-47b1-9d83-c48105bd6806/6cc634a8-a89f-4632-8e84-45b976a18473", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b1fdc38d-ea0c-47b1-9d83-c48105bd6806/6cc634a8-a89f-4632-8e84-45b976a18473", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy_action", ResourceName: "multi_factor_MULTI_FACTOR_AUTHENTICATION", - ResourceID: fmt.Sprintf("%s/7c857f42-12ef-4ff0-96e8-4dfe6d84c425/f370ed1c-09b6-4f84-8a5e-8afd5aa63687", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7c857f42-12ef-4ff0-96e8-4dfe6d84c425/f370ed1c-09b6-4f84-8a5e-8afd5aa63687", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/internal/connector/pingone/sso/resources/pingone_sign_on_policy_test.go b/internal/connector/pingone/sso/resources/pingone_sign_on_policy_test.go index f50dd7a1..fc1559fc 100644 --- a/internal/connector/pingone/sso/resources/pingone_sign_on_policy_test.go +++ b/internal/connector/pingone/sso/resources/pingone_sign_on_policy_test.go @@ -11,30 +11,30 @@ import ( func TestSignOnPolicyExport(t *testing.T) { // Get initialized apiClient and resource - PingOneClientInfo := testutils.GetPingOneClientInfo(t) - resource := resources.SignOnPolicy(PingOneClientInfo) + clientInfo := testutils.GetClientInfo(t) + resource := resources.SignOnPolicy(clientInfo) // Defined the expected ImportBlocks for the resource expectedImportBlocks := []connector.ImportBlock{ { ResourceType: "pingone_sign_on_policy", ResourceName: "testing", - ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/0667e65d-fcdf-4049-b1b4-9d59392ee8bc", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy", ResourceName: "test", - ResourceID: fmt.Sprintf("%s/50cff7e5-7c95-4d1d-9fce-c9cdc7d6f6a3", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/50cff7e5-7c95-4d1d-9fce-c9cdc7d6f6a3", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy", ResourceName: "Single_Factor", - ResourceID: fmt.Sprintf("%s/b1fdc38d-ea0c-47b1-9d83-c48105bd6806", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/b1fdc38d-ea0c-47b1-9d83-c48105bd6806", clientInfo.PingOneExportEnvironmentID), }, { ResourceType: "pingone_sign_on_policy", ResourceName: "multi_factor", - ResourceID: fmt.Sprintf("%s/7c857f42-12ef-4ff0-96e8-4dfe6d84c425", testutils.GetEnvironmentID()), + ResourceID: fmt.Sprintf("%s/7c857f42-12ef-4ff0-96e8-4dfe6d84c425", clientInfo.PingOneExportEnvironmentID), }, } diff --git a/server-profiles/shared-profile/instance/server/default/deploy/pf-sdk-example-identity-store-provisioner-12.2.0.4-SNAPSHOT.jar b/internal/testing/pingfederate_container_files/deploy/pf-sdk-example-identity-store-provisioner-12.2.0.4-SNAPSHOT.jar similarity index 100% rename from server-profiles/shared-profile/instance/server/default/deploy/pf-sdk-example-identity-store-provisioner-12.2.0.4-SNAPSHOT.jar rename to internal/testing/pingfederate_container_files/deploy/pf-sdk-example-identity-store-provisioner-12.2.0.4-SNAPSHOT.jar diff --git a/internal/testing/testutils/utils.go b/internal/testing/testutils/utils.go index 2b6f3bac..5065a4bf 100644 --- a/internal/testing/testutils/utils.go +++ b/internal/testing/testutils/utils.go @@ -1,87 +1,53 @@ package testutils import ( + "bytes" "context" + "crypto/rand" + "crypto/rsa" "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "fmt" + "math/big" "net/http" "os" "regexp" "sync" "testing" + "time" "github.com/patrickcping/pingone-go-sdk-v2/management" "github.com/patrickcping/pingone-go-sdk-v2/pingone" "github.com/pingidentity/pingcli/internal/configuration" "github.com/pingidentity/pingcli/internal/configuration/options" "github.com/pingidentity/pingcli/internal/connector" - pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1210/configurationapi" + pingfederateGoClient "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" ) var ( - envIdOnce sync.Once - apiClientOnce sync.Once - PingOneClientInfo *connector.PingOneClientInfo - environmentId string + clientInfoOnce sync.Once + clientInfo *connector.ClientInfo = &connector.ClientInfo{} ) -func GetEnvironmentID() string { - envIdOnce.Do(func() { - environmentId = os.Getenv(options.PlatformExportPingOneEnvironmentIDOption.EnvVar) - }) - - return environmentId -} - -// Utility method to initialize a PingOne SDK client for testing -func GetPingOneClientInfo(t *testing.T) *connector.PingOneClientInfo { +func GetClientInfo(t *testing.T) *connector.ClientInfo { t.Helper() - apiClientOnce.Do(func() { + // Ensure that the client info is initialized only once + clientInfoOnce.Do(func() { configuration.InitAllOptions() - // Grab environment vars for initializing the API client. - // These are set in GitHub Actions. - clientID := os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar) - clientSecret := os.Getenv(options.PingOneAuthenticationWorkerClientSecretOption.EnvVar) - environmentId := GetEnvironmentID() - regionCode := os.Getenv(options.PingOneRegionCodeOption.EnvVar) - sdkRegionCode := management.EnumRegionCode(regionCode) - - if clientID == "" || clientSecret == "" || environmentId == "" || regionCode == "" { - t.Fatalf("Unable to retrieve env var value for one or more of clientID, clientSecret, environmentID, regionCode.") - } - apiConfig := &pingone.Config{ - ClientID: &clientID, - ClientSecret: &clientSecret, - EnvironmentID: &environmentId, - RegionCode: &sdkRegionCode, - } - - // Make empty context for testing - ctx := context.Background() - - // Initialize the API client - client, err := apiConfig.APIClient(ctx) - if err != nil { - t.Fatal(err.Error()) - } - - PingOneClientInfo = &connector.PingOneClientInfo{ - Context: ctx, - ApiClient: client, - ApiClientId: &clientID, - ExportEnvironmentID: environmentId, - } + initPingFederateClientInfo(t, clientInfo) + initPingOneClientInfo(t, clientInfo) }) - return PingOneClientInfo + return clientInfo } -func GetPingFederateClientInfo(t *testing.T) *connector.PingFederateClientInfo { +func initPingFederateClientInfo(t *testing.T, clientInfo *connector.ClientInfo) { t.Helper() - configuration.InitAllOptions() - httpsHost := os.Getenv(options.PingFederateHTTPSHostOption.EnvVar) adminApiPath := os.Getenv(options.PingFederateAdminAPIPathOption.EnvVar) pfUsername := os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar) @@ -104,15 +70,48 @@ func GetPingFederateClientInfo(t *testing.T) *connector.PingFederateClientInfo { }}} pfClientConfig.HTTPClient = httpClient - apiClient := pingfederateGoClient.NewAPIClient(pfClientConfig) + clientInfo.PingFederateApiClient = pingfederateGoClient.NewAPIClient(pfClientConfig) + clientInfo.PingFederateContext = context.WithValue(context.Background(), pingfederateGoClient.ContextBasicAuth, pingfederateGoClient.BasicAuth{ + UserName: pfUsername, + Password: pfPassword, + }) +} + +func initPingOneClientInfo(t *testing.T, clientInfo *connector.ClientInfo) { + t.Helper() + + // Grab environment vars for initializing the API client. + // These are set in GitHub Actions. + clientID := os.Getenv(options.PingOneAuthenticationWorkerClientIDOption.EnvVar) + clientSecret := os.Getenv(options.PingOneAuthenticationWorkerClientSecretOption.EnvVar) + environmentId := os.Getenv(options.PlatformExportPingOneEnvironmentIDOption.EnvVar) + regionCode := os.Getenv(options.PingOneRegionCodeOption.EnvVar) + sdkRegionCode := management.EnumRegionCode(regionCode) + + if clientID == "" || clientSecret == "" || environmentId == "" || regionCode == "" { + t.Fatalf("Unable to retrieve env var value for one or more of clientID, clientSecret, environmentID, regionCode.") + } + + apiConfig := &pingone.Config{ + ClientID: &clientID, + ClientSecret: &clientSecret, + EnvironmentID: &environmentId, + RegionCode: &sdkRegionCode, + } + + // Make empty context for testing + ctx := context.Background() - return &connector.PingFederateClientInfo{ - ApiClient: apiClient, - Context: context.WithValue(context.Background(), pingfederateGoClient.ContextBasicAuth, pingfederateGoClient.BasicAuth{ - UserName: pfUsername, - Password: pfPassword, - }), + // Initialize the API client + client, err := apiConfig.APIClient(ctx) + if err != nil { + t.Fatal(err.Error()) } + + clientInfo.PingOneApiClient = client + clientInfo.PingOneContext = ctx + clientInfo.PingOneApiClientId = clientID + clientInfo.PingOneExportEnvironmentID = environmentId } func ValidateImportBlocks(t *testing.T, resource connector.ExportableResource, expectedImportBlocks *[]connector.ImportBlock) { @@ -216,3 +215,51 @@ func WriteStringToPipe(str string, t *testing.T) (reader *os.File) { return reader } + +func CreateX509Certificate() (string, error) { + serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) + serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) + if err != nil { + return "", fmt.Errorf("failed to generate serial number: %v", err) + } + + certificateCA := &x509.Certificate{ + SerialNumber: serialNumber, + Subject: pkix.Name{ + Organization: []string{"Ping Identity Corporation"}, + Country: []string{"US"}, + Province: []string{"CO"}, + Locality: []string{"Denver"}, + StreetAddress: []string{"1001 17th St"}, + PostalCode: []string{"80202"}, + CommonName: "*.pingidentity.com", + }, + NotBefore: time.Now(), + NotAfter: time.Now().AddDate(1, 0, 0), + IsCA: true, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth}, + KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + BasicConstraintsValid: true, + } + + caPrivKey, err := rsa.GenerateKey(rand.Reader, 4096) + if err != nil { + return "", fmt.Errorf("failed to generate private key: %v", err) + } + + caBytes, err := x509.CreateCertificate(rand.Reader, certificateCA, certificateCA, &caPrivKey.PublicKey, caPrivKey) + if err != nil { + return "", fmt.Errorf("failed to create certificate: %v", err) + } + + caPEM := new(bytes.Buffer) + err = pem.Encode(caPEM, &pem.Block{ + Type: "CERTIFICATE", + Bytes: caBytes, + }) + if err != nil { + return "", fmt.Errorf("failed to encode certificate: %v", err) + } + + return caPEM.String(), nil +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_api_application.go b/internal/testing/testutils_resource/pingfederate/authentication_api_application.go new file mode 100644 index 00000000..9c2a7b42 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_api_application.go @@ -0,0 +1,70 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateAuthenticationApiApplication(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createAuthenticationApiApplication, + DeleteFunc: deleteAuthenticationApiApplication, + Dependencies: nil, + ExportableResource: resources.AuthenticationApiApplication(clientInfo), + } +} + +func createAuthenticationApiApplication(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createAuthenticationApiApplication(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.AuthenticationApiAPI.CreateApplication(clientInfo.PingFederateContext) + clientStruct := client.AuthnApiApplication{ + Id: "TestAuthnApiApplicationId", + Name: "TestAuthnApiApplicationName", + Url: "https://www.example.com", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateApplication", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteAuthenticationApiApplication(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.AuthenticationApiAPI.DeleteApplication(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteApplication", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_api_settings.go b/internal/testing/testutils_resource/pingfederate/authentication_api_settings.go new file mode 100644 index 00000000..c485ab52 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_api_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateAuthenticationApiSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.AuthenticationApiApplication(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_policies.go b/internal/testing/testutils_resource/pingfederate/authentication_policies.go new file mode 100644 index 00000000..3dc512cd --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_policies.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateAuthenticationPolicies(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.AuthenticationPolicies(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_policies_fragment.go b/internal/testing/testutils_resource/pingfederate/authentication_policies_fragment.go new file mode 100644 index 00000000..28c1f472 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_policies_fragment.go @@ -0,0 +1,110 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateAuthenticationPoliciesFragment(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createAuthenticationPoliciesFragment, + DeleteFunc: deleteAuthenticationPoliciesFragment, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateIdpAdapter(t, clientInfo), + }, + ExportableResource: resources.AuthenticationPoliciesFragment(clientInfo), + } +} + +func createAuthenticationPoliciesFragment(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createAuthenticationPoliciesFragment(): %v", strArgs) + } + resourceType := strArgs[0] + idpAdapterId := strArgs[1] + + request := clientInfo.PingFederateApiClient.AuthenticationPoliciesAPI.CreateFragment(clientInfo.PingFederateContext) + clientStruct := client.AuthenticationPolicyFragment{ + Id: utils.Pointer("TestFragmentId"), + Name: utils.Pointer("TestFragmentName"), + RootNode: &client.AuthenticationPolicyTreeNode{ + Action: client.PolicyActionAggregation{ + AuthnSourcePolicyAction: &client.AuthnSourcePolicyAction{ + PolicyAction: client.PolicyAction{ + Type: "AUTHN_SOURCE", + }, + AuthenticationSource: client.AuthenticationSource{ + SourceRef: client.ResourceLink{ + Id: idpAdapterId, + }, + Type: "IDP_ADAPTER", + }, + }, + }, + Children: []client.AuthenticationPolicyTreeNode{ + { + Action: client.PolicyActionAggregation{ + DonePolicyAction: &client.DonePolicyAction{ + PolicyAction: client.PolicyAction{ + Type: "DONE", + Context: utils.Pointer("Fail"), + }, + }, + }, + }, + { + Action: client.PolicyActionAggregation{ + DonePolicyAction: &client.DonePolicyAction{ + PolicyAction: client.PolicyAction{ + Type: "DONE", + Context: utils.Pointer("Success"), + }, + }, + }, + }, + }, + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateFragment", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: *resource.Name, + } +} + +func deleteAuthenticationPoliciesFragment(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.AuthenticationPoliciesAPI.DeleteFragment(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteFragment", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_policies_settings.go b/internal/testing/testutils_resource/pingfederate/authentication_policies_settings.go new file mode 100644 index 00000000..551ae0bf --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_policies_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateAuthenticationPoliciesSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.AuthenticationPoliciesSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_policy_contract.go b/internal/testing/testutils_resource/pingfederate/authentication_policy_contract.go new file mode 100644 index 00000000..dd295b26 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_policy_contract.go @@ -0,0 +1,75 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateAuthenticationPolicyContract(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createAuthenticationPolicyContract, + DeleteFunc: deleteAuthenticationPolicyContract, + Dependencies: nil, + ExportableResource: resources.AuthenticationPolicyContract(clientInfo), + } +} + +func createAuthenticationPolicyContract(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createAuthenticationPolicyContract(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.AuthenticationPolicyContractsAPI.CreateAuthenticationPolicyContract(clientInfo.PingFederateContext) + clientStruct := client.AuthenticationPolicyContract{ + CoreAttributes: []client.AuthenticationPolicyContractAttribute{ + { + Name: "subject", + }, + }, + Id: utils.Pointer("TestApcId"), + Name: utils.Pointer("TestApcName"), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateAuthenticationPolicyContract", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: *resource.Name, + } +} + +func deleteAuthenticationPolicyContract(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.AuthenticationPolicyContractsAPI.DeleteAuthenticationPolicyContract(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteAuthenticationPolicyContract", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/authentication_selector.go b/internal/testing/testutils_resource/pingfederate/authentication_selector.go new file mode 100644 index 00000000..bc8bcb12 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/authentication_selector.go @@ -0,0 +1,97 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateAuthenticationSelector(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createAuthenticationSelector, + DeleteFunc: deleteAuthenticationSelector, + Dependencies: nil, + ExportableResource: resources.AuthenticationSelector(clientInfo), + } +} + +func createAuthenticationSelector(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createAuthenticationSelector(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.AuthenticationSelectorsAPI.CreateAuthenticationSelector(clientInfo.PingFederateContext) + clientStruct := client.AuthenticationSelector{ + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "Header Name", + Value: utils.Pointer("TestHeaderName"), + }, + }, + Tables: []client.ConfigTable{ + { + Name: "Results", + Rows: []client.ConfigRow{ + { + DefaultRow: utils.Pointer(false), + Fields: []client.ConfigField{ + { + Name: "Match Expression", + Value: utils.Pointer("TestMatchExpression"), + }, + }, + }, + }, + }, + }, + }, + Id: "TestAuthSelectorId", + Name: "TestAuthSelectorName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.pf.selectors.http.HTTPHeaderAdapterSelector", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateAuthenticationSelector", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteAuthenticationSelector(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.AuthenticationSelectorsAPI.DeleteAuthenticationSelector(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteAuthenticationSelector", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/captcha_provider.go b/internal/testing/testutils_resource/pingfederate/captcha_provider.go new file mode 100644 index 00000000..a9fba4fd --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/captcha_provider.go @@ -0,0 +1,89 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateCaptchaProvider(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createCaptchaProvider, + DeleteFunc: deleteCaptchaProvider, + Dependencies: nil, + ExportableResource: resources.CaptchaProvider(clientInfo), + } +} + +func createCaptchaProvider(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createCaptchaProvider(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.CaptchaProvidersAPI.CreateCaptchaProvider(clientInfo.PingFederateContext) + clientStruct := client.CaptchaProvider{ + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "Site Key", + Value: utils.Pointer("TestSiteKey"), + }, + { + Name: "Secret Key", + Value: utils.Pointer("TestSecretKey"), + }, + { + Name: "Pass Score Threshold", + Value: utils.Pointer("0.8"), + }, + }, + }, + Id: "TestCaptchaProviderId", + Name: "TestCaptchaProviderName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.captcha.recaptchaV3.ReCaptchaV3Plugin", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateCaptchaProvider", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteCaptchaProvider(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.CaptchaProvidersAPI.DeleteCaptchaProvider(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteCaptchaProvider", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/captcha_provider_settings.go b/internal/testing/testutils_resource/pingfederate/captcha_provider_settings.go new file mode 100644 index 00000000..03f72b5e --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/captcha_provider_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateCaptchaProviderSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.CaptchaProviderSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/certificate_ca.go b/internal/testing/testutils_resource/pingfederate/certificate_ca.go new file mode 100644 index 00000000..64371091 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/certificate_ca.go @@ -0,0 +1,77 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateCertificateCa(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createCertificateCa, + DeleteFunc: deleteCertificateCa, + Dependencies: nil, + ExportableResource: resources.CertificateCa(clientInfo), + } +} + +func createCertificateCa(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createCertificateCa(): %v", strArgs) + } + resourceType := strArgs[0] + + filedata, err := testutils.CreateX509Certificate() + if err != nil { + t.Fatalf("Failed to create test pem certificate %s: %v", resourceType, err) + } + + request := clientInfo.PingFederateApiClient.CertificatesCaAPI.ImportTrustedCA(clientInfo.PingFederateContext) + clientStruct := client.X509File{ + FileData: filedata, + Id: utils.Pointer("testx509fileid"), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "ImportTrustedCA", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_ISSUER_DN: *resource.IssuerDN, + testutils_resource.ENUM_SERIAL_NUMBER: *resource.SerialNumber, + } +} + +func deleteCertificateCa(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.CertificatesCaAPI.DeleteTrustedCA(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteTrustedCA", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/certificates_revocation_ocsp_certificate.go b/internal/testing/testutils_resource/pingfederate/certificates_revocation_ocsp_certificate.go new file mode 100644 index 00000000..e7981aa6 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/certificates_revocation_ocsp_certificate.go @@ -0,0 +1,77 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateCertificatesRevocationOcspCertificate(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createCertificatesRevocationOcspCertificate, + DeleteFunc: deleteCertificatesRevocationOcspCertificate, + Dependencies: nil, + ExportableResource: resources.CertificatesRevocationOcspCertificate(clientInfo), + } +} + +func createCertificatesRevocationOcspCertificate(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createCertificatesRevocationOcspCertificate(): %v", strArgs) + } + resourceType := strArgs[0] + + filedata, err := testutils.CreateX509Certificate() + if err != nil { + t.Fatalf("Failed to create test pem certificate %s: %v", resourceType, err) + } + + request := clientInfo.PingFederateApiClient.CertificatesRevocationAPI.ImportOcspCertificate(clientInfo.PingFederateContext) + clientStruct := client.X509File{ + FileData: filedata, + Id: utils.Pointer("testx509fileid"), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "ImportOcspCertificate", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_ISSUER_DN: *resource.IssuerDN, + testutils_resource.ENUM_SERIAL_NUMBER: *resource.SerialNumber, + } +} + +func deleteCertificatesRevocationOcspCertificate(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.CertificatesRevocationAPI.DeleteOcspCertificateById(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteOcspCertificateById", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/certificates_revocation_settings.go b/internal/testing/testutils_resource/pingfederate/certificates_revocation_settings.go new file mode 100644 index 00000000..9bef033a --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/certificates_revocation_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateCertificatesRevocationSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.CertificatesRevocationSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/cluster_settings.go b/internal/testing/testutils_resource/pingfederate/cluster_settings.go new file mode 100644 index 00000000..2666309a --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/cluster_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateClusterSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ClusterSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/configuration_encryption_keys_rotate.go b/internal/testing/testutils_resource/pingfederate/configuration_encryption_keys_rotate.go new file mode 100644 index 00000000..a09ab597 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/configuration_encryption_keys_rotate.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateConfigurationEncryptionKeysRotate(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ConfigurationEncryptionKeysRotate(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/data_store.go b/internal/testing/testutils_resource/pingfederate/data_store.go new file mode 100644 index 00000000..f786a3b5 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/data_store.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateDataStore(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.DataStore(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/default_urls.go b/internal/testing/testutils_resource/pingfederate/default_urls.go new file mode 100644 index 00000000..74a20a16 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/default_urls.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateDefaultUrls(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.DefaultUrls(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/extended_properties.go b/internal/testing/testutils_resource/pingfederate/extended_properties.go new file mode 100644 index 00000000..d0586346 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/extended_properties.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateExtendedProperties(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ExtendedProperties(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/identity_store_provisioner.go b/internal/testing/testutils_resource/pingfederate/identity_store_provisioner.go new file mode 100644 index 00000000..eed26b06 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/identity_store_provisioner.go @@ -0,0 +1,86 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateIdentityStoreProvisioner(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createIdentityStoreProvisioner, + DeleteFunc: deleteIdentityStoreProvisioner, + Dependencies: nil, + ExportableResource: resources.IdentityStoreProvisioner(clientInfo), + } +} + +func createIdentityStoreProvisioner(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createIdentityStoreProvisioner(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.IdentityStoreProvisionersAPI.CreateIdentityStoreProvisioner(clientInfo.PingFederateContext) + clientStruct := client.IdentityStoreProvisioner{ + AttributeContract: &client.IdentityStoreProvisionerAttributeContract{ + CoreAttributes: []client.Attribute{ + { + Name: "username", + }, + }, + }, + GroupAttributeContract: &client.IdentityStoreProvisionerGroupAttributeContract{ + CoreAttributes: []client.GroupAttribute{ + { + Name: "groupname", + }, + }, + }, + Id: "TestISPId", + Name: "TestISPName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.identitystoreprovisioners.sample.SampleIdentityStoreProvisioner", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateIdentityStoreProvisioner", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteIdentityStoreProvisioner(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.IdentityStoreProvisionersAPI.DeleteIdentityStoreProvisioner(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteIdentityStoreProvisioner", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/idp_adapter.go b/internal/testing/testutils_resource/pingfederate/idp_adapter.go new file mode 100644 index 00000000..fb53253b --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/idp_adapter.go @@ -0,0 +1,119 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateIdpAdapter(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createIdpAdapter, + DeleteFunc: deleteIdpAdapter, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederatePasswordCredentialValidator(t, clientInfo), + }, + ExportableResource: resources.IdpAdapter(clientInfo), + } +} + +func createIdpAdapter(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createIdpAdapter(): %v", strArgs) + } + resourceType := strArgs[0] + pcvId := strArgs[1] + + request := clientInfo.PingFederateApiClient.IdpAdaptersAPI.CreateIdpAdapter(clientInfo.PingFederateContext) + clientStruct := client.IdpAdapter{ + Id: "testIdpAdapterId", + Name: "testIdpAdapterName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.adapters.httpbasic.idp.HttpBasicIdpAuthnAdapter", + }, + Configuration: client.PluginConfiguration{ + Tables: []client.ConfigTable{ + { + Name: "Credential Validators", + Rows: []client.ConfigRow{ + { + Fields: []client.ConfigField{ + { + Name: "Password Credential Validator Instance", + Value: utils.Pointer(pcvId), + }, + }, + DefaultRow: utils.Pointer(false), + }, + }, + }, + }, + Fields: []client.ConfigField{ + { + Name: "Realm", + Value: utils.Pointer("testRealmName"), + }, + }, + }, + AttributeContract: &client.IdpAdapterAttributeContract{ + CoreAttributes: []client.IdpAdapterAttribute{ + { + Name: "username", + Masked: utils.Pointer(false), + Pseudonym: utils.Pointer(true), + }, + }, + }, + AttributeMapping: &client.IdpAdapterContractMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "username": { + Source: client.SourceTypeIdKey{ + Type: "ADAPTER", + }, + Value: "username", + }, + }, + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateIdpAdapter", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteIdpAdapter(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.IdpAdaptersAPI.DeleteIdpAdapter(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteIdpAdapter", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/idp_sp_connection.go b/internal/testing/testutils_resource/pingfederate/idp_sp_connection.go new file mode 100644 index 00000000..85defcdb --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/idp_sp_connection.go @@ -0,0 +1,124 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateIdpSpConnection(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createIdpSpConnection, + DeleteFunc: deleteIdpSpConnection, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateKeypairsSigningKey(t, clientInfo), + TestableResource_PingFederateIdpTokenProcessor(t, clientInfo), + }, + ExportableResource: resources.IdpSpConnection(clientInfo), + } +} + +func createIdpSpConnection(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createIdpSpConnection(): %v", strArgs) + } + resourceType := strArgs[0] + signingKeyPairId := strArgs[1] + idpTokenProcessorId := strArgs[2] + + request := clientInfo.PingFederateApiClient.IdpSpConnectionsAPI.CreateSpConnection(clientInfo.PingFederateContext) + clientStruct := client.SpConnection{ + Connection: client.Connection{ + Active: utils.Pointer(true), + Credentials: &client.ConnectionCredentials{ + SigningSettings: &client.SigningSettings{ + Algorithm: utils.Pointer("SHA256withRSA"), + IncludeCertInSignature: utils.Pointer(false), + IncludeRawKeyInSignature: utils.Pointer(false), + SigningKeyPairRef: client.ResourceLink{ + Id: signingKeyPairId, + }, + }, + }, + EntityId: "TestEntityId", + Id: utils.Pointer("TestSpConnectionId"), + LoggingMode: utils.Pointer("STANDARD"), + Name: "TestSpConnectionName", + Type: utils.Pointer("SP"), + }, + WsTrust: &client.SpWsTrust{ + AttributeContract: client.SpWsTrustAttributeContract{ + CoreAttributes: []client.SpWsTrustAttribute{ + { + Name: "TOKEN_SUBJECT", + }, + }, + }, + DefaultTokenType: utils.Pointer("SAML20"), + EncryptSaml2Assertion: utils.Pointer(false), + GenerateKey: utils.Pointer(false), + MinutesBefore: utils.Pointer(int64(5)), + MinutesAfter: utils.Pointer(int64(30)), + OAuthAssertionProfiles: utils.Pointer(false), + PartnerServiceIds: []string{ + "TestIdentifier", + }, + TokenProcessorMappings: []client.IdpTokenProcessorMapping{ + { + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "TOKEN_SUBJECT": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + IdpTokenProcessorRef: client.ResourceLink{ + Id: idpTokenProcessorId, + }, + }, + }, + }, + ConnectionTargetType: utils.Pointer("STANDARD"), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateSpConnection", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteIdpSpConnection(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.IdpSpConnectionsAPI.DeleteSpConnection(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteSpConnection", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/idp_sts_request_parameters_contract.go b/internal/testing/testutils_resource/pingfederate/idp_sts_request_parameters_contract.go new file mode 100644 index 00000000..6e8ef186 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/idp_sts_request_parameters_contract.go @@ -0,0 +1,72 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateIdpStsRequestParametersContract(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createIdpStsRequestParametersContract, + DeleteFunc: deleteIdpStsRequestParametersContract, + Dependencies: nil, + ExportableResource: resources.IdpStsRequestParametersContract(clientInfo), + } +} + +func createIdpStsRequestParametersContract(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createIdpStsRequestParametersContract(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.IdpStsRequestParametersContractsAPI.CreateStsRequestParamContract(clientInfo.PingFederateContext) + clientStruct := client.StsRequestParametersContract{ + Id: "TestContractId", + Name: "TestContractName", + Parameters: []string{ + "TestParamName", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateStsRequestParamContract", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteIdpStsRequestParametersContract(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.IdpStsRequestParametersContractsAPI.DeleteStsRequestParamContractById(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteStsRequestParamContractById", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/idp_to_sp_adapter_mapping.go b/internal/testing/testutils_resource/pingfederate/idp_to_sp_adapter_mapping.go new file mode 100644 index 00000000..0168f3a3 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/idp_to_sp_adapter_mapping.go @@ -0,0 +1,84 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateIdpToSpAdapterMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createIdpToSpAdapterMapping, + DeleteFunc: deleteIdpToSpAdapterMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateIdpAdapter(t, clientInfo), + TestableResource_PingFederateSpAdapter(t, clientInfo), + }, + ExportableResource: resources.IdpToSpAdapterMapping(clientInfo), + } +} + +func createIdpToSpAdapterMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createIdpToSpAdapterMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testIdpAdapterId := strArgs[1] + testSpAdapterId := strArgs[2] + + request := clientInfo.PingFederateApiClient.IdpToSpAdapterMappingAPI.CreateIdpToSpAdapterMapping(clientInfo.PingFederateContext) + clientStruct := client.IdpToSpAdapterMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "subject": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + Id: utils.Pointer(testIdpAdapterId + "|" + testSpAdapterId), + SourceId: testIdpAdapterId, + TargetId: testSpAdapterId, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateIdpToSpAdapterMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_SOURCE_ID: resource.SourceId, + testutils_resource.ENUM_TARGET_ID: resource.TargetId, + } +} + +func deleteIdpToSpAdapterMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.IdpToSpAdapterMappingAPI.DeleteIdpToSpAdapterMappingsById(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteIdpToSpAdapterMappingsById", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/idp_token_processor.go b/internal/testing/testutils_resource/pingfederate/idp_token_processor.go new file mode 100644 index 00000000..fc83cbb9 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/idp_token_processor.go @@ -0,0 +1,103 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateIdpTokenProcessor(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createIdpTokenProcessor, + DeleteFunc: deleteIdpTokenProcessor, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederatePasswordCredentialValidator(t, clientInfo), + }, + ExportableResource: resources.IdpTokenProcessor(clientInfo), + } +} + +func createIdpTokenProcessor(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createIdpTokenProcessor(): %v", strArgs) + } + resourceType := strArgs[0] + testPCVId := strArgs[1] + + request := clientInfo.PingFederateApiClient.IdpTokenProcessorsAPI.CreateTokenProcessor(clientInfo.PingFederateContext) + clientStruct := client.TokenProcessor{ + AttributeContract: &client.TokenProcessorAttributeContract{ + CoreAttributes: []client.TokenProcessorAttribute{ + { + Masked: utils.Pointer(false), + Name: "username", + }, + }, + MaskOgnlValues: utils.Pointer(false), + }, + Configuration: client.PluginConfiguration{ + Tables: []client.ConfigTable{ + { + Name: "Credential Validators", + Rows: []client.ConfigRow{ + { + DefaultRow: utils.Pointer(false), + Fields: []client.ConfigField{ + { + Name: "Password Credential Validator Instance", + Value: &testPCVId, + }, + }, + }, + }, + }, + }, + }, + Id: "TestIdpTokenProcessorId", + Name: "TestIdpTokenProcessorName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.pf.tokenprocessors.username.UsernameTokenProcessor", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateTokenProcessor", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteIdpTokenProcessor(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.IdpTokenProcessorsAPI.DeleteTokenProcessor(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteTokenProcessor", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/incoming_proxy_settings.go b/internal/testing/testutils_resource/pingfederate/incoming_proxy_settings.go new file mode 100644 index 00000000..a1e8ccf8 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/incoming_proxy_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateIncomingProxySettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.IncomingProxySettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/kerberos_realm.go b/internal/testing/testutils_resource/pingfederate/kerberos_realm.go new file mode 100644 index 00000000..66d15ad5 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/kerberos_realm.go @@ -0,0 +1,74 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateKerberosRealm(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createKerberosRealm, + DeleteFunc: deleteKerberosRealm, + Dependencies: nil, + ExportableResource: resources.KerberosRealm(clientInfo), + } +} + +func createKerberosRealm(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createKerberosRealm(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.KerberosRealmsAPI.CreateKerberosRealm(clientInfo.PingFederateContext) + clientStruct := client.KerberosRealm{ + ConnectionType: utils.Pointer("LOCAL_VALIDATION"), + Id: utils.Pointer("TestKerberosRealmId"), + KerberosPassword: utils.Pointer("TestPassword1"), + KerberosRealmName: "TestKerberosRealmName", + KerberosUsername: utils.Pointer("TestKerberosUser"), + RetainPreviousKeysOnPasswordChange: utils.Pointer(true), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateKerberosRealm", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.KerberosRealmName, + } +} + +func deleteKerberosRealm(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.KerberosRealmsAPI.DeleteKerberosRealm(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteKerberosRealm", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/kerberos_realm_settings.go b/internal/testing/testutils_resource/pingfederate/kerberos_realm_settings.go new file mode 100644 index 00000000..870b1f80 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/kerberos_realm_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateKerberosRealmSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.KerberosRealmSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/keypairs_oauth_openid_connect.go b/internal/testing/testutils_resource/pingfederate/keypairs_oauth_openid_connect.go new file mode 100644 index 00000000..9948b971 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/keypairs_oauth_openid_connect.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateKeypairsOauthOpenidConnect(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.KeypairsOauthOpenidConnect(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/keypairs_oauth_openid_connect_additional_key_set.go b/internal/testing/testutils_resource/pingfederate/keypairs_oauth_openid_connect_additional_key_set.go new file mode 100644 index 00000000..8e4c16c6 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/keypairs_oauth_openid_connect_additional_key_set.go @@ -0,0 +1,85 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateKeypairsOauthOpenidConnectAdditionalKeySet(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createKeypairsOauthOpenidConnectAdditionalKeySet, + DeleteFunc: deleteKeypairsOauthOpenidConnectAdditionalKeySet, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateOauthIssuer(t, clientInfo), + TestableResource_PingFederateKeypairsSigningKey(t, clientInfo), + }, + ExportableResource: resources.KeypairsOauthOpenidConnectAdditionalKeySet(clientInfo), + } +} + +func createKeypairsOauthOpenidConnectAdditionalKeySet(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createKeypairsOauthOpenidConnectAdditionalKeySet(): %v", strArgs) + } + resourceType := strArgs[0] + testOauthIssuerId := strArgs[1] + testKeyPairId := strArgs[2] + + request := clientInfo.PingFederateApiClient.KeyPairsOauthOpenIdConnectAPI.CreateKeySet(clientInfo.PingFederateContext) + clientStruct := client.AdditionalKeySet{ + Id: utils.Pointer("TestAdditionalKeySetId"), + Issuers: []client.ResourceLink{ + { + Id: testOauthIssuerId, + }, + }, + Name: "TestAdditionalKeySetName", + SigningKeys: client.SigningKeys{ + RsaActiveCertRef: &client.ResourceLink{ + Id: testKeyPairId, + }, + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateKeySet", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteKeypairsOauthOpenidConnectAdditionalKeySet(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.KeyPairsOauthOpenIdConnectAPI.DeleteKeySet(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteKeySet", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/keypairs_signing_key.go b/internal/testing/testutils_resource/pingfederate/keypairs_signing_key.go new file mode 100644 index 00000000..7b69e8fe --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/keypairs_signing_key.go @@ -0,0 +1,79 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateKeypairsSigningKey(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createKeypairsSigningKey, + DeleteFunc: deleteKeypairsSigningKey, + Dependencies: nil, + ExportableResource: resources.IdpAdapter(clientInfo), + } +} + +func createKeypairsSigningKey(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createIdpAdapter(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.KeyPairsSigningAPI.CreateSigningKeyPair(clientInfo.PingFederateContext) + result := client.NewKeyPairSettings{ + City: utils.Pointer("Denver"), + CommonName: "*.pingidentity.com", + Country: "US", + Id: utils.Pointer("testkeypairid"), + KeyAlgorithm: "RSA", + KeySize: utils.Pointer(int64(2048)), + Organization: "Ping Identity Corporation", + SignatureAlgorithm: utils.Pointer("SHA256withRSA"), + State: utils.Pointer("CO"), + ValidDays: 365, + } + + request = request.Body(result) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateKeyPair", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_ISSUER_DN: *resource.IssuerDN, + testutils_resource.ENUM_SERIAL_NUMBER: *resource.SerialNumber, + } +} + +func deleteKeypairsSigningKey(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.KeyPairsSigningAPI.DeleteSigningKeyPair(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteSigningKeyPair", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/keypairs_signing_key_rotation_settings.go b/internal/testing/testutils_resource/pingfederate/keypairs_signing_key_rotation_settings.go new file mode 100644 index 00000000..546ab1d8 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/keypairs_signing_key_rotation_settings.go @@ -0,0 +1,74 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateKeypairsSigningKeyRotationSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createKeypairsSigningKeyRotationSettings, + DeleteFunc: deleteKeypairsSigningKeyRotationSettings, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateKeypairsSigningKey(t, clientInfo), + }, + ExportableResource: resources.KeypairsSigningKeyRotationSettings(clientInfo), + } +} + +func createKeypairsSigningKeyRotationSettings(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createKeypairsSigningKeyRotationSettings(): %v", strArgs) + } + resourceType := strArgs[0] + keyPairId := strArgs[1] + + request := clientInfo.PingFederateApiClient.KeyPairsSigningAPI.UpdateRotationSettings(clientInfo.PingFederateContext, keyPairId) + clientStruct := client.KeyPairRotationSettings{ + ActivationBufferDays: 10, + CreationBufferDays: 10, + Id: utils.Pointer("TestRotationSettingsId"), + } + + request = request.Body(clientStruct) + + _, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "UpdateRotationSettings", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + // Deletion of this resource is referenced by the keyPairId + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: keyPairId, + } +} + +func deleteKeypairsSigningKeyRotationSettings(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.KeyPairsSigningAPI.DeleteKeyPairRotationSettings(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteKeyPairRotationSettings", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/keypairs_ssl_server_settings.go b/internal/testing/testutils_resource/pingfederate/keypairs_ssl_server_settings.go new file mode 100644 index 00000000..e78c51b8 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/keypairs_ssl_server_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateKeypairsSslServerSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.KeypairsSslServerSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/local_identity_profile.go b/internal/testing/testutils_resource/pingfederate/local_identity_profile.go new file mode 100644 index 00000000..000eebc5 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/local_identity_profile.go @@ -0,0 +1,76 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateLocalIdentityProfile(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createLocalIdentityProfile, + DeleteFunc: deleteLocalIdentityProfile, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateAuthenticationPolicyContract(t, clientInfo), + }, + ExportableResource: resources.LocalIdentityProfile(clientInfo), + } +} + +func createLocalIdentityProfile(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createLocalIdentityProfile(): %v", strArgs) + } + resourceType := strArgs[0] + testApcId := strArgs[1] + + request := clientInfo.PingFederateApiClient.LocalIdentityIdentityProfilesAPI.CreateIdentityProfile(clientInfo.PingFederateContext) + clientStruct := client.LocalIdentityProfile{ + ApcId: client.ResourceLink{ + Id: testApcId, + }, + Id: utils.Pointer("TestLocalIdentityProfileId"), + Name: "TestLocalIdentityProfileName", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateIdentityProfile", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteLocalIdentityProfile(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.LocalIdentityIdentityProfilesAPI.DeleteIdentityProfile(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteIdentityProfile", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/metadata_url.go b/internal/testing/testutils_resource/pingfederate/metadata_url.go new file mode 100644 index 00000000..ca7d5bad --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/metadata_url.go @@ -0,0 +1,71 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateMetadataUrl(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createMetadataUrl, + DeleteFunc: deleteMetadataUrl, + Dependencies: nil, + ExportableResource: resources.MetadataUrl(clientInfo), + } +} + +func createMetadataUrl(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createMetadataUrl(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.MetadataUrlsAPI.AddMetadataUrl(clientInfo.PingFederateContext) + clientStruct := client.MetadataUrl{ + Id: utils.Pointer("TestMetadataUrlId"), + Name: "TestMetadataUrlName", + Url: "https://www.example.com", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "AddMetadataUrl", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteMetadataUrl(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.MetadataUrlsAPI.DeleteMetadataUrl(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteMetadataUrl", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/notification_publisher.go b/internal/testing/testutils_resource/pingfederate/notification_publisher.go new file mode 100644 index 00000000..2f8fc10b --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/notification_publisher.go @@ -0,0 +1,85 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateNotificationPublisher(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createNotificationPublisher, + DeleteFunc: deleteNotificationPublisher, + Dependencies: nil, + ExportableResource: resources.NotificationPublisher(clientInfo), + } +} + +func createNotificationPublisher(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createNotificationPublisher(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.NotificationPublishersAPI.CreateNotificationPublisher(clientInfo.PingFederateContext) + clientStruct := client.NotificationPublisher{ + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "From Address", + Value: utils.Pointer("test@example.com"), + }, + { + Name: "Email Server", + Value: utils.Pointer("example.com"), + }, + }, + }, + Id: "TestNotificationPublisherId", + Name: "TestNotificationPublisherName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.email.SmtpNotificationPlugin", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateNotificationPublisher", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteNotificationPublisher(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.NotificationPublishersAPI.DeleteNotificationPublisher(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteNotificationPublisher", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/notification_publisher_settings.go b/internal/testing/testutils_resource/pingfederate/notification_publisher_settings.go new file mode 100644 index 00000000..e91ddb3d --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/notification_publisher_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateNotificationPublisherSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.NotificationPublisherSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_access_token_manager.go b/internal/testing/testutils_resource/pingfederate/oauth_access_token_manager.go new file mode 100644 index 00000000..11fc00e9 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_access_token_manager.go @@ -0,0 +1,116 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthAccessTokenManager(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthAccessTokenManager, + DeleteFunc: deleteOauthAccessTokenManager, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateKeypairsSigningKey(t, clientInfo), + }, + ExportableResource: resources.OauthAccessTokenManager(clientInfo), + } +} + +func createOauthAccessTokenManager(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOauthAccessTokenManager(): %v", strArgs) + } + resourceType := strArgs[0] + testKeyPairId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthAccessTokenManagersAPI.CreateTokenManager(clientInfo.PingFederateContext) + clientStruct := client.AccessTokenManager{ + AttributeContract: &client.AccessTokenAttributeContract{ + ExtendedAttributes: []client.AccessTokenAttribute{ + { + MultiValued: utils.Pointer(false), + Name: "testAttribute", + }, + }, + }, + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "Active Signing Certificate Key ID", + Value: utils.Pointer("testKeyId"), + }, + { + Name: "JWS Algorithm", + Value: utils.Pointer("RS256"), + }, + }, + Tables: []client.ConfigTable{ + { + Name: "Certificates", + Rows: []client.ConfigRow{ + { + DefaultRow: utils.Pointer(false), + Fields: []client.ConfigField{ + { + Name: "Key ID", + Value: utils.Pointer("testKeyId"), + }, + { + Name: "Certificate", + Value: &testKeyPairId, + }, + }, + }, + }, + }, + }, + }, + Id: "TestOauthAccessTokenManagerId", + Name: "TestOauthAccessTokenManagerName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.pf.access.token.management.plugins.JwtBearerAccessTokenManagementPlugin", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateTokenManager", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteOauthAccessTokenManager(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthAccessTokenManagersAPI.DeleteTokenManager(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteTokenManager", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_access_token_manager_settings.go b/internal/testing/testutils_resource/pingfederate/oauth_access_token_manager_settings.go new file mode 100644 index 00000000..8c690eb9 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_access_token_manager_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateOauthAccessTokenManagerSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.OauthAccessTokenManagerSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_access_token_mapping.go b/internal/testing/testutils_resource/pingfederate/oauth_access_token_mapping.go new file mode 100644 index 00000000..3eb2dc3b --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_access_token_mapping.go @@ -0,0 +1,85 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthAccessTokenMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthAccessTokenMapping, + DeleteFunc: deleteOauthAccessTokenMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateOauthAccessTokenManager(t, clientInfo), + }, + ExportableResource: resources.OauthAccessTokenMapping(clientInfo), + } +} + +func createOauthAccessTokenMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOauthAccessTokenMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testTokenManagerId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthAccessTokenMappingsAPI.CreateMapping(clientInfo.PingFederateContext) + clientStruct := client.AccessTokenMapping{ + AccessTokenManagerRef: client.ResourceLink{ + Id: testTokenManagerId, + }, + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "testAttribute": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + Context: client.AccessTokenMappingContext{ + Type: "DEFAULT", + }, + Id: utils.Pointer("default|" + testTokenManagerId), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_CONTEXT_TYPE: resource.Context.Type, + } +} + +func deleteOauthAccessTokenMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthAccessTokenMappingsAPI.DeleteMapping(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_authentication_policy_contract_mapping.go b/internal/testing/testutils_resource/pingfederate/oauth_authentication_policy_contract_mapping.go new file mode 100644 index 00000000..029fb5b3 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_authentication_policy_contract_mapping.go @@ -0,0 +1,85 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthAuthenticationPolicyContractMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthAuthenticationPolicyContractMapping, + DeleteFunc: deleteOauthAuthenticationPolicyContractMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateAuthenticationPolicyContract(t, clientInfo), + }, + ExportableResource: resources.OauthAuthenticationPolicyContractMapping(clientInfo), + } +} + +func createOauthAuthenticationPolicyContractMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOauthAuthenticationPolicyContractMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testApcId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthAuthenticationPolicyContractMappingsAPI.CreateApcMapping(clientInfo.PingFederateContext) + clientStruct := client.ApcToPersistentGrantMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "USER_NAME": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + "USER_KEY": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + AuthenticationPolicyContractRef: client.ResourceLink{ + Id: testApcId, + }, + Id: "testApcToPersistentGrantMappingId", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateApcMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + } +} + +func deleteOauthAuthenticationPolicyContractMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthAuthenticationPolicyContractMappingsAPI.DeleteApcMapping(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteApcMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_ciba_server_policy_request_policy.go b/internal/testing/testutils_resource/pingfederate/oauth_ciba_server_policy_request_policy.go new file mode 100644 index 00000000..41dc0795 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_ciba_server_policy_request_policy.go @@ -0,0 +1,110 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthCibaServerPolicyRequestPolicy(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthCibaServerPolicyRequestPolicy, + DeleteFunc: deleteOauthCibaServerPolicyRequestPolicy, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateOutOfBandAuthPlugins(t, clientInfo), + }, + ExportableResource: resources.OauthCibaServerPolicyRequestPolicy(clientInfo), + } +} + +func createOauthCibaServerPolicyRequestPolicy(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOauthCibaServerPolicyRequestPolicy(): %v", strArgs) + } + resourceType := strArgs[0] + testAuthenticatorId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthCibaServerPolicyAPI.CreateCibaServerPolicy(clientInfo.PingFederateContext) + clientStruct := client.RequestPolicy{ + AllowUnsignedLoginHintToken: utils.Pointer(false), + AuthenticatorRef: client.ResourceLink{ + Id: testAuthenticatorId, + }, + Id: "TestRequestPolicyId", + IdentityHintContract: client.IdentityHintContract{ + CoreAttributes: []client.IdentityHintAttribute{ + { + Name: "IDENTITY_HINT_SUBJECT", + }, + }, + }, + IdentityHintContractFulfillment: &client.AttributeMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "IDENTITY_HINT_SUBJECT": { + Source: client.SourceTypeIdKey{ + Type: "REQUEST", + }, + Value: "IDENTITY_HINT_SUBJECT", + }, + }, + }, + IdentityHintMapping: &client.AttributeMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "subject": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + "USER_KEY": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + }, + Name: "TestRequestPolicyName", + RequireTokenForIdentityHint: utils.Pointer(false), + TransactionLifetime: utils.Pointer(int64(120)), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateCibaServerPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteOauthCibaServerPolicyRequestPolicy(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthCibaServerPolicyAPI.DeleteCibaServerPolicy(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteCibaServerPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_ciba_server_policy_settings.go b/internal/testing/testutils_resource/pingfederate/oauth_ciba_server_policy_settings.go new file mode 100644 index 00000000..73128929 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_ciba_server_policy_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateOauthCibaServerPolicySettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.OauthCibaServerPolicySettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_client.go b/internal/testing/testutils_resource/pingfederate/oauth_client.go new file mode 100644 index 00000000..407e6666 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_client.go @@ -0,0 +1,75 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthClient(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthClient, + DeleteFunc: deleteOauthClient, + Dependencies: nil, + ExportableResource: resources.OauthClient(clientInfo), + } +} + +func createOauthClient(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createOauthClient(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.OauthClientsAPI.CreateOauthClient(clientInfo.PingFederateContext) + clientStruct := client.Client{ + ClientId: "TestClientId", + GrantTypes: []string{ + "AUTHORIZATION_CODE", + }, + Name: "TestClientName", + RedirectUris: []string{ + "https://www.example.com", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateOauthClient", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.ClientId, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteOauthClient(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthClientsAPI.DeleteOauthClient(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteOauthClient", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_client_registration_policy.go b/internal/testing/testutils_resource/pingfederate/oauth_client_registration_policy.go new file mode 100644 index 00000000..4804fddc --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_client_registration_policy.go @@ -0,0 +1,72 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthClientRegistrationPolicy(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthClientRegistrationPolicy, + DeleteFunc: deleteOauthClientRegistrationPolicy, + Dependencies: nil, + ExportableResource: resources.OauthClientRegistrationPolicy(clientInfo), + } +} + +func createOauthClientRegistrationPolicy(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createOauthClientRegistrationPolicy(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.OauthClientRegistrationPoliciesAPI.CreateDynamicClientRegistrationPolicy(clientInfo.PingFederateContext) + clientStruct := client.ClientRegistrationPolicy{ + Id: "TestClientRegistrationPolicyId", + Name: "TestClientRegistrationPolicyName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.pf.client.registration.ResponseTypesConstraintsPlugin", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateDynamicClientRegistrationPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteOauthClientRegistrationPolicy(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthClientRegistrationPoliciesAPI.DeleteDynamicClientRegistrationPolicy(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteDynamicClientRegistrationPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_client_settings.go b/internal/testing/testutils_resource/pingfederate/oauth_client_settings.go new file mode 100644 index 00000000..3d250c8b --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_client_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateOauthClientSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.OauthClientSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_idp_adapter_mapping.go b/internal/testing/testutils_resource/pingfederate/oauth_idp_adapter_mapping.go new file mode 100644 index 00000000..81749e56 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_idp_adapter_mapping.go @@ -0,0 +1,85 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthIdpAdapterMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthIdpAdapterMapping, + DeleteFunc: deleteOauthIdpAdapterMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateIdpAdapter(t, clientInfo), + }, + ExportableResource: resources.OauthIdpAdapterMapping(clientInfo), + } +} + +func createOauthIdpAdapterMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOauthIdpAdapterMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testIdpAdapterId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthIdpAdapterMappingsAPI.CreateIdpAdapterMapping(clientInfo.PingFederateContext) + clientStruct := client.IdpAdapterMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "USER_NAME": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + "USER_KEY": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + Id: testIdpAdapterId, + IdpAdapterRef: &client.ResourceLink{ + Id: testIdpAdapterId, + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateIdpAdapterMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + } +} + +func deleteOauthIdpAdapterMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthIdpAdapterMappingsAPI.DeleteIdpAdapterMapping(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteIdpAdapterMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_issuer.go b/internal/testing/testutils_resource/pingfederate/oauth_issuer.go new file mode 100644 index 00000000..919a7b78 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_issuer.go @@ -0,0 +1,71 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthIssuer(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthIssuer, + DeleteFunc: deleteOauthIssuer, + Dependencies: nil, + ExportableResource: resources.OauthIssuer(clientInfo), + } +} + +func createOauthIssuer(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createOauthIssuer(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.OauthIssuersAPI.AddOauthIssuer(clientInfo.PingFederateContext) + clientStruct := client.Issuer{ + Host: "TestIssuerHost", + Id: utils.Pointer("TestIssuerId"), + Name: "TestIssuerName", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "AddOauthIssuer", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteOauthIssuer(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthIssuersAPI.DeleteOauthIssuer(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteOauthIssuer", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_server_settings.go b/internal/testing/testutils_resource/pingfederate/oauth_server_settings.go new file mode 100644 index 00000000..88d7c1b1 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_server_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateOauthServerSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.OauthServerSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_generator_settings.go b/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_generator_settings.go new file mode 100644 index 00000000..5ca36db9 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_generator_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateOauthTokenExchangeGeneratorSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.OauthTokenExchangeGeneratorSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_processor_policy.go b/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_processor_policy.go new file mode 100644 index 00000000..3509f9a8 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_processor_policy.go @@ -0,0 +1,94 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthTokenExchangeProcessorPolicy(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthTokenExchangeProcessorPolicy, + DeleteFunc: deleteOauthTokenExchangeProcessorPolicy, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateIdpTokenProcessor(t, clientInfo), + }, + ExportableResource: nil, + } +} + +func createOauthTokenExchangeProcessorPolicy(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOauthTokenExchangeProcessorPolicy(): %v", strArgs) + } + resourceType := strArgs[0] + testTokenProcessorId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthTokenExchangeProcessorAPI.CreateOauthTokenExchangeProcessorPolicy(clientInfo.PingFederateContext) + result := client.TokenExchangeProcessorPolicy{ + ActorTokenRequired: utils.Pointer(false), + AttributeContract: client.TokenExchangeProcessorAttributeContract{ + CoreAttributes: []client.TokenExchangeProcessorAttribute{ + { + Name: "subject", + }, + }, + }, + Id: "TestProcessorPolicyId", + Name: "TestProcessorPolicyName", + ProcessorMappings: []client.TokenExchangeProcessorMapping{ + { + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "subject": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + SubjectTokenType: "TestTokenType", + SubjectTokenProcessor: client.ResourceLink{ + Id: testTokenProcessorId, + }, + }, + }, + } + + request = request.Body(result) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateOauthTokenExchangeProcessorPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + } +} + +func deleteOauthTokenExchangeProcessorPolicy(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthTokenExchangeProcessorAPI.DeleteOauthTokenExchangeProcessorPolicyy(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteOauthTokenExchangeProcessorPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_token_generator_mapping.go b/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_token_generator_mapping.go new file mode 100644 index 00000000..f82dd41f --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/oauth_token_exchange_token_generator_mapping.go @@ -0,0 +1,84 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOauthTokenExchangeTokenGeneratorMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOauthTokenExchangeTokenGeneratorMapping, + DeleteFunc: deleteOauthTokenExchangeTokenGeneratorMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateOauthTokenExchangeProcessorPolicy(t, clientInfo), + TestableResource_PingFederateSpTokenGenerator(t, clientInfo), + }, + ExportableResource: resources.OauthTokenExchangeTokenGeneratorMapping(clientInfo), + } +} + +func createOauthTokenExchangeTokenGeneratorMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createOauthTokenExchangeTokenGeneratorMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testProcessorPolicyId := strArgs[1] + testTokenGeneratorId := strArgs[2] + + request := clientInfo.PingFederateApiClient.OauthTokenExchangeTokenGeneratorMappingsAPI.CreateTokenGeneratorMapping(clientInfo.PingFederateContext) + clientStruct := client.ProcessorPolicyToGeneratorMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "SAML_SUBJECT": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + Id: utils.Pointer(testProcessorPolicyId + "|" + testTokenGeneratorId), + SourceId: testProcessorPolicyId, + TargetId: testTokenGeneratorId, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateTokenGeneratorMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_SOURCE_ID: testProcessorPolicyId, + testutils_resource.ENUM_TARGET_ID: testTokenGeneratorId, + } +} + +func deleteOauthTokenExchangeTokenGeneratorMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthTokenExchangeTokenGeneratorMappingsAPI.DeleteTokenGeneratorMappingById(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteTokenGeneratorMappingById", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/openid_connect_policy.go b/internal/testing/testutils_resource/pingfederate/openid_connect_policy.go new file mode 100644 index 00000000..a520c9fd --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/openid_connect_policy.go @@ -0,0 +1,93 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOpenidConnectPolicy(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOpenidConnectPolicy, + DeleteFunc: deleteOpenidConnectPolicy, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateOauthAccessTokenManager(t, clientInfo), + }, + ExportableResource: resources.OpenidConnectPolicy(clientInfo), + } +} + +func createOpenidConnectPolicy(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createOpenidConnectPolicy(): %v", strArgs) + } + resourceType := strArgs[0] + testAccessTokenManagerId := strArgs[1] + + request := clientInfo.PingFederateApiClient.OauthOpenIdConnectAPI.CreateOIDCPolicy(clientInfo.PingFederateContext) + clientStruct := client.OpenIdConnectPolicy{ + AccessTokenManagerRef: client.ResourceLink{ + Id: testAccessTokenManagerId, + }, + AttributeContract: client.OpenIdConnectAttributeContract{ + CoreAttributes: []client.OpenIdConnectAttribute{ + { + MultiValued: utils.Pointer(false), + Name: "sub", + }, + }, + }, + AttributeMapping: client.AttributeMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "sub": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + }, + Id: "TestOIDCPolicyId", + Name: "TestOIDCPolicyName", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateOIDCPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteOpenidConnectPolicy(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthOpenIdConnectAPI.DeleteOIDCPolicy(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteOIDCPolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/openid_connect_settings.go b/internal/testing/testutils_resource/pingfederate/openid_connect_settings.go new file mode 100644 index 00000000..2765177a --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/openid_connect_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateOpenidConnectSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.OpenidConnectSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/out_of_band_auth_plugins.go b/internal/testing/testutils_resource/pingfederate/out_of_band_auth_plugins.go new file mode 100644 index 00000000..7bb970c1 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/out_of_band_auth_plugins.go @@ -0,0 +1,96 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingone" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateOutOfBandAuthPlugins(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createOutOfBandAuthPlugins, + DeleteFunc: deleteOutOfBandAuthPlugins, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederatePingoneConnection(t, clientInfo), + pingone.TestableResource_PingOneDeviceAuthApplication(t, clientInfo), + }, + ExportableResource: nil, + } +} + +func createOutOfBandAuthPlugins(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createOutOfBandAuthPlugins(): %v", strArgs) + } + resourceType := strArgs[0] + testPingOneConnectionId := strArgs[1] + testDeviceAuthApplicationId := strArgs[2] + + request := clientInfo.PingFederateApiClient.OauthOutOfBandAuthPluginsAPI.CreateOOBAuthenticator(clientInfo.PingFederateContext) + result := client.OutOfBandAuthenticator{ + AttributeContract: &client.OutOfBandAuthAttributeContract{ + CoreAttributes: []client.OutOfBandAuthAttribute{ + { + Name: "subject", + }, + }, + }, + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "PingOne Environment", + Value: utils.Pointer(testPingOneConnectionId + "|" + clientInfo.PingOneExportEnvironmentID), + }, + { + Name: "Application", + Value: &testDeviceAuthApplicationId, + }, + }, + }, + Id: "TestOOBAuthenticatorId", + Name: "TestOOBAuthenticatorName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.oobauth.pingone.mfa.PingOneMfaCibaAuthenticator", + }, + } + + request = request.Body(result) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateOOBAuthenticator", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + } +} + +func deleteOutOfBandAuthPlugins(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.OauthOutOfBandAuthPluginsAPI.DeleteOOBAuthenticator(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteOOBAuthenticator", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/password_credential_validator.go b/internal/testing/testutils_resource/pingfederate/password_credential_validator.go new file mode 100644 index 00000000..785dd748 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/password_credential_validator.go @@ -0,0 +1,103 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederatePasswordCredentialValidator(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createPasswordCredentialValidator, + DeleteFunc: deletePasswordCredentialValidator, + Dependencies: nil, + ExportableResource: resources.PasswordCredentialValidator(clientInfo), + } +} + +func createPasswordCredentialValidator(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createPasswordCredentialValidator(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.PasswordCredentialValidatorsAPI.CreatePasswordCredentialValidator(clientInfo.PingFederateContext) + clientStruct := client.PasswordCredentialValidator{ + Configuration: client.PluginConfiguration{ + Tables: []client.ConfigTable{ + { + Name: "Users", + Rows: []client.ConfigRow{ + { + DefaultRow: utils.Pointer(false), + Fields: []client.ConfigField{ + { + Name: "Username", + Value: utils.Pointer("TestUsername"), + }, + { + Name: "Password", + Value: utils.Pointer("TestPassword1"), + }, + { + Name: "Confirm Password", + Value: utils.Pointer("TestPassword1"), + }, + { + Name: "Relax Password Requirements", + Value: utils.Pointer("false"), + }, + }, + }, + }, + }, + }, + }, + Id: "TestPCVId", + Name: "TestPCVName", + PluginDescriptorRef: client.ResourceLink{ + Id: "org.sourceid.saml20.domain.SimpleUsernamePasswordCredentialValidator", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreatePasswordCredentialValidator", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deletePasswordCredentialValidator(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.PasswordCredentialValidatorsAPI.DeletePasswordCredentialValidator(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeletePasswordCredentialValidator", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/pingone_connection.go b/internal/testing/testutils_resource/pingfederate/pingone_connection.go new file mode 100644 index 00000000..6021e5cf --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/pingone_connection.go @@ -0,0 +1,75 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource/pingone" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederatePingoneConnection(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createPingoneConnection, + DeleteFunc: deletePingoneConnection, + Dependencies: []*testutils_resource.TestableResource{ + pingone.TestableResource_PingOnePingFederateGatewayCredential(t, clientInfo), + }, + ExportableResource: resources.PingoneConnection(clientInfo), + } +} + +func createPingoneConnection(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createPingoneConnection(): %v", strArgs) + } + resourceType := strArgs[0] + credential := strArgs[1] + + request := clientInfo.PingFederateApiClient.PingOneConnectionsAPI.CreatePingOneConnection(clientInfo.PingFederateContext) + clientStruct := client.PingOneConnection{ + Credential: &credential, + Id: utils.Pointer("TestPingoneConnectionId"), + Name: "TestPingoneConnectionName", + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreatePingOneConnection", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deletePingoneConnection(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.PingOneConnectionsAPI.DeletePingOneConnection(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeletePingOneConnection", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/protocol_metadata_lifetime_settings.go b/internal/testing/testutils_resource/pingfederate/protocol_metadata_lifetime_settings.go new file mode 100644 index 00000000..d83d5fa2 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/protocol_metadata_lifetime_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateProtocolMetadataLifetimeSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ProtocolMetadataLifetimeSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/protocol_metadata_signing_settings.go b/internal/testing/testutils_resource/pingfederate/protocol_metadata_signing_settings.go new file mode 100644 index 00000000..17992aed --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/protocol_metadata_signing_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateProtocolMetadataSigningSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ProtocolMetadataSigningSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/redirect_validation.go b/internal/testing/testutils_resource/pingfederate/redirect_validation.go new file mode 100644 index 00000000..071c0fa9 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/redirect_validation.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateRedirectValidation(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.RedirectValidation(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/secret_manager.go b/internal/testing/testutils_resource/pingfederate/secret_manager.go new file mode 100644 index 00000000..9ddb2e57 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/secret_manager.go @@ -0,0 +1,81 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateSecretManager(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createSecretManager, + DeleteFunc: deleteSecretManager, + Dependencies: nil, + ExportableResource: resources.SecretManager(clientInfo), + } +} + +func createSecretManager(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createSecretManager(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.SecretManagersAPI.CreateSecretManager(clientInfo.PingFederateContext) + clientStruct := client.SecretManager{ + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "APP ID", + Value: utils.Pointer("TestAppId"), + }, + }, + }, + Id: "TestSecretManagerId", + Name: "TestSecretManagerName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.pf.secretmanagers.cyberark.CyberArkCredentialProvider", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateSecretManager", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteSecretManager(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.SecretManagersAPI.DeleteSecretManager(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteSecretManager", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/server_settings.go b/internal/testing/testutils_resource/pingfederate/server_settings.go new file mode 100644 index 00000000..462fa195 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/server_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateServerSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ServerSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/server_settings_general.go b/internal/testing/testutils_resource/pingfederate/server_settings_general.go new file mode 100644 index 00000000..c77cff57 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/server_settings_general.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateServerSettingsGeneral(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ServerSettingsGeneral(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/server_settings_logging.go b/internal/testing/testutils_resource/pingfederate/server_settings_logging.go new file mode 100644 index 00000000..0d8adee3 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/server_settings_logging.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateServerSettingsLogging(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ServerSettingsLogging(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/server_settings_system_keys_rotate.go b/internal/testing/testutils_resource/pingfederate/server_settings_system_keys_rotate.go new file mode 100644 index 00000000..681b9bfa --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/server_settings_system_keys_rotate.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateServerSettingsSystemKeysRotate(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ServerSettingsSystemKeysRotate(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/server_settings_ws_trust_sts_settings.go b/internal/testing/testutils_resource/pingfederate/server_settings_ws_trust_sts_settings.go new file mode 100644 index 00000000..ce0a591e --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/server_settings_ws_trust_sts_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateServerSettingsWsTrustStsSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ServerSettingsWsTrustStsSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/server_settings_ws_trust_sts_settings_issuer_certificate.go b/internal/testing/testutils_resource/pingfederate/server_settings_ws_trust_sts_settings_issuer_certificate.go new file mode 100644 index 00000000..cd81ae0a --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/server_settings_ws_trust_sts_settings_issuer_certificate.go @@ -0,0 +1,77 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateServerSettingsWsTrustStsSettingsIssuerCertificate(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createServerSettingsWsTrustStsSettingsIssuerCertificate, + DeleteFunc: deleteServerSettingsWsTrustStsSettingsIssuerCertificate, + Dependencies: nil, + ExportableResource: resources.ServerSettingsWsTrustStsSettingsIssuerCertificate(clientInfo), + } +} + +func createServerSettingsWsTrustStsSettingsIssuerCertificate(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createServerSettingsWsTrustStsSettingsIssuerCertificate(): %v", strArgs) + } + resourceType := strArgs[0] + + fileData, err := testutils.CreateX509Certificate() + if err != nil { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + request := clientInfo.PingFederateApiClient.ServerSettingsAPI.ImportCertificate(clientInfo.PingFederateContext) + clientStruct := client.X509File{ + FileData: fileData, + Id: utils.Pointer("testx509fileid"), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "ImportCertificate", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.CertView.Id, + testutils_resource.ENUM_ISSUER_DN: *resource.CertView.IssuerDN, + testutils_resource.ENUM_SERIAL_NUMBER: *resource.CertView.SerialNumber, + } +} + +func deleteServerSettingsWsTrustStsSettingsIssuerCertificate(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.ServerSettingsAPI.DeleteCertificate(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteCertificate", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/service_authentication.go b/internal/testing/testutils_resource/pingfederate/service_authentication.go new file mode 100644 index 00000000..63417fa3 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/service_authentication.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateServiceAuthentication(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.ServiceAuthentication(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/session_application_policy.go b/internal/testing/testutils_resource/pingfederate/session_application_policy.go new file mode 100644 index 00000000..cb7488bd --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/session_application_policy.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateSessionApplicationPolicy(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.SessionApplicationPolicy(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/session_authentication_policies_global.go b/internal/testing/testutils_resource/pingfederate/session_authentication_policies_global.go new file mode 100644 index 00000000..cbb71a20 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/session_authentication_policies_global.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateSessionAuthenticationPoliciesGlobal(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.SessionAuthenticationPoliciesGlobal(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/session_authentication_policy.go b/internal/testing/testutils_resource/pingfederate/session_authentication_policy.go new file mode 100644 index 00000000..9b576f0f --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/session_authentication_policy.go @@ -0,0 +1,79 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateSessionAuthenticationPolicy(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createSessionAuthenticationPolicy, + DeleteFunc: deleteSessionAuthenticationPolicy, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateIdpAdapter(t, clientInfo), + }, + ExportableResource: resources.SessionAuthenticationPolicy(clientInfo), + } +} + +func createSessionAuthenticationPolicy(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createSessionAuthenticationPolicy(): %v", strArgs) + } + resourceType := strArgs[0] + testIdpAdapterId := strArgs[1] + + request := clientInfo.PingFederateApiClient.SessionAPI.CreateSourcePolicy(clientInfo.PingFederateContext) + clientStruct := client.AuthenticationSessionPolicy{ + AuthenticationSource: client.AuthenticationSource{ + SourceRef: client.ResourceLink{ + Id: testIdpAdapterId, + }, + Type: "IDP_ADAPTER", + }, + Id: utils.Pointer("TestSessionAuthenticationPolicyId"), + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateSourcePolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_TYPE: resource.AuthenticationSource.Type, + testutils_resource.ENUM_SOURCE_REF_ID: resource.AuthenticationSource.SourceRef.Id, + } +} + +func deleteSessionAuthenticationPolicy(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.SessionAPI.DeleteSourcePolicy(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteSourcePolicy", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/session_settings.go b/internal/testing/testutils_resource/pingfederate/session_settings.go new file mode 100644 index 00000000..460e579e --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/session_settings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateSessionSettings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.SessionSettings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/sp_adapter.go b/internal/testing/testutils_resource/pingfederate/sp_adapter.go new file mode 100644 index 00000000..ad696736 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/sp_adapter.go @@ -0,0 +1,85 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateSpAdapter(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createSpAdapter, + DeleteFunc: deleteSpAdapter, + Dependencies: nil, + ExportableResource: resources.SpAdapter(clientInfo), + } +} + +func createSpAdapter(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createSpAdapter(): %v", strArgs) + } + resourceType := strArgs[0] + + request := clientInfo.PingFederateApiClient.SpAdaptersAPI.CreateSpAdapter(clientInfo.PingFederateContext) + clientStruct := client.SpAdapter{ + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "Password", + Value: utils.Pointer("TestPassword1"), + }, + { + Name: "Confirm Password", + Value: utils.Pointer("TestPassword1"), + }, + }, + }, + Id: "TestSpAdapterId", + Name: "TestSpAdapterName", + PluginDescriptorRef: client.ResourceLink{ + Id: "com.pingidentity.adapters.opentoken.SpAuthnAdapter", + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateSpAdapter", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteSpAdapter(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.SpAdaptersAPI.DeleteSpAdapter(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteSpAdapter", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/sp_authentication_policy_contract_mapping.go b/internal/testing/testutils_resource/pingfederate/sp_authentication_policy_contract_mapping.go new file mode 100644 index 00000000..695468c4 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/sp_authentication_policy_contract_mapping.go @@ -0,0 +1,84 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateSpAuthenticationPolicyContractMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createSpAuthenticationPolicyContractMapping, + DeleteFunc: deleteSpAuthenticationPolicyContractMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateAuthenticationPolicyContract(t, clientInfo), + TestableResource_PingFederateSpAdapter(t, clientInfo), + }, + ExportableResource: resources.SpAuthenticationPolicyContractMapping(clientInfo), + } +} + +func createSpAuthenticationPolicyContractMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createSpAuthenticationPolicyContractMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testAPCId := strArgs[1] + testSPAdapterId := strArgs[2] + + request := clientInfo.PingFederateApiClient.SpAuthenticationPolicyContractMappingsAPI.CreateApcToSpAdapterMapping(clientInfo.PingFederateContext) + clientStruct := client.ApcToSpAdapterMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "subject": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + Id: utils.Pointer(testAPCId + "|" + testSPAdapterId), + SourceId: testAPCId, + TargetId: testSPAdapterId, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateApcToSpAdapterMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_SOURCE_ID: resource.SourceId, + testutils_resource.ENUM_TARGET_ID: resource.TargetId, + } +} + +func deleteSpAuthenticationPolicyContractMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.SpAuthenticationPolicyContractMappingsAPI.DeleteApcToSpAdapterMappingById(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteApcToSpAdapterMappingById", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/sp_idp_connection.go b/internal/testing/testutils_resource/pingfederate/sp_idp_connection.go new file mode 100644 index 00000000..a0c4347f --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/sp_idp_connection.go @@ -0,0 +1,104 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateSpIdpConnection(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createSpIdpConnection, + DeleteFunc: deleteSpIdpConnection, + Dependencies: nil, + ExportableResource: resources.SpIdpConnection(clientInfo), + } +} + +func createSpIdpConnection(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createSpIdpConnection(): %v", strArgs) + } + resourceType := strArgs[0] + + filedata, err := testutils.CreateX509Certificate() + if err != nil { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + request := clientInfo.PingFederateApiClient.SpIdpConnectionsAPI.CreateConnection(clientInfo.PingFederateContext) + clientStruct := client.IdpConnection{ + Connection: client.Connection{ + Active: utils.Pointer(true), + Credentials: &client.ConnectionCredentials{ + Certs: []client.ConnectionCert{ + { + ActiveVerificationCert: utils.Pointer(true), + EncryptionCert: utils.Pointer(false), + X509File: client.X509File{ + FileData: filedata, + Id: utils.Pointer("testx509fileid"), + }, + }, + }, + }, + EntityId: "TestEntityId", + Id: utils.Pointer("TestSpIdpConnectionId"), + LoggingMode: utils.Pointer("STANDARD"), + Name: "TestSpIdpConnectionName", + Type: utils.Pointer("IDP"), + }, + WsTrust: &client.IdpWsTrust{ + AttributeContract: client.IdpWsTrustAttributeContract{ + CoreAttributes: []client.IdpWsTrustAttribute{ + { + Masked: utils.Pointer(false), + Name: "TOKEN_SUBJECT", + }, + }, + }, + }, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateConnection", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_NAME: resource.Name, + } +} + +func deleteSpIdpConnection(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.SpIdpConnectionsAPI.DeleteConnection(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteConnection", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/sp_target_url_mappings.go b/internal/testing/testutils_resource/pingfederate/sp_target_url_mappings.go new file mode 100644 index 00000000..8069e571 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/sp_target_url_mappings.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateSpTargetUrlMappings(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.SpTargetUrlMappings(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingfederate/sp_token_generator.go b/internal/testing/testutils_resource/pingfederate/sp_token_generator.go new file mode 100644 index 00000000..5cfb4677 --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/sp_token_generator.go @@ -0,0 +1,109 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateSpTokenGenerator(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createSpTokenGenerator, + DeleteFunc: deleteSpTokenGenerator, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateKeypairsSigningKey(t, clientInfo), + }, + ExportableResource: nil, + } +} + +func createSpTokenGenerator(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createSpTokenGenerator(): %v", strArgs) + } + resourceType := strArgs[0] + testSigningKeyPairId := strArgs[1] + + request := clientInfo.PingFederateApiClient.SpTokenGeneratorsAPI.CreateTokenGenerator(clientInfo.PingFederateContext) + result := client.TokenGenerator{ + AttributeContract: &client.TokenGeneratorAttributeContract{ + CoreAttributes: []client.TokenGeneratorAttribute{ + { + Name: "SAML_SUBJECT", + }, + }, + }, + Configuration: client.PluginConfiguration{ + Fields: []client.ConfigField{ + { + Name: "Minutes Before", + Value: utils.Pointer("10"), + }, + { + Name: "Minutes After", + Value: utils.Pointer("10"), + }, + { + Name: "Issuer", + Value: utils.Pointer("issuerIdentifier"), + }, + { + Name: "Signing Certificate", + Value: &testSigningKeyPairId, + }, + { + Name: "Signing Algorithm", + Value: utils.Pointer("RSA_SHA256"), + }, + { + Name: "Audience", + Value: utils.Pointer("www.example.com"), + }, + }, + }, + Id: "TestTokenGeneratorId", + Name: "TestTokenGeneratorName", + PluginDescriptorRef: client.ResourceLink{ + Id: "org.sourceid.wstrust.generator.saml.Saml20TokenGenerator", + }, + } + + request = request.Body(result) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateTokenGenerator", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: resource.Id, + } +} + +func deleteSpTokenGenerator(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.SpTokenGeneratorsAPI.DeleteTokenGenerator(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteTokenGenerator", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/token_processor_to_token_generator_mapping.go b/internal/testing/testutils_resource/pingfederate/token_processor_to_token_generator_mapping.go new file mode 100644 index 00000000..d3a3a5be --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/token_processor_to_token_generator_mapping.go @@ -0,0 +1,84 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" + "github.com/pingidentity/pingcli/internal/utils" + client "github.com/pingidentity/pingfederate-go-client/v1220/configurationapi" +) + +func TestableResource_PingFederateTokenProcessorToTokenGeneratorMapping(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createTokenProcessorToTokenGeneratorMapping, + DeleteFunc: deleteTokenProcessorToTokenGeneratorMapping, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingFederateIdpTokenProcessor(t, clientInfo), + TestableResource_PingFederateSpTokenGenerator(t, clientInfo), + }, + ExportableResource: resources.TokenProcessorToTokenGeneratorMapping(clientInfo), + } +} + +func createTokenProcessorToTokenGeneratorMapping(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 3 { + t.Fatalf("Unexpected number of arguments provided to createTokenProcessorToTokenGeneratorMapping(): %v", strArgs) + } + resourceType := strArgs[0] + testTokenProcessorId := strArgs[1] + testTokenGeneratorId := strArgs[2] + + request := clientInfo.PingFederateApiClient.TokenProcessorToTokenGeneratorMappingsAPI.CreateTokenToTokenMapping(clientInfo.PingFederateContext) + clientStruct := client.TokenToTokenMapping{ + AttributeContractFulfillment: map[string]client.AttributeFulfillmentValue{ + "SAML_SUBJECT": { + Source: client.SourceTypeIdKey{ + Type: "NO_MAPPING", + }, + }, + }, + Id: utils.Pointer(testTokenProcessorId + "|" + testTokenGeneratorId), + SourceId: testTokenProcessorId, + TargetId: testTokenGeneratorId, + } + + request = request.Body(clientStruct) + + resource, response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateTokenToTokenMapping", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *resource.Id, + testutils_resource.ENUM_SOURCE_ID: resource.SourceId, + testutils_resource.ENUM_TARGET_ID: resource.TargetId, + } +} + +func deleteTokenProcessorToTokenGeneratorMapping(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + request := clientInfo.PingFederateApiClient.TokenProcessorToTokenGeneratorMappingsAPI.DeleteTokenToTokenMappingById(clientInfo.PingFederateContext, id) + + response, err := request.Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteTokenToTokenMappingById", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingfederate/virtual_host_names.go b/internal/testing/testutils_resource/pingfederate/virtual_host_names.go new file mode 100644 index 00000000..16da996e --- /dev/null +++ b/internal/testing/testutils_resource/pingfederate/virtual_host_names.go @@ -0,0 +1,21 @@ +package pingfederate + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingfederate/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingFederateVirtualHostNames(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: nil, + DeleteFunc: nil, + Dependencies: nil, + ExportableResource: resources.VirtualHostNames(clientInfo), + } +} diff --git a/internal/testing/testutils_resource/pingone/device_auth_application.go b/internal/testing/testutils_resource/pingone/device_auth_application.go new file mode 100644 index 00000000..564cbd9c --- /dev/null +++ b/internal/testing/testutils_resource/pingone/device_auth_application.go @@ -0,0 +1,80 @@ +package pingone + +import ( + "testing" + + "github.com/patrickcping/pingone-go-sdk-v2/management" + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingOneDeviceAuthApplication(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createDeviceAuthApplication, + DeleteFunc: deleteDeviceAuthApplication, + Dependencies: nil, + ExportableResource: nil, + } +} + +func createDeviceAuthApplication(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createPingOneDeviceAuthApplication(): %v", strArgs) + } + resourceType := strArgs[0] + + result := management.CreateApplicationRequest{ + ApplicationOIDC: &management.ApplicationOIDC{ + Enabled: true, + GrantTypes: []management.EnumApplicationOIDCGrantType{ + management.ENUMAPPLICATIONOIDCGRANTTYPE_DEVICE_CODE, + management.ENUMAPPLICATIONOIDCGRANTTYPE_REFRESH_TOKEN, + }, + Name: "TestDeviceAuthApplication", + Protocol: management.ENUMAPPLICATIONPROTOCOL_OPENID_CONNECT, + TokenEndpointAuthMethod: management.ENUMAPPLICATIONOIDCTOKENAUTHMETHOD_NONE, + Type: management.ENUMAPPLICATIONTYPE_CUSTOM_APP, + }, + } + + createApplication201Response, response, err := clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.CreateApplication(clientInfo.PingOneContext, clientInfo.PingOneExportEnvironmentID).CreateApplicationRequest(result).Execute() + ok, err := common.HandleClientResponse(response, err, "CreateApplication", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + if createApplication201Response == nil || createApplication201Response.ApplicationOIDC == nil { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + appId, appIdOk := createApplication201Response.ApplicationOIDC.GetIdOk() + if !appIdOk { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *appId, + } +} + +func deleteDeviceAuthApplication(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + response, err := clientInfo.PingOneApiClient.ManagementAPIClient.ApplicationsApi.DeleteApplication(clientInfo.PingOneContext, clientInfo.PingOneExportEnvironmentID, id).Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteApplication", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingone/pingfederate_gateway.go b/internal/testing/testutils_resource/pingone/pingfederate_gateway.go new file mode 100644 index 00000000..b9117c46 --- /dev/null +++ b/internal/testing/testutils_resource/pingone/pingfederate_gateway.go @@ -0,0 +1,77 @@ +package pingone + +import ( + "testing" + + "github.com/patrickcping/pingone-go-sdk-v2/management" + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingOnePingFederateGateway(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createPingFederateGateway, + DeleteFunc: deletePingFederateGateway, + Dependencies: nil, + ExportableResource: nil, + } +} + +func createPingFederateGateway(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 1 { + t.Fatalf("Unexpected number of arguments provided to createPingFederateGateway(): %v", strArgs) + } + resourceType := strArgs[0] + + result := management.CreateGatewayRequest{ + Gateway: &management.Gateway{ + Enabled: true, + Name: "TestPingFederateGateway", + Type: management.ENUMGATEWAYTYPE_PING_FEDERATE, + }, + } + + api_request := clientInfo.PingOneApiClient.ManagementAPIClient.GatewaysApi.CreateGateway(clientInfo.PingOneContext, clientInfo.PingOneExportEnvironmentID) + api_request = api_request.CreateGatewayRequest(result) + + createGateway201Response, response, err := api_request.Execute() + ok, err := common.HandleClientResponse(response, err, "CreateGateway", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + if createGateway201Response == nil || createGateway201Response.Gateway == nil { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + gatewayId, gatewayIdOk := createGateway201Response.Gateway.GetIdOk() + if !gatewayIdOk { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *gatewayId, + } +} + +func deletePingFederateGateway(t *testing.T, clientInfo *connector.ClientInfo, resourceType, id string) { + t.Helper() + + response, err := clientInfo.PingOneApiClient.ManagementAPIClient.GatewaysApi.DeleteGateway(clientInfo.PingOneContext, clientInfo.PingOneExportEnvironmentID, id).Execute() + ok, err := common.HandleClientResponse(response, err, "DeleteGateway", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } +} diff --git a/internal/testing/testutils_resource/pingone/pingfederate_gateway_credential.go b/internal/testing/testutils_resource/pingone/pingfederate_gateway_credential.go new file mode 100644 index 00000000..9c1a79a1 --- /dev/null +++ b/internal/testing/testutils_resource/pingone/pingfederate_gateway_credential.go @@ -0,0 +1,56 @@ +package pingone + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/common" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func TestableResource_PingOnePingFederateGatewayCredential(t *testing.T, clientInfo *connector.ClientInfo) *testutils_resource.TestableResource { + t.Helper() + + return &testutils_resource.TestableResource{ + ClientInfo: clientInfo, + CreateFunc: createPingFederateGatewayCredential, + DeleteFunc: nil, + Dependencies: []*testutils_resource.TestableResource{ + TestableResource_PingOnePingFederateGateway(t, clientInfo), + }, + ExportableResource: nil, + } +} + +func createPingFederateGatewayCredential(t *testing.T, clientInfo *connector.ClientInfo, strArgs ...string) testutils_resource.ResourceCreationInfo { + t.Helper() + + if len(strArgs) != 2 { + t.Fatalf("Unexpected number of arguments provided to createPingoneConnection(): %v", strArgs) + } + resourceType := strArgs[0] + gatewayId := strArgs[1] + + gatewayCredential, response, err := clientInfo.PingOneApiClient.ManagementAPIClient.GatewayCredentialsApi.CreateGatewayCredential(clientInfo.PingOneContext, clientInfo.PingOneExportEnvironmentID, gatewayId).Execute() + ok, err := common.HandleClientResponse(response, err, "CreateGatewayCredential", resourceType) + if err != nil { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s\nError: %v", response.Status, response.Body, err) + } + if !ok { + t.Fatalf("Failed to execute client function\nResponse Status: %s\nResponse Body: %s", response.Status, response.Body) + } + + if gatewayCredential == nil { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + credential, credentialOk := gatewayCredential.GetCredentialOk() + if !credentialOk { + t.Fatalf("Failed to create test %s: %v", resourceType, err) + } + + return testutils_resource.ResourceCreationInfo{ + testutils_resource.ENUM_ID: *credential, // the pingone_connection resource needs the credential instead of the id of the credential + testutils_resource.ENUM_CREDENTIAL: *credential, + } +} diff --git a/internal/testing/testutils_resource/testutils_resource.go b/internal/testing/testutils_resource/testutils_resource.go new file mode 100644 index 00000000..88b9077a --- /dev/null +++ b/internal/testing/testutils_resource/testutils_resource.go @@ -0,0 +1,110 @@ +package testutils_resource + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" +) + +type ResourceCreationInfoType string + +const ( + // General ID and Name enums for most resource creation + ENUM_ID ResourceCreationInfoType = "ENUM_ID" + ENUM_NAME ResourceCreationInfoType = "ENUM_NAME" + + // Mapping Info for Mapping resources + ENUM_SOURCE_ID ResourceCreationInfoType = "ENUM_SOURCE_ID" + ENUM_TARGET_ID ResourceCreationInfoType = "ENUM_TARGET_ID" + + // Certificate Info for Certificate resources + ENUM_ISSUER_DN ResourceCreationInfoType = "ENUM_ISSUER_DN" + ENUM_SERIAL_NUMBER ResourceCreationInfoType = "ENUM_SERIAL_NUMBER" + + // Miscellaneous Info for resources that don't fit the above + ENUM_TYPE ResourceCreationInfoType = "ENUM_TYPE" + ENUM_CONTEXT_TYPE ResourceCreationInfoType = "ENUM_CONTEXT_TYPE" + ENUM_CREDENTIAL ResourceCreationInfoType = "ENUM_CREDENTIAL" //#nosec G101 -- This is not hard-coded credentials + ENUM_SOURCE_REF_ID ResourceCreationInfoType = "ENUM_SOURCE_REF_ID" +) + +type ResourceCreationInfo map[ResourceCreationInfoType]string + +// The TestableResource struct is used to create and delete resources in a test, without prior configuration needed +// on a service. This allows different developers and contributors to provide their own test service credentials, +// which would consistently create and clean configuration needed for testing without requiring shared credentials on +// a central test service. +// +// Further, this struct is notably decoupled from resource unit tests and service connector integration test. This +// allows for both tests to leverage the same struct, without worrying about setup and cleanup. Golang 'defer' applies +// to the current scope, so this allows for each test to have its own setup and cleanup, without knowing which test +// ran first or if the resource is still needed for subsequent tests. +// +// Finally, this struct allows the integration test to initialize terraform only once, which makes the terraform +// --generate-config-out testing almost an order of magnitude faster. +type TestableResource struct { + // SDK client used in creation and deletion of this TestableResource + ClientInfo *connector.ClientInfo + + // Creation function for this TestableResources + CreateFunc func(*testing.T, *connector.ClientInfo, ...string) ResourceCreationInfo + + // TestableResource information like ID, Name, etc. + CreationInfo ResourceCreationInfo + + // Deletion function for this TestableResources + DeleteFunc func(*testing.T, *connector.ClientInfo, string, string) + + // TestableResources required to be created before this TestableResource can be created + Dependencies []*TestableResource + + // ExportableResource that this TestableResource is testing + ExportableResource connector.ExportableResource +} + +func (tr *TestableResource) CreateResource(t *testing.T) ResourceCreationInfo { + t.Helper() + + // Each TestableResource CreateFunc takes in the resource type and a variadic list of dependency IDs needed for creation + createdDepIds := []string{} + if tr.ExportableResource == nil { + // Some resources like out_of_band_auth_plugins do not implement ExportableResource + createdDepIds = append(createdDepIds, "") + } else { + createdDepIds = append(createdDepIds, tr.ExportableResource.ResourceType()) + } + + for _, dependency := range tr.Dependencies { + // Recursively create dependencies + dependency.CreationInfo = dependency.CreateResource(t) + depId, ok := dependency.CreationInfo[ENUM_ID] + if !ok { + t.Fatalf("Failed to get ID from dependency: %v", dependency) + } + + createdDepIds = append(createdDepIds, depId) + } + + if tr.CreateFunc != nil { + tr.CreationInfo = tr.CreateFunc(t, tr.ClientInfo, createdDepIds...) + } + + return tr.CreationInfo +} + +func (tr *TestableResource) DeleteResource(t *testing.T) { + t.Helper() + + resourceType := "" + if tr.ExportableResource != nil { + resourceType = tr.ExportableResource.ResourceType() + } + + if tr.DeleteFunc != nil { + tr.DeleteFunc(t, tr.ClientInfo, resourceType, tr.CreationInfo[ENUM_ID]) + } + + for _, dependency := range tr.Dependencies { + dependency.DeleteResource(t) + } +} diff --git a/internal/testing/testutils_viper/viper_utils.go b/internal/testing/testutils_viper/viper_utils.go index 7d28fcd8..72bca025 100644 --- a/internal/testing/testutils_viper/viper_utils.go +++ b/internal/testing/testutils_viper/viper_utils.go @@ -36,12 +36,10 @@ default: pingfederate: adminapipath: %s authentication: - type: clientcredentialsauth - clientcredentialsauth: - clientid: %s - clientsecret: %s - scopes: %s - tokenurl: %s + type: basicauth + basicauth: + username: %s + password: %s httpshost: %s insecureTrustAllTLS: true xBypassExternalValidationHeader: true @@ -78,6 +76,7 @@ func configureMainViper(t *testing.T) { // Give main viper instance a file location to write to mainViper := profiles.GetMainConfig().ViperInstance() mainViper.SetConfigFile(configFilepath) + mainViper.SetConfigType("yaml") if err := mainViper.ReadInConfig(); err != nil { t.Fatal(err) } @@ -114,9 +113,7 @@ func getDefaultConfigFileContents() string { os.Getenv(options.PingOneAuthenticationWorkerClientSecretOption.EnvVar), os.Getenv(options.PingOneAuthenticationWorkerEnvironmentIDOption.EnvVar), os.Getenv(options.PingFederateAdminAPIPathOption.EnvVar), - os.Getenv(options.PingFederateClientCredentialsAuthClientIDOption.EnvVar), - os.Getenv(options.PingFederateClientCredentialsAuthClientSecretOption.EnvVar), - os.Getenv(options.PingFederateClientCredentialsAuthScopesOption.EnvVar), - os.Getenv(options.PingFederateClientCredentialsAuthTokenURLOption.EnvVar), + os.Getenv(options.PingFederateBasicAuthUsernameOption.EnvVar), + os.Getenv(options.PingFederateBasicAuthPasswordOption.EnvVar), os.Getenv(options.PingFederateHTTPSHostOption.EnvVar)) } diff --git a/internal/utils/utils.go b/internal/utils/utils.go new file mode 100644 index 00000000..a7184e14 --- /dev/null +++ b/internal/utils/utils.go @@ -0,0 +1,5 @@ +package utils + +func Pointer[T any](t T) *T { + return &t +} diff --git a/server-profiles/12.1/data.json b/server-profiles/12.1/data.json deleted file mode 100644 index e1c28e2c..00000000 --- a/server-profiles/12.1/data.json +++ /dev/null @@ -1,4734 +0,0 @@ -{ - "metadata": { - "pfVersion": "12.1.4.0" - }, - "operations": [ - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "cert-time-tracking", - "items": [ - { - "id": "9vgmnd36wykte1l2nm8s8uead", - "type": "STRING", - "stringValue": "1735851845" - }, - { - "id": "sslservercert", - "type": "STRING", - "stringValue": "1735840761" - }, - { - "id": "tiq4n26axjircjk30oz5zf6k3", - "type": "STRING", - "stringValue": "1735851641" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.oauth20.domain.ClientManagerXmlFileImpl", - "items": [ - { - "id": "MigrationComplete8.4", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.domain.LoggingMode", - "items": [ - { - "id": "IdPOverrideOn", - "type": "STRING", - "stringValue": "false" - }, - { - "id": "SPOverrideOn", - "type": "STRING", - "stringValue": "false" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.domain.mgmt.AdminUserManager", - "items": [ - { - "id": "isEaRoleUpdated", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.domain.mgmt.impl.PartnerCertMigrator", - "items": [ - { - "id": "partner.cert.migration.complete", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.metadata.partner.impl.MetadataDirectoryHybridDbImpl", - "items": [ - { - "id": "MigrationComplete8.4", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/license/agreement", - "operationType": "SAVE", - "items": [ - { - "licenseAgreementUrl": "https://localhost:9999/pf-admin-api/license-agreement", - "accepted": true - } - ] - }, - { - "resourceType": "/certificates/ca", - "operationType": "SAVE", - "items": [ - { - "id": "sslservercert", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURVekNDQWoyZ0F3SUJBZ0lRSFJOTEZ3a0RRTHc3WGZ6NVZKTlJnekFMQmdrcWhraUc5dzBCQVFzd1N6RU9NQXdHQTFVRUNBd0YKVkVWWVFWTXhEekFOQmdOVkJBY01Ca0ZWVTFSSlRqRU5NQXNHQTFVRUN3d0VVRWxPUnpFTU1Bb0dBMVVFQ2d3RFEwUlNNUXN3Q1FZRApWUVFHREFKVlV6QWVGdzB5TkRBNE1USXhPVFEzTVRkYUZ3MDBOREE0TURjeE9UUTNNVGRhTUVzeERqQU1CZ05WQkFnTUJWUkZXRUZUCk1ROHdEUVlEVlFRSERBWkJWVk5VU1U0eERUQUxCZ05WQkFzTUJGQkpUa2N4RERBS0JnTlZCQW9NQTBORVVqRUxNQWtHQTFVRUJnd0MKVlZNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNodTE3Z1FiYnZNdnBsbkJ0YnBLOTNVVTMvYjRUZApKamJ5dXJNRDRQOFMrakNWeER4cDF4ZGxUeGJxbFphcVRuaE8yOG1GRHdFRFlhdVgyZHdENmUwTUxkNEV5aWQ3eUp5T2ViZmdQUzRMClJrc3ZVb3RlUlUxV2RoZ1I4NDdyRFNOZnFha3JQUkRaVWZJOUpmY0pqMG4rWElJT2hobEhQZXB4bE56aDRyK0xUY3ZqcXIvTWgxMEgKNzhteG1xZUhvUWlZYmhydExpaGgxN2N2cGVJWlhPT3dVU0JvV1pDWkcreXlYVXNGd2RHU3VoV1l0clNPbE1TZnZlTm5rbk41amh5aApVZWJRQ05vVUhTdEs1cW9YeTFVVU1HRE5IcEFHSDNWNHJpWmhCNkxhTkszZ3gwbmF5d3RvcDF0WkpaNXg0ZllJMFQvVTVreTlGZWxlCkE2SEMzZmR4QWdNQkFBR2pOekExTUIwR0ExVWREZ1FXQkJSWVBlRkVtTkxHcURGQ2pOcWhBUVc3NThZT3FqQVVCZ05WSFJFRURUQUwKZ2dsc2IyTmhiR2h2YzNRd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFBVVBRM1hKSmtJZ3JNSU5xVjJPdnB4bUR2c0JsVEVjQmE4Z2JRcwpTMXZuQUdDNFRsKzV2QWpwa0Z4VFhUbnBHaWtJU25POVp3SWJRYTJ1RlZRMjZFbkNKazF3Z3JMWFRkY0FXQjRLQmZRYWRKUTdVQzltCmE3RTZYaW5FSjBUWGd5UXNSc3R4cldVNldLWGV1d3lYZEFidGE1ZWhzRjZZUDNPYzNZZTBqR201L1FtaWZhVmwzWUJNQ3JxOUVGdkwKUzQ1MUVTcVJMaDA4QUZjZ3RaWlc4RGo1MHNyUGlWbDZidVVQOWd3YWxqamhYV01FTDBNVWtKMlgweHlVMHlGMytNV2lMMU9oaThURwpNeEw5YzliN3JScUQyWk9mU2xXVGN1Sm83OXM1ZkNFOG1leDU3VGdlSEh5eC9GVEIrUzhpMWYvT1J5WTl0ZlErbjJvQk1obnRzN2pkCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/keyPairs/sslServer", - "operationType": "SAVE", - "items": [ - { - "id": "sslservercert", - "fileData": "MIIKgAIBAzCCCioGCSqGSIb3DQEHAaCCChsEggoXMIIKEzCCBaoGCSqGSIb3DQEHAaCCBZsEggWXMIIFkzCCBY8GCyqGSIb3DQEMCgECoIIFQDCCBTwwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFPuABWO8ptmKcJXs9b-XgaOinzp5AgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQcBBm_TEmBVYlVvaLeZXhvASCBNDP863DClAhDO7dQZVVeTjcbwSdV9g63w5peKhdpIBiC3TctBs5ziJQqaAa_Owpvuj6WX4OSL1_h7SIpIDtfsRkDda8WWS9WNe6RW5Gi7PIP48cEJPU5d4MpzkHtK3dJwmItP-IqquUIzL5YGjacjHYO62mY8GLA3H2sjREjAuUafeolAnE8qmv0hAWmAk-RGAjZe1jAeaTwBrTIfNlN3BJYBZJj18KINsVOpPEYwSe3EJk8bGMZPpQJJkVfmAfauSMfMHDUVsWoOu5SJ8ZQ_WKbxm6z0fPPeJlmPfgeNhnSQnTCYnZ-mAXRVfz4SaNUS2ZLI89uZJ-ZXzky5e9-cFwC_mWe7LobPc9rEJ09uIhLUmwc2QoMcLuX1JxJ-Od0C8OszHjlNtm_qe8kaQUt6Xt7BPGTnci5rwuC2EQ9Yvc173cEOpSUWdH4pmVYuOCfyB9tJvqcDQn_OTzKnJ3w0YqQJcBhf6z04NLgw9hruow_dX8nzXMMGlK2OrJwUqaJ9AvS3EK7JZaeL5Ulk5cIErPlwqv2yJP0WDjFoaP3Wl62p1KVthl27S4M6tW533bCi-fp8zZVecVL1RkYU33_ahTI2H40hqRyB2cx7CIvauR_pRFhhQzBg1Q3tq8kLjJ4xlAkKWcjSesu3-nmneO38EOcd7aZmpcleW0L0M7EJbm0rknaCTJG0jDERAVTTa2lxOQ-ve1Pian3IofTpNj29D4lXZ2ITUWJv5QBDptWaoguhLLlZh-bFv97DdJlpU6tSmaN6FfSm1sdWivDrPdg6FcQDpmKIbnZ6nTMVlcnRNQjlI-yMg3hz5eQsXJ4dNY-8jyPiHYofmDD52k5Rt1Nl53E_HZlmpqxTNTi9gK0ERDSqJs-5G_2BKRR_bs9bt7VuQ8aGDkgd6EGTzsfXJatwcEJVp5WSZL0l0vB_n0SindZyWb3gTCZupR_i2zvUKC1mPKIHnm6Zz2jTxJcILkSXDWqOM4y87wmrf5E_TnDt8uylMmbV34TFLx5UiKR16MhWvXt6WIwSWdxNg5RxHoOtKpN19UKiy3I3xqQPk5omaU4D_8AuhRShSJ2fG21L4i0zbvS-T5V2v4AWCgToD9GGsNQk9lC4re5fiyNSXiGFvePbuHOtCA1DsPRDVXG_aYLU-WDTZo5crtGVPWv7Ef8ftMJ0QMjA9QDa5ylY2BLE1PCLklrfwIHS1CJvGvoCYlxT6OmWzsh1D2ZIxfUhEfKh0EJwqnFAwFDEz8o-6ven0LuqErITI6ABB6FlN25FXDOGHW8LaLDPmCwv5ClBjOpzSwTl5KcNjPDxH-0cQ9UUhOWt5K0hbjTYtThFQw4uP3vKojWHl3epc52BypGCXPJ-xwfxYWNLLgNieFprmBPQv55o0fDWtqw2dXM7ZOMHaqGyU0h7C57ERQ4u1bL1UPmkymupROhfcUv12CWks2YHy37Y728PdBfH3LUtAU7JUj3pdUVEajoDEZx_GPa-VkbVommt_FQ3Mm0Mae2Lrdxs3WEegrTcQED-QBX1M6yBvPlL4hXM32ui_7mqjyAevN8e1BbtYoPEly0aMKAG4nnn-_Tojn3QngAs8BFxszhRH-HoxjSRNarnMHZn5FtFIkSjrB1brCytbX3bARkd_K2oiavDE8MBcGCSqGSIb3DQEJFDEKHggAcABpAG4AZzAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNzM1ODUxODg4Njk5MIIEYQYJKoZIhvcNAQcGoIIEUjCCBE4CAQAwggRHBgkqhkiG9w0BBwEwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFHY4D_fBrMhfQNs4Lg9K95j9YlzlAgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQVry1YbQR-2P2nSrmsq6YYoCCA9C3PPFwQt7y6i9hvd8RDCSGy4gRUHwU-CXYqmL5y7lkNStpdHpg1MliRGR6PMYO-t8pbCllhTU8Bh8rpfBthgye2FqQIAhYRd3qPL9ZT15kxgEXu2R72Bgxlq9_7dRI-YOLpyWryeTNYxUjL-MBN6g29QqKUn4i8MNKADaRmihT3W1mEsnXe_1z2qJ0U99pcQz6hs5FySq6WcwtQkyC_paoxLk3GQkqggzYP5357KaDuHpMoGEUGl_aRVvHu-LTUchcDC2PmJnzJ2aYVHTNdroBOqyYFk3NqJaUZsBtdA3RvXOqWvMgdEuWgrjFtu85LWMV3-9SSpN5ZUy3lAl2BKhoTDoeMz2Ntv6JhxFSi9521L5U5fvXGSgubEXtKYz79zVWr25lFhTC3az0CfhriIEnuzB4JeVTm_0WeO_FHKooIczEmv6C9BZI-8g9w4dH0CHTQp2wDDQCMuyF1kP3qN5KEGnMVz2kikBUMrs7kOGZUCA9EF8QqH3KGrxEcXtFCUItOeb80vuojCu2cH1dra3PCGbdIt5ihrQFbKvluQous_Ya1nlpodseCvnCYibDP9REqLPKrkYGMy1r8gmnU5a01trWS8Wtum63bl0AoYZ4nIxLnvJi2z_GKWAPxnI6QJY-CXj1jQTvA8rg107NDKgKuzYHQyGPMTteG0JvMKg_mCBXbcvf2jODey81ISWuP92uJKdZjlmbjyPyd-fsb4oxj9Tksr0VCshrH9QVa9clwXB7DLrcADcNcwlAL222khRAfaAXrZxS-ohNccJR__KRpnwzAiYjX-CEAnUlz9tGuBhuQoKUhzfrFXDAEXumrvaT30uSGrWLK0Ng068zR85p7kDf7z2kaTUjYUDU1wKlXKlSGOMdyGX5u6wiEgVKx8QnESCW6q8IAVks9zDQw56YqC_A19AY8piAPsYKjrpV49Vi2VhYqCK5rrmW1ndo_nJGyHO2m-2QiQhQGc9KY4nSm7jGSKb5oTf1casGECuct4RvMy4Rh4RYugknVnOeho9qpBxnSo9NAwrNVGsJK2hoXNrMpwMgxgtjaOtwk-qCEu1TP8evZFnL10c6Z-VPY-XSJU9LM4hUyprI_66kRPmUGnIYLqRFyG9bQgp8YynrQ2C1I4FIMB6rpugxMW1lPZ3Y5RwV2bN0gqlvymd-1K3pHgVg2IxnOAZC0oIfzOvfEs49VKy_LUqqJWV24MSEgwcERx4G1nsDSehcUO58BPeKXtYz2fLj-0TbixSdk3rvRQodg8KjW2Xr_IbxAhVupkU2mCcU8jsmgWeqcvJW5Xk2ME0wMTANBglghkgBZQMEAgEFAAQgRwd9qggqKC8aIdiNRaz8heGvmlm-fObce-VjP7HeZCAEFJsFQbD7XTEmnb64EY4aVgn2HrXQAgInEA==", - "format": "PKCS12", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..nh0iT6ggPLhQCMgMxwqr3Q.qGBGQ_3CtkTar-wyD2099VW787Wo1-HbGR-mQLccgfU.BNZbBgfA9wppAcOYXjw7Lg" - } - ] - }, - { - "resourceType": "/keyPairs/sslServer/settings", - "operationType": "SAVE", - "items": [ - { - "runtimeServerCertRef": { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - }, - "adminConsoleCertRef": { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - }, - "activeRuntimeServerCerts": [ - { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - } - ], - "activeAdminConsoleCerts": [ - { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - } - ] - } - ] - }, - { - "resourceType": "/keyPairs/signing", - "operationType": "SAVE", - "items": [ - { - "id": "9vgmnd36wykte1l2nm8s8uead", - "fileData": "MIIKYAIBAzCCCgoGCSqGSIb3DQEHAaCCCfsEggn3MIIJ8zCCBaoGCSqGSIb3DQEHAaCCBZsEggWXMIIFkzCCBY8GCyqGSIb3DQEMCgECoIIFQDCCBTwwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFO4EbhtEqcxLaUv_fc60-2VMF1A2AgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQBw3TwL4CGSHaXYcMNJwZkwSCBNCLjN9KOUJeHcYD4qG7NLB7d7WYkjsXDWx59kgTd_5e1JEyRqyiJ6MJ-9U9KNbW_rZme3-eF3lrGz_Gi4kV75MmB0gZD9oUUM582TCvk9iNVXsHVgR4lTbGhYGpNFKEJ4CdUnKAXlM0Daqm4aWZuhnPm2amWtRkcxJiQ7VPPSGRiZpC2h0SMZvgR4qK5F8i46AEFFCfvj167eZdnuiR4g3cEGq6ecCwy1C8KnXo0S2bc6vpgB8gODYK1MotwbEm2lNKlsXOrRzbJade9gODb49gBeeZK04yZnS5B1pWuQMGS9AUa6RozIqEdloPnymRqOQ4IIBSwrfcCZvwFVoLjggATJiD-Z6HG1s1o1vJR3ucbcc-1OS-xnWrfqzlvZRfQDkpQHrXF1Z0aHXbbWyKGMWASZaofpDhs8z2jAMg5TDYD16qNCe6dr1w6Wv24KWNcgmzsKZAzGCvBGMOlBy7FfnCzKCo-KBpEiJt_KosEzdTDQCkwX1RCDfcyxZJBvprLsouUpZNJYbmF18LAHh92cSgFwKizwLfYahxKcCh2WwoHi5PTN4rkp5iif08JG9JjBPW4PkficWUOCkidyGiOf8UYNHgaV_AZcYqvpq0Es9yvBpb1QFkcLWWCvISqSLMg0xz8ATUjvzDFuoaif_gr9ou5NGI4eXeS3ZSyFeLR7SxTXyd8m6zACjkWnf0Bkkk6TmSAz-SgLm7twBXg20HYOIyuHslntH4OWdG_lGCzHvG9Rvg75ORRYIzyuqd4ZhNzarVJXS3kshDr01ldZ8LlMGEunM-s8zmz_yIBQbvt4m9T7ijfOuySzShAvccZzM_x2aQQk1ZTl5w3uTW_637iov5Un1Eo9ZPglNhjPjVCSkfjmoHxa3B4jVUGpU-UueRWz1hiHwnGrf7qwe0OJ4RcFiG3JvflrYcf-gZw7hVcC1dAXNBfK5eBFFdrISlp6PNQs42tWGfsdwtn72f1EyDnXnB8gyHv21NByjahth6TC-0nOuZiFdjv6RNQHHletji2LL3OVu3rxNCpC1TOlpf2U-1ow0pdAf2IJblLjkKeUWwkiEp_3dxEoYCBFUtNlfTVuMTTxWiHZlmAA-TCWExBl42KQ8Vx9DD5xxxV8OmYfeGdzfUSTZ_qmsNGCP7wuypumYKYvagPmFos-4kgSnN5UYj4cx4_YKZqKH8avwZJfnja4lPMp9X_2lIrCdWeig9pYVAkDTfdf0jtSLIZ_fJY-MIMdCZCof0sHTmQHoVHZHDiTbqYMU7XwZws0SjYpwmSnDQhZ0A-njyglWZjuinxGqsI09zjIA-ZUV5g-WNbNfwm3RJ9xhmbKSns6XBzkDaQKQIIgWWP-qswEP7cMpa9JdQJVzzGzDhHwVbC5X5jpcZhOpQRLFlgtIHoNdWTR3yTLm7FlQXBXrDZc4QM9Q3SyYVNtaUNx2YmliHtmT2APoSMMlh624Mnbb2BHampKquN3P643-CgS-3wtDw0L_kb7_5HvGQlGqD3SRG6kF5BOfDU71uP0YncrzLMMSmJJRYxCkGe_hXmN4aAAOsFJ7YlX481ZHmFF5X3sIR8CLiIeDKzhXOwQi-ROEqvZwq_D7JDTNkKG0s7tjmp0CuxSPlMF-dYImt5DHgQtNnxFc7pjjSvjE8MBcGCSqGSIb3DQEJFDEKHggAcABpAG4AZzAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNzM1ODUxODg4NzYyMIIEQQYJKoZIhvcNAQcGoIIEMjCCBC4CAQAwggQnBgkqhkiG9w0BBwEwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFIQVlcb11NV71Xob726EKV4iQOg2AgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQ-m25PwxVJLdRRqyDH618LoCCA7AQcptAIhfvFUOl2B5pVSEBocX66xnyTXAn0uiwgrkIKgNakDBq_5TgFAQaoyXw3CksXmpjOfnWCNxeBDQ88RU_lyLgFwLl6_abB9eRR9nf17VkGwmw9I56SkXO0-QV-aEvBoOkMD-Kd6dtShskg7kI52Tr0_OmOuTtpyg_NNR93J6QCLYrb-PjQdwq5-BbFTU5r3zL9HhK9QWIOSZjqw9LHsvx7NQMbYCXWk7Vd7HP0a7vdcp6TYtgPecsRAomtlVzxQ0aOcLjhTtIu6tDC1wH9rtSbNxSMoDDwsPTNnpSeN3-Yzbp8qqEFhi4eJq9H5-HGgaowbfukrrUk6tlEiVU2GanMndJriRIhE9PvmDdcVy3lunZ1x_jozY-MpqgYuutWGhRHP58Q9wwZleVeeIdjZOm2ADseb27bWgbF4SR0pvOx7Gf7ZZHAESTpkPMutRic7Lt0TInGyYd1-LYay1HvSuY-SGpkkHDjaNClBQ4LZ4N8misgEfP4pmbEH_DxKjVQEpDhnad1SR2pg6ThMjPYL1XZVrcZXdouCPTGft8k_lMFqs6ZcCgza1ueRhy4jzNF8kMJ_zMeOX3kHhwISanNEBUe0aSqpNaCGN2x3as3UULOBDWwAmQTM_M3AzEX3NKv4ZmfzX5VlOd5GraQvdjbdlckdGC93_mOpt2AsZs_L3XDlhk_yML4S_e23BJhLKVtyhrB180YRQy4Bkb2sX7vYGLCYQE_s9w2AQOZQfr6wb0tlk8-hcE2I-4UDjVpcqRwxu1Kg9FRSzhgq-eqJaNT1tVY_Z-BJkrmwWD8ZdN6zf5FP0YlbvLJKpOJMi_vVTqfoG2mITYwbcxhGXTg4MGsZggX0rht5uJEIX1-3sIv7liJeIAP5qcLFEnSfUUcJ5j6M4Zg9NS0c6AfMqO7Sfiouh9SxjeVGEd1xTO9PKFP6gocJW_Qq1aXhuyPnHCbk3kUNAlLEDa9yNszAYqeTyDCLNpxRwbi1zHeiaDETnwngKlE7KRdWTbhRJ7rfrXs3KpEEeZgb1N35ZFi0j5k-zsj4namgv86QzHilDh8PgOmDj0_ueNw3Jde4yC-db-iTFRySgfTUnwvkzVYsI_O48DwwyPyi8PMVnaMFOylnqOQvaAaZ9O5KdqSRSnVvFSW5K44gKJ4dJ14wnICvrHbdSEbWwT0B3JXutLvMu-wd1jdhhfw0lV9Wpi6crfhdTkk2mfnW9L1gxONeqGIGDjOVhHDVod-68p5GfvBRZXQDHcUjBNMDEwDQYJYIZIAWUDBAIBBQAEIP-IiDHhHUT-35PcbBNPq_p8-9LENbKqf0SyUozFaVijBBS1fZ7XSUc6vj-xMrbNAH_y_-5NOQICJxA=", - "format": "PKCS12", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..gVeXHink3QWNt1epfwgDUQ.t0SNfTR3XBMc1HSscAdnMj4YMLntPZ0T4eJxt4QNYe0.0KGyXlb-966FjXAVMkAIyg" - }, - { - "id": "tiq4n26axjircjk30oz5zf6k3", - "fileData": "MIIKUAIBAzCCCfoGCSqGSIb3DQEHAaCCCesEggnnMIIJ4zCCBaoGCSqGSIb3DQEHAaCCBZsEggWXMIIFkzCCBY8GCyqGSIb3DQEMCgECoIIFQDCCBTwwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFLQ0848EZD6gPUE_cf3A9mwmcaiNAgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQrIDyyig5vv5b41nRTJ4aSgSCBNA1rjNcEmpE7k9YfCK3Q6zB32mzFgRq4kCy-EPdPn291BPsAFaxNmiNB6rz18D_XORoYfbe9LnCY6hhFseljUHGzzJ6D3VNwNWuj1lls1wo5nFlHCd2bVLFpI2kUdDrym8Z7sWBrrUvw3bqcMJm91_SEFwzcnkGDXTYI2paxkeqtR5hPyZ1EsEk6qfTZKyWJE6-C5ZRfQRQ03TFl1iU8eAYZ_zZU_txrRek-M3uPVN9C4fAElj_naWlxv_kRCqAThQVwCYyxL6-SG_AN0Z8mRR9Lc12mMdFzms3WCXBehJyi8rNsu3htRc-PlP7JPIpHvbU4hKDdVV2YhcyieDucqn_uazt-YOKm_o_z7v6Al6TGLBCXFJAwNrVFtbNHxRaYlJTSD_-Lw3LLodPo20vdrEFYh93hMQ6DNxEcDPMQWP9l7zDCilShAgWclzwpNYyZKW0DbMBI53L51Ar4PgnNZd0JppouPXHzLEc3bYbIO_VfYQgeSfey-5UHITMk-FJ-0dfpJsfDg-bnoaRdTPnCcVPoml06BG2s4x1n7A185XGkhzBmZm5T1JRNsOtR3Atm1CvtSuPGdLsd0Yh5C15dTYMxM8Vq6fjoKqJDmo2BrBLgzhrSrPZKb5o3R0hEkcYfRlZwxiIasqxyhaGyR1DiN89s7zEkrmon4dYYgzfoipq0sh9Cc88Mvlej8tkIpKQxYRc8ggqln7lyiVj_FLCgezRcyPiukGchDlQgJqP7YQTmcMqtfH1HqRPmNmw4JKuQYTWjfKObbNFHWQmU9H_TeWWfGN9gwrS030kxmgr68CmETCqnjqmFK2sRDdtPzZcra5D3lBk4Z1VQfrR180NmmWiwQYvPwwu9hJpFe1eQVxE43EuJz4JNfU97Om8I35zKWuHA2lIR_DNL8HmaJZIcXYqneihe662mFc7qx8VhednFZNZq8P-r0dj1t3Yv9C6u-5sX0Prz6VNe62cHR3krs5Tgd9R3YxfH_wGWCpT_iH1bPxZhgIJcUYQ0Li8Y42ok10X5jZZAz84AXje0LmmTugGNWXgfhRmAfNDqMihPn443Z_umC7jW1NuDCIYv57Tll3uh0xqPpcjIyjuLLMEb8tyPScvqPQqAYrJPQ9gSVaUAwftzOkCg-eAqb8xYxZW9W89hmOSOudkU4MmH9IQJw3IeJzsGqnuxA3_S4PLa5G3Cs18ybVuVH4ScmgO9S753BCyVUu_8I60bLhQdYT36LqtK3SrJiOhwgqIG16utdw2kD2I_tkM04HMN-1sEZEk1_Md6UE1F0GbGm9QsYnagHu-BGd6MWntE_CMvGYtcnomTC548xMbAGeRotaEBkygZRoh92TZBAtOBwYz1YfemGAslLd7EnK0aBbYpx0fJWT9Lokclbxbam2Lrx16DsBjbw03istMoob8nDNiih6LQYDeqyMbCxJiHhyYs-xpfxPVoE5UKgxIKgpnRvJL6jEitwYtoB077Farme4YW3VFdvXT_NIzDi7uVGvrBhbpERVFqMn1zq7Zfl-bJJij-2AXyih8ETjI-WG9rOXXyJctxTsbeNotVgklLCZDGqD7PchcVaz1QwDPEphNnugQmKR-CrVylUnpx7081z4ZMtGaBSmgwdudRbZcfa-66CJFyuEewjE8MBcGCSqGSIb3DQEJFDEKHggAcABpAG4AZzAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNzM1ODUxODg4NzM3MIIEMQYJKoZIhvcNAQcGoIIEIjCCBB4CAQAwggQXBgkqhkiG9w0BBwEwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFBKpNCiu7LPjMk2pt9v0sLpDSfXTAgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQx78GwXfQZdSc7-2ZsHqdG4CCA6B5oCi9i7w4kmfOsUlSdb2WhxF5AI4FzZovbh6H4-8eDxZwEVWu1tiSXyJEfpOxvo-5EMOAvOCZ2VUj8SqmWGkCuzDixX8mSD4zuCwIg9QrhZ2r3LBJtMosrewrfsvc77Vw9aGtkIuK6inJQe8BG0BijuGsvjMjNTQGJOMp_63pE-Y4Xvkt6uv0YHJCCZotmzy0pjrRS8JY4h0NEf1jo9CEcH-yI2skFJtC3XrbQsur5UrIlWzEibfQSO6ozQbO2cGnFEsfRNLtTkl4QMIj98DVcBh9MRisapysmD_vWFGeXJPaDeMrV17JBmNzbLNZ_q0EJ2CPr-2VX9nmAyoYL7MIbAYChxzaCM8Xl2dlXe9lD7DBpEbsz7rakCEwAG0Rf0yw_lOwf1FUDFmt4mYJJPGXC3L5Mf48XpWilfU3toqNDhi1KtHuA7OymYBBZJw9jC9_cHg9KXak-U6068pfYe57SbrEwE4esSPtn6jF4uWq3-G3LniC_oHR9BCllZOB-1otGR7Z3rtterPoZFpdNWaUzfGXLFQlGx7g4_5zccVkUGSO43imjO8fLRvDEpOXc61bAbXct7nEnGEzlHki2wrzn9PdnRrpJm6nwQQY5yCu2jtMU12xBE7XhBW-1be4HKrUFknXcdORZEI3Zrqhaj_3IMudg_MXWhD5vcdyyNmeRd7ggul3-9I1TCYXhWRYtsBee8E7xW9rZfTRZ3REC1XOecOrMqsQlUTATQ5oiWO4VooDI1mVTiciK-IAk5CK-0H5Pwq20i8I_4NuWPbelNb76iMvdteHlygCSSp5-MvghfIwqClhqW0rMeAc-kLC8fzrZjME2L5WPgpqc8cKHm-xcxgSLbGpgHaRsS-ZxBuOi0tOGeZ6hknPlFnNmBttlJmNK2O8ykTNX6mE8I8pRoPCgUTYNNuhDCArBVwAV_q4vlEAMmBz7yBajG7CGQgFeU_r10lEKOyQSpG8J2aq2WeV7VQI6BLwXHiLfY7bakW5txu_X3z1DSDlMqFaGon1D6ic8aTPDjAxwNKd06q_9-0Eg-CyjYNK8JKsEqglh794WtK4iaVLmJPlcU0qReHLvOHqVYghgEgH4mpWAIEvXrSnRd-2HKnI2_5HVL5hA9NjbQkm5hLq1xr15320nTdVat10MNwr63OkDd8DaLwznK_Baq5Akrzu8i-ejKAxwitnmXSavdLSiVbth95u320yheHvkc6MLt3vtFOjATVXLq3VME0wMTANBglghkgBZQMEAgEFAAQg_7SjIvZ0aEKK1Apo2CkUIBNTbC8vQUFECFZZfc1fMHIEFItpHnkFo2hGFRTpr6cnzSrxUN1mAgInEA==", - "format": "PKCS12", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..YD9GwH9hHVbqNjRm2lbFrg.Y7USHUUM7NPHoScEqgvKdE3ZLfLlavaRNOQM3nNxSEY.wGYYwuzkXbTeAIK4r9Fq0w" - } - ] - }, - { - "resourceType": "/keyPairs/signing/rotationSettings", - "operationType": "SAVE", - "items": [ - { - "id": "9vgmnd36wykte1l2nm8s8uead", - "validDays": 36500, - "keySize": 2048, - "signatureAlgorithm": "SHA256withRSA", - "creationBufferDays": 9125, - "activationBufferDays": 3650, - "keyAlgorithm": "RSA" - } - ] - }, - { - "resourceType": "/keyPairs/oauthOpenIdConnect", - "operationType": "SAVE", - "items": [ - { - "staticJwksEnabled": false - } - ] - }, - { - "resourceType": "/certificates/groups", - "operationType": "SAVE", - "subResource": "STS Settings Mutual SSL Authentication Certs", - "items": [ - { - "id": "ycrgw3j4ckw91gxdmd479qftb", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9XZ0F3SUJBZ0lVUzJUQkNkUnpwSzRaemUrSERLakI5RVFTSHFZd0RRWUpLb1pJaHZjTkFRRUxCUUF3WGpFTE1Ba0cKQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOUE1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeElqQWdCZ05WQkFvTUdWQnBibWNnU1dSbApiblJwZEhrZ1EyOXljRzl5WVhScGIyNHhEVEFMQmdOVkJBTU1CSFJsYzNRd0hoY05NalF4TWpFeU1qTXlPREkwV2hjTk1qY3dPVEE0Ck1qTXlPREkwV2pCZU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eER6QU5CZ05WQkFjTUJrUmxiblpsY2pFaU1DQUcKQTFVRUNnd1pVR2x1WnlCSlpHVnVkR2wwZVNCRGIzSndiM0poZEdsdmJqRU5NQXNHQTFVRUF3d0VkR1Z6ZERDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpkb0d1cmdEdlNSQkwyY0llVWFDWTNwbzVZRFpuVjFleXVPUVR4UWM2T1QySlMwCis0MGdKYkptZk5yYmNPU3QrMURieHpQK0l4YmxrY3o1NjlWT0M1bGJST24zOHllYU1VMzJYYy80REdTcDFIQ1kvSmZTeWd6LytxcjgKOFlUcU1hSTIxQWJabkFpWTV4MFJ3NTZJRG1KZ2xYYVhlVmJDVUp5N29QVHlBb1lZVDkzREpEazQxWmU1MVVjVG1Vc1RLTjRLM2d2dgpTYVJ1eXE1K2c2RVhCcTdBa2VPbmJQMGJTSHliTjFLRVY1QlhOTnBnazloMEp3M1BFK3FrbS81bllSenhCZjRSQS9BZ2Z2OWVzRzlOCnozWGdEb3dBR0JteHIrclUvbmE3cHdFRXVkTWg2NjhERURlUlZ3aDFaYXBZcEJ0VmN4TUhtZEpQZ0ZKckJsbzZtTUVDQXdFQUFhTlQKTUZFd0hRWURWUjBPQkJZRUZHSmMzWjBqOWtYUHNUbW1iZ0FzWS9QSzJjdXBNQjhHQTFVZEl3UVlNQmFBRkdKYzNaMGo5a1hQc1RtbQpiZ0FzWS9QSzJjdXBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSlZCdmNIaGgrMDBnelEwCnBuWkt0Ukp4dkVnK3BHaCtCOUUrNWkyUHNOR3lJQXZBWHc0bWRCY1FaS3hmaVhNMzFaRTJnZTFtUCs0ZGkxMStQS1lOSDJFOTczUEwKSit3R0hlUVoxRVRERzVmbzc5dDBNRzFSekh0R29pclpXN3Y0Qk5VSTZaTTJGakVhQ090WmcxclVoa2RJZnFEeDRDZU5qemIwcmhYSQp6WE5UUzRZNlZseFdBclFud0FncVB0YjVwb0pHM01tLzNmNnVRZy9sMExJS1RZL0dSNnlRc05Da3pUWlFocklwWGo0UnBxblgzUWdECjFJV1RvTW9uN250cDRnQVAvbEFTTTUveG01SnpiNmRtRitob04wNzNnMDJVZVYyVERMemU4MCtLK1hyMUdaZWVVTHVYTnJoT0VYRFIKeXR2dWJlOE9YUFBZNi96Q3BoVmIyMWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/secretManagers", - "operationType": "SAVE", - "items": [ - { - "id": "testSecretManager", - "name": "Test Secret Manager", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.secretmanagers.cyberark.CyberArkCredentialProvider", - "location": "https://localhost:9999/pf-admin-api/v1/secretManagers/descriptors/com.pingidentity.pf.secretmanagers.cyberark.CyberArkCredentialProvider" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "APP ID", - "value": "testAppId" - }, - { - "name": "Connection Port", - "value": "18923" - }, - { - "name": "Connection Timeout (sec)", - "value": "30" - }, - { - "name": "Username Retrieval Property Name", - "value": "username" - } - ] - }, - "lastModified": "2025-01-02T19:37:46.072Z" - } - ] - }, - { - "resourceType": "/pingOneConnections", - "operationType": "SAVE", - "items": [ - { - "id": "noeOvj5ltBnf4rcmtZAKdJ", - "name": "internal_brassteam_893438732", - "active": true, - "encryptedCredential": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..fG2nO6u8N6RRXRfo4EQTkQ.tI42SGPft_Q-orzKHKhEudp1nQz-omqC_3CyV0rlNTjrcu4YLHV1ytB_O0tV0xh9KHx2_250ISGtNiACtdh5mz0N2RG4k57ZE7wDfftECtNaDvB4Ay4lvWDL20o76w03Uh27OqJeTsJ_oZs2DcRv5vyFSP7AiM-bdFHTUzb0rROxLEp0ogmv73B739kqtIdEk9CgImMl6PwZxDf8xESyrYJhB5xG74uXbW6-alofdjskdgCmXgvARIBegH8ztox_zTYK23O6hiTngE4lxZ712qUHRLUy6TWrUR435hNPixBviW74Yr1S-TyVgKvdrMUYrS5V1DHJmjqv2SPbBpe7pVixlSba-EVmG1WJ-qZ4HpzmITbXY4doft90XYZxRTDLpZCJmP4OeI8ocnIpVv6gjG1PFofpELm7VoVpHNz4kueR7rmGeYl_5G1GALmcCIqJARKqaj89DKEnIbs8CZY36EFwLJ9z47SKSucHMpPw4Aw7M52MPDK8V59Tz3IU35_RWYJQmHeCL2ZGzq6aZeLAwaDP-DLg0ojtyRilNSixuBqWv2_s0L5OA1BrjY1pSLmnGLwknqG7n8li7b5OMnY3FpifFVb6mAVntdfxUI5lfUbG_HAm-OzwIf5AgTjd1cETkb6OwRJkx4660obEf6oSFGuB6EkXumyx4YM9MpmarVeU3JDTsbFJFF4SSVlMooM5AjxHEyFDPf96CIXBHe4mb_e8HDVNNsg7WISnAb1Tovgx7meI_pwvqPHEfMmAfxiHva3qRM9eRHXB75UuVpiqHfd67lTIVMUS10zB5I2Oh4PV9VLm8ytYnH-xCs46xPAErW4XrBtVp5-Sxp11Gsl11egezjjjl_1L4eo-eW7Cok-UqEnl87on1ZCNuYJvXB8iL6E4LnFbclzFV0xYN5Ex5LrWt5osHn8qoKcKlovrVA1A9FIZ2tW02An8gX66N1R5wUESCNHG1hpqTYVUF92yLqIke11CotygnVf4zJrqM98Ytvw2aW-Nda3y8dKDrETc7g-sXT376BGoZFpNbPWid4MaQPzC_mCoqyjdE1yw4GsshUF6ksQtcBQQ6X1ga5ozGb3C6TuxrvuD2inekbMnF67UKluN6r4NjtBCsnVkSrKmIsrI_gOAsHMU_GgeA7V4Eb3AU4eSbQj_Sk8rGSqFirP4Ce0iMcrNuygnCXScU61ff45ogTYRCvkytoT_SPVZGhlF9DhTGxSExLnGNPDc-6ZqHlis-o5qCQ7ZrnOcMlCgd4bOnoXyQUSAP1PptYSfIqmn6eWZWzkFRDSsxBI2kXuPlEUavZb7wbtuV51VkxxZVTuTHShOKta98RrjXL62Qjy9Yvumv3ulZXwDm797O-VTIPWeiEvdOlFscPmLEgqxGK6XEtmPBdPpznJ9btm2YxtJVenaqI53jvyhSUbmk34zaGR3EATHkyITUjtuw_5j_CFg1OMvcZbhEKfdPt4Xnxd8UqhGPiV1GbXw3UcY6oarcWFqs6v56OvftoVGBgckxjzr76CByO-KHM0XLelDnzkCNxXFPHDsp662tKOfSMgowllSM4dfaUZz7KvrmrFGco6unKup5HbwtJw1D_nft0vwrCaTXdQybcoZpfJqbOtw2IyT-mhR18QhgJv22w_XFfRoYTo1L7NuIngSdXxILlvskSdgcP6n7EP6zR0jWs6L64nZ_7lI9Zxg88mNBxv_dXtQmPLsK4sHg-qG9-7yaa5B8z_VY2xIfBIysp7Wnw.09YLtWJ2ySQEySbFxfF4Eg", - "creationDate": "2025-01-02T19:37:46.117Z", - "credentialId": "971b5d20-0955-4030-b49b-7e349b3b9b1e", - "pingOneConnectionId": "554257ac-76ca-447a-a210-722343328312", - "environmentId": "f5901536-2b60-4d4a-a987-3d56aadad46d", - "organizationName": "internal_brassteam_893438732", - "region": "North America", - "pingOneManagementApiEndpoint": "https://api.pingone.com", - "pingOneAuthenticationApiEndpoint": "https://auth.pingone.com" - } - ] - }, - { - "resourceType": "/dataStores", - "operationType": "SAVE", - "items": [ - { - "type": "LDAP", - "id": "LDAP-PingDirectory", - "maskAttributeValues": false, - "hostnames": [ - "localhost:1389" - ], - "ldapType": "PING_DIRECTORY", - "bindAnonymously": false, - "userDN": "cn=pingfederate", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..jVe3x5VP0IgQZvJr2JLHfg.XDPhm9vICFG6gX2ZRZNmnw.Xldpt0OEEvnVqKemr8dHCA", - "useSsl": false, - "useDnsSrvRecords": false, - "name": "PingDirectory", - "hostnamesTags": [ - { - "hostnames": [ - "localhost:1389" - ], - "defaultSource": true - } - ], - "lastModified": "2025-01-02T19:37:46.201Z", - "retryFailedOperations": false, - "testOnBorrow": false, - "testOnReturn": false, - "createIfNecessary": true, - "verifyHost": true, - "minConnections": 10, - "maxConnections": 100, - "maxWait": -1, - "timeBetweenEvictions": 0, - "readTimeout": 0, - "connectionTimeout": 0, - "binaryAttributes": [], - "dnsTtl": 0, - "ldapDnsSrvPrefix": "_ldap._tcp", - "ldapsDnsSrvPrefix": "_ldaps._tcp", - "useStartTLS": false - }, - { - "type": "JDBC", - "id": "ProvisionerDS", - "maskAttributeValues": false, - "connectionUrl": "jdbc:hsqldb:${pf.server.data.dir}${/}hypersonic${/}ProvisionerDefaultDB;hsqldb.lock_file=false", - "driverClass": "org.hsqldb.jdbcDriver", - "userName": "sa", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..cgdPSsU0UfdWiwPsPqxGUA.TRaaGAQls383_kOGr0PgXQ.z6_gZTKKD3AjU9eT22eTXA", - "allowMultiValueAttributes": false, - "name": "ProvisionerDS (sa)", - "connectionUrlTags": [ - { - "connectionUrl": "jdbc:hsqldb:${pf.server.data.dir}${/}hypersonic${/}ProvisionerDefaultDB;hsqldb.lock_file=false", - "defaultSource": true - } - ], - "lastModified": "2025-01-02T19:37:46.221Z", - "minPoolSize": 10, - "maxPoolSize": 100, - "blockingTimeout": 5000, - "idleTimeout": 5 - }, - { - "type": "LDAP", - "id": "pingdirectory", - "maskAttributeValues": false, - "hostnames": [ - "pingdirectory:1389" - ], - "ldapType": "PING_DIRECTORY", - "bindAnonymously": false, - "userDN": "cn=pingfederate", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..e33Qf9teVnpwxWVlc005gQ.tT6vc5-7C_nXBHShlyYWfg.h5eDFEzXeX4OCq56r_h0gw", - "useSsl": false, - "useDnsSrvRecords": false, - "name": "pingdirectory", - "hostnamesTags": [ - { - "hostnames": [ - "pingdirectory:1389" - ], - "defaultSource": true - } - ], - "lastModified": "2025-01-02T19:37:46.233Z", - "retryFailedOperations": false, - "testOnBorrow": false, - "testOnReturn": false, - "createIfNecessary": true, - "verifyHost": true, - "minConnections": 10, - "maxConnections": 100, - "maxWait": -1, - "timeBetweenEvictions": 60000, - "readTimeout": 3000, - "connectionTimeout": 3000, - "binaryAttributes": [], - "dnsTtl": 60000, - "ldapDnsSrvPrefix": "_ldap._tcp", - "ldapsDnsSrvPrefix": "_ldaps._tcp", - "useStartTLS": false - } - ] - }, - { - "resourceType": "/notificationPublishers", - "operationType": "SAVE", - "items": [ - { - "id": "exampleSmtpPublisher", - "name": "exampleSmtpPublisher", - "pluginDescriptorRef": { - "id": "com.pingidentity.email.SmtpNotificationPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/notificationPublishers/descriptors/com.pingidentity.email.SmtpNotificationPlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "From Address", - "value": "example@pingidentity.com" - }, - { - "name": "Email Server", - "value": "example.com" - }, - { - "name": "Sender Name", - "value": "" - }, - { - "name": "SMTP Port", - "value": "25" - }, - { - "name": "Encryption Method", - "value": "NONE" - }, - { - "name": "SMTPS Port", - "value": "465" - }, - { - "name": "Verify Hostname", - "value": "true" - }, - { - "name": "UTF-8 Message Header Support", - "value": "false" - }, - { - "name": "Username", - "value": "" - }, - { - "name": "Password", - "value": "" - }, - { - "name": "Test Address", - "value": "" - }, - { - "name": "Connection Timeout", - "value": "30" - }, - { - "name": "Enable SMTP Debugging Messages", - "value": "false" - } - ] - }, - "lastModified": "2025-01-02T19:37:46.288Z" - }, - { - "id": "exampleSmtpPublisher2", - "name": "exampleSmtpPublisher2", - "pluginDescriptorRef": { - "id": "com.pingidentity.email.SmtpNotificationPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/notificationPublishers/descriptors/com.pingidentity.email.SmtpNotificationPlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "From Address", - "value": "example@pingdemo.example" - }, - { - "name": "Email Server", - "value": "pingdemo.example" - }, - { - "name": "Sender Name", - "value": "" - }, - { - "name": "SMTP Port", - "value": "25" - }, - { - "name": "Encryption Method", - "value": "NONE" - }, - { - "name": "SMTPS Port", - "value": "465" - }, - { - "name": "Verify Hostname", - "value": "true" - }, - { - "name": "UTF-8 Message Header Support", - "value": "false" - }, - { - "name": "Username", - "value": "" - }, - { - "name": "Password", - "value": "" - }, - { - "name": "Test Address", - "value": "" - }, - { - "name": "Connection Timeout", - "value": "30" - }, - { - "name": "Enable SMTP Debugging Messages", - "value": "false" - } - ] - }, - "lastModified": "2025-01-02T19:37:46.274Z" - } - ] - }, - { - "resourceType": "/notificationPublishers/settings", - "operationType": "SAVE", - "items": [ - { - "defaultNotificationPublisherRef": { - "id": "exampleSmtpPublisher", - "location": "https://localhost:9999/pf-admin-api/v1/notificationPublishers/exampleSmtpPublisher" - } - } - ] - }, - { - "resourceType": "/captchaProviders", - "operationType": "SAVE", - "items": [ - { - "id": "exampleCaptchaProvider", - "name": "exampleCaptchaProvider", - "pluginDescriptorRef": { - "id": "com.pingidentity.captcha.recaptchaV3.ReCaptchaV3Plugin", - "location": "https://localhost:9999/pf-admin-api/v1/captchaProviders/descriptors/com.pingidentity.captcha.recaptchaV3.ReCaptchaV3Plugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Site Key", - "value": "asdf" - }, - { - "name": "Secret Key", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..o7T4HppXKm-kANjU8t8avQ.01xAEx3TosV-Hq79Lt_h5A.KIUJsGsyQvM5_hYcjpeazg" - }, - { - "name": "Pass Score Threshold", - "value": "1" - }, - { - "name": "JavaScript File Name", - "value": "recaptcha-v3.js" - } - ] - }, - "lastModified": "2025-01-02T19:37:46.323Z" - }, - { - "id": "exampleCaptchaProviderV2", - "name": "exampleCaptchaProviderV2", - "pluginDescriptorRef": { - "id": "com.pingidentity.captcha.ReCaptchaV2InvisiblePlugin", - "location": "https://localhost:9999/pf-admin-api/v1/captchaProviders/descriptors/com.pingidentity.captcha.ReCaptchaV2InvisiblePlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Site Key", - "value": "exampleCaptchaProviderV2" - }, - { - "name": "Secret Key", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..u286rd3MOERi4xzzKUwLaA.0okr6lY8i_0z-EiqfgE1rA.GNL3zQoBD2S1h6SumzUmAg" - }, - { - "name": "JavaScript File Name", - "value": "recaptcha-v2-invisible.js" - } - ] - }, - "lastModified": "2025-01-02T19:37:46.348Z" - } - ] - }, - { - "resourceType": "/captchaProviders/settings", - "operationType": "SAVE", - "items": [ - { - "defaultCaptchaProviderRef": { - "id": "exampleCaptchaProviderV2", - "location": "https://localhost:9999/pf-admin-api/v1/captchaProviders/exampleCaptchaProviderV2" - } - } - ] - }, - { - "resourceType": "/serverSettings", - "operationType": "SAVE", - "items": [ - { - "contactInfo": {}, - "rolesAndProtocols": { - "oauthRole": { - "enableOauth": true, - "enableOpenIdConnect": true - }, - "idpRole": { - "enable": true, - "enableSaml11": true, - "enableSaml10": true, - "enableWsFed": true, - "enableWsTrust": true, - "saml20Profile": { - "enable": true - }, - "enableOutboundProvisioning": true - }, - "spRole": { - "enable": true, - "enableSaml11": true, - "enableSaml10": true, - "enableWsFed": true, - "enableWsTrust": true, - "saml20Profile": { - "enable": true, - "enableXASP": true - }, - "enableInboundProvisioning": true, - "enableOpenIDConnect": true - }, - "enableIdpDiscovery": true - }, - "federationInfo": { - "baseUrl": "https://localhost:9031", - "saml2EntityId": "samlEntityId", - "saml1xIssuerId": "", - "saml1xSourceId": "", - "wsfedRealm": "" - }, - "notifications": { - "notifyAdminUserPasswordChanges": false, - "expiringCertificateAdministrativeConsoleWarningDays": 14, - "expiredCertificateAdministrativeConsoleWarningDays": 14, - "threadPoolExhaustionNotificationSettings": { - "emailAddress": "", - "threadDumpEnabled": true, - "notificationMode": "LOGGING_ONLY" - } - } - } - ] - }, - { - "resourceType": "/serverSettings/systemKeys", - "operationType": "SAVE", - "items": [ - { - "current": { - "creationDate": "2025-01-02T17:59:19.959Z", - "encryptedKeyData": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCIsInppcCI6IkRFRiJ9..mBwXJBuBBcBb1iuF7_J_oQ.aD0ENEXvfHwWh_wJBCV6_uj98eJ8hFuLpstFj19YSB6kFScALLsDk_6r4oSzepix.dj8Utcj8m66bpfazwNsw8A" - }, - "pending": { - "creationDate": "2025-01-02T17:59:19.960Z", - "encryptedKeyData": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCIsInppcCI6IkRFRiJ9..lTUXjpewvJW85TygS2XTtw.tn7hmeI-KHBTvmRmev2pvqN8R2qeW5PHhMBTUa761u6vbJ7wH70SJyU-RoZ3mYX0.XLC2NhA4WJ4mmmE-RtRyQw" - } - } - ] - }, - { - "resourceType": "/serverSettings/outboundProvisioning", - "operationType": "SAVE", - "items": [ - { - "dataStoreRef": { - "id": "ProvisionerDS", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/ProvisionerDS" - }, - "synchronizationFrequency": 60 - } - ] - }, - { - "resourceType": "/serverSettings/wsTrustStsSettings", - "operationType": "SAVE", - "items": [ - { - "basicAuthnEnabled": true, - "clientCertAuthnEnabled": true, - "restrictBySubjectDn": true, - "restrictByIssuerCert": true, - "subjectDns": [ - "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US" - ], - "users": [ - { - "username": "testUser", - "encryptedPassword": "lPkeLavAtN0Qb4eY579HVgd5Uk3vdODyatGvGAV-tVQ.odLwjB--.2" - } - ], - "issuerCerts": [ - { - "id": "ycrgw3j4ckw91gxdmd479qftb", - "location": "https://localhost:9999/pf-admin-api/v1/serverSettings/wsTrustStsSettings/ycrgw3j4ckw91gxdmd479qftb" - } - ] - } - ] - }, - { - "resourceType": "/serverSettings/wsTrustStsSettings/issuerCertificates", - "operationType": "SAVE", - "items": [ - { - "id": "ycrgw3j4ckw91gxdmd479qftb", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9XZ0F3SUJBZ0lVUzJUQkNkUnpwSzRaemUrSERLakI5RVFTSHFZd0RRWUpLb1pJaHZjTkFRRUxCUUF3WGpFTE1Ba0cKQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOUE1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeElqQWdCZ05WQkFvTUdWQnBibWNnU1dSbApiblJwZEhrZ1EyOXljRzl5WVhScGIyNHhEVEFMQmdOVkJBTU1CSFJsYzNRd0hoY05NalF4TWpFeU1qTXlPREkwV2hjTk1qY3dPVEE0Ck1qTXlPREkwV2pCZU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eER6QU5CZ05WQkFjTUJrUmxiblpsY2pFaU1DQUcKQTFVRUNnd1pVR2x1WnlCSlpHVnVkR2wwZVNCRGIzSndiM0poZEdsdmJqRU5NQXNHQTFVRUF3d0VkR1Z6ZERDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpkb0d1cmdEdlNSQkwyY0llVWFDWTNwbzVZRFpuVjFleXVPUVR4UWM2T1QySlMwCis0MGdKYkptZk5yYmNPU3QrMURieHpQK0l4YmxrY3o1NjlWT0M1bGJST24zOHllYU1VMzJYYy80REdTcDFIQ1kvSmZTeWd6LytxcjgKOFlUcU1hSTIxQWJabkFpWTV4MFJ3NTZJRG1KZ2xYYVhlVmJDVUp5N29QVHlBb1lZVDkzREpEazQxWmU1MVVjVG1Vc1RLTjRLM2d2dgpTYVJ1eXE1K2c2RVhCcTdBa2VPbmJQMGJTSHliTjFLRVY1QlhOTnBnazloMEp3M1BFK3FrbS81bllSenhCZjRSQS9BZ2Z2OWVzRzlOCnozWGdEb3dBR0JteHIrclUvbmE3cHdFRXVkTWg2NjhERURlUlZ3aDFaYXBZcEJ0VmN4TUhtZEpQZ0ZKckJsbzZtTUVDQXdFQUFhTlQKTUZFd0hRWURWUjBPQkJZRUZHSmMzWjBqOWtYUHNUbW1iZ0FzWS9QSzJjdXBNQjhHQTFVZEl3UVlNQmFBRkdKYzNaMGo5a1hQc1RtbQpiZ0FzWS9QSzJjdXBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSlZCdmNIaGgrMDBnelEwCnBuWkt0Ukp4dkVnK3BHaCtCOUUrNWkyUHNOR3lJQXZBWHc0bWRCY1FaS3hmaVhNMzFaRTJnZTFtUCs0ZGkxMStQS1lOSDJFOTczUEwKSit3R0hlUVoxRVRERzVmbzc5dDBNRzFSekh0R29pclpXN3Y0Qk5VSTZaTTJGakVhQ090WmcxclVoa2RJZnFEeDRDZU5qemIwcmhYSQp6WE5UUzRZNlZseFdBclFud0FncVB0YjVwb0pHM01tLzNmNnVRZy9sMExJS1RZL0dSNnlRc05Da3pUWlFocklwWGo0UnBxblgzUWdECjFJV1RvTW9uN250cDRnQVAvbEFTTTUveG01SnpiNmRtRitob04wNzNnMDJVZVYyVERMemU4MCtLK1hyMUdaZWVVTHVYTnJoT0VYRFIKeXR2dWJlOE9YUFBZNi96Q3BoVmIyMWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/serverSettings/generalSettings", - "operationType": "SAVE", - "items": [ - { - "disableAutomaticConnectionValidation": false, - "idpConnectionTransactionLoggingOverride": "DONT_OVERRIDE", - "spConnectionTransactionLoggingOverride": "DONT_OVERRIDE", - "datastoreValidationIntervalSecs": 300, - "requestHeaderForCorrelationId": "" - } - ] - }, - { - "resourceType": "/serverSettings/logSettings", - "operationType": "SAVE", - "items": [ - { - "logCategories": [ - { - "id": "core", - "name": "Core", - "description": "Debug logging for core components.", - "enabled": false - }, - { - "id": "protocolrequestresponse", - "name": "Protocol Requests and Responses", - "description": "Log protocol request and response messages.", - "enabled": false - }, - { - "id": "policytree", - "name": "Policy Tree", - "description": "Policy tree debug logging.", - "enabled": false - }, - { - "id": "dsresponsetime", - "name": "Data Store Response Times", - "description": "Log response times for data store requests.", - "enabled": false - }, - { - "id": "trustedcas", - "name": "Trusted CAs", - "description": "Log PingFederate and JRE trusted CAs when they are loaded.", - "enabled": false - }, - { - "id": "xmlsig", - "name": "XML Signatures", - "description": "Debug logging for XML signature operations.", - "enabled": false - }, - { - "id": "requestheaders", - "name": "HTTP Request Headers", - "description": "Log HTTP request headers. Sensitive information, such as passwords, may be logged when this category is enabled.", - "enabled": false - }, - { - "id": "requestparams", - "name": "HTTP Request Parameters", - "description": "Log HTTP GET request parameters. Sensitive information, such as passwords, may be logged when this category is enabled.", - "enabled": false - }, - { - "id": "restdatastore", - "name": "REST Data Store Requests and Responses", - "description": "Log REST datastore requests and responses. Sensitive information, such as passwords, may be logged when this category is enabled.", - "enabled": false - } - ] - } - ] - }, - { - "resourceType": "/administrativeAccounts", - "operationType": "SAVE", - "items": [ - { - "username": "Administrator", - "encryptedPassword": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..zoe8s-EawoF5uNaA5bcNGw.U6EWDLaI4lNtmMPSCb8GgFlfon_ugdY0OwYMRpj2SYNys2lY8D5pVSUCMAJ-bz4XI8fet_8ekfgFG6C4DKSwCg.df5PlUPdVn_6dl6Fqv0R5w", - "description": "Initial administrator user.", - "auditor": false, - "active": true, - "roles": [ - "USER_ADMINISTRATOR", - "EXPRESSION_ADMINISTRATOR", - "ADMINISTRATOR", - "CRYPTO_ADMINISTRATOR" - ] - } - ] - }, - { - "resourceType": "/certificates/revocation/ocspCertificates", - "operationType": "SAVE", - "items": [ - { - "id": "opcey20sf9djwvk8snv1actzq", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9XZ0F3SUJBZ0lVUzJUQkNkUnpwSzRaemUrSERLakI5RVFTSHFZd0RRWUpLb1pJaHZjTkFRRUxCUUF3WGpFTE1Ba0cKQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOUE1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeElqQWdCZ05WQkFvTUdWQnBibWNnU1dSbApiblJwZEhrZ1EyOXljRzl5WVhScGIyNHhEVEFMQmdOVkJBTU1CSFJsYzNRd0hoY05NalF4TWpFeU1qTXlPREkwV2hjTk1qY3dPVEE0Ck1qTXlPREkwV2pCZU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eER6QU5CZ05WQkFjTUJrUmxiblpsY2pFaU1DQUcKQTFVRUNnd1pVR2x1WnlCSlpHVnVkR2wwZVNCRGIzSndiM0poZEdsdmJqRU5NQXNHQTFVRUF3d0VkR1Z6ZERDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpkb0d1cmdEdlNSQkwyY0llVWFDWTNwbzVZRFpuVjFleXVPUVR4UWM2T1QySlMwCis0MGdKYkptZk5yYmNPU3QrMURieHpQK0l4YmxrY3o1NjlWT0M1bGJST24zOHllYU1VMzJYYy80REdTcDFIQ1kvSmZTeWd6LytxcjgKOFlUcU1hSTIxQWJabkFpWTV4MFJ3NTZJRG1KZ2xYYVhlVmJDVUp5N29QVHlBb1lZVDkzREpEazQxWmU1MVVjVG1Vc1RLTjRLM2d2dgpTYVJ1eXE1K2c2RVhCcTdBa2VPbmJQMGJTSHliTjFLRVY1QlhOTnBnazloMEp3M1BFK3FrbS81bllSenhCZjRSQS9BZ2Z2OWVzRzlOCnozWGdEb3dBR0JteHIrclUvbmE3cHdFRXVkTWg2NjhERURlUlZ3aDFaYXBZcEJ0VmN4TUhtZEpQZ0ZKckJsbzZtTUVDQXdFQUFhTlQKTUZFd0hRWURWUjBPQkJZRUZHSmMzWjBqOWtYUHNUbW1iZ0FzWS9QSzJjdXBNQjhHQTFVZEl3UVlNQmFBRkdKYzNaMGo5a1hQc1RtbQpiZ0FzWS9QSzJjdXBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSlZCdmNIaGgrMDBnelEwCnBuWkt0Ukp4dkVnK3BHaCtCOUUrNWkyUHNOR3lJQXZBWHc0bWRCY1FaS3hmaVhNMzFaRTJnZTFtUCs0ZGkxMStQS1lOSDJFOTczUEwKSit3R0hlUVoxRVRERzVmbzc5dDBNRzFSekh0R29pclpXN3Y0Qk5VSTZaTTJGakVhQ090WmcxclVoa2RJZnFEeDRDZU5qemIwcmhYSQp6WE5UUzRZNlZseFdBclFud0FncVB0YjVwb0pHM01tLzNmNnVRZy9sMExJS1RZL0dSNnlRc05Da3pUWlFocklwWGo0UnBxblgzUWdECjFJV1RvTW9uN250cDRnQVAvbEFTTTUveG01SnpiNmRtRitob04wNzNnMDJVZVYyVERMemU4MCtLK1hyMUdaZWVVTHVYTnJoT0VYRFIKeXR2dWJlOE9YUFBZNi96Q3BoVmIyMWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/certificates/revocation/settings", - "operationType": "SAVE", - "items": [ - { - "ocspSettings": { - "requesterAddNonce": false, - "actionOnResponderUnavailable": "CONTINUE", - "actionOnStatusUnknown": "FAIL", - "actionOnUnsuccessfulResponse": "FAIL", - "currentUpdateGracePeriod": 5, - "nextUpdateGracePeriod": 5, - "responseCachePeriod": 48, - "responderTimeout": 5, - "responderCertReference": { - "id": "opcey20sf9djwvk8snv1actzq", - "location": "https://localhost:9999/pf-admin-api/v1/certificates/revocation/ocspCertificates/opcey20sf9djwvk8snv1actzq" - } - } - } - ] - }, - { - "resourceType": "/virtualHostNames", - "operationType": "SAVE", - "items": [ - { - "virtualHostNames": [] - } - ] - }, - { - "resourceType": "/redirectValidation", - "operationType": "SAVE", - "items": [ - { - "redirectValidationLocalSettings": { - "enableTargetResourceValidationForSSO": false, - "enableTargetResourceValidationForSLO": false, - "enableTargetResourceValidationForIdpDiscovery": false, - "enableInErrorResourceValidation": false, - "whiteList": [], - "uriAllowList": [] - }, - "redirectValidationPartnerSettings": { - "enableWreplyValidationSLO": false - } - } - ] - }, - { - "resourceType": "/incomingProxySettings", - "operationType": "SAVE", - "items": [ - { - "proxyTerminatesHttpsConns": false - } - ] - }, - { - "resourceType": "/protocolMetadata/lifetimeSettings", - "operationType": "SAVE", - "items": [ - { - "cacheDuration": 1440, - "reloadDelay": 1440 - } - ] - }, - { - "resourceType": "/protocolMetadata/signingSettings", - "operationType": "SAVE", - "items": [ - {} - ] - }, - { - "resourceType": "/serviceAuthentication", - "operationType": "SAVE", - "items": [ - {} - ] - }, - { - "resourceType": "/authenticationPolicyContracts", - "operationType": "SAVE", - "items": [ - { - "id": "DkhZxRcZchsed90U", - "name": "Fragment - Subject", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [], - "lastModified": "2025-01-02T19:37:46.770Z" - }, - { - "id": "QGxlec5CX693lBQL", - "name": "apc", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [], - "lastModified": "2025-01-02T19:37:46.783Z" - }, - { - "id": "default", - "name": "Default", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [ - { - "name": "firstName" - }, - { - "name": "lastName" - }, - { - "name": "ImmutableID" - }, - { - "name": "mail" - }, - { - "name": "SAML_AUTHN_CTX" - } - ], - "lastModified": "2025-01-02T19:37:46.788Z" - }, - { - "id": "samplePolicyContract", - "name": "Sample Policy Contract", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [ - { - "name": "firstName" - }, - { - "name": "lastName" - }, - { - "name": "ImmutableID" - }, - { - "name": "mail" - }, - { - "name": "SAML_AUTHN_CTX" - } - ], - "lastModified": "2025-01-02T19:37:46.792Z" - }, - { - "id": "wIdHhK789PmadmMS", - "name": "Fragment - Form", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [ - { - "name": "entryUUID" - }, - { - "name": "uid" - }, - { - "name": "mail" - } - ], - "lastModified": "2025-01-02T19:37:46.796Z" - } - ] - }, - { - "resourceType": "/passwordCredentialValidators", - "operationType": "SAVE", - "items": [ - { - "id": "PDPCV", - "name": "PD PCV", - "pluginDescriptorRef": { - "id": "org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator", - "location": "https://localhost:9999/pf-admin-api/v1/passwordCredentialValidators/descriptors/org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator" - }, - "configuration": { - "tables": [ - { - "name": "Authentication Error Overrides", - "rows": [] - } - ], - "fields": [ - { - "name": "LDAP Datastore", - "value": "LDAP-PingDirectory" - }, - { - "name": "Search Base", - "value": "dc=example,dc=com" - }, - { - "name": "Search Filter", - "value": "(|(uid=${username})(mail=${username}))" - }, - { - "name": "Scope of Search", - "value": "Subtree" - }, - { - "name": "Case-Sensitive Matching", - "value": "true" - }, - { - "name": "Display Name Attribute", - "value": "displayName" - }, - { - "name": "Mail Attribute", - "value": "mail" - }, - { - "name": "SMS Attribute", - "value": "" - }, - { - "name": "PingID Username Attribute", - "value": "uid" - }, - { - "name": "Mail Search Filter", - "value": "mail=${mail}" - }, - { - "name": "Username Attribute", - "value": "uid" - }, - { - "name": "Trim Username Spaces For Search", - "value": "true" - }, - { - "name": "Mail Verified Attribute", - "value": "" - }, - { - "name": "Account Disabled Attribute", - "value": "" - }, - { - "name": "Enable PingDirectory Detailed Password Policy Requirement Messaging", - "value": "false" - }, - { - "name": "Expect Password Expired Control", - "value": "false" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.125Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "mail" - }, - { - "name": "givenName" - }, - { - "name": "DN" - }, - { - "name": "username" - } - ], - "extendedAttributes": [ - { - "name": "entryUUID" - }, - { - "name": "uid" - }, - { - "name": "sn" - } - ] - } - }, - { - "id": "pingdirectory", - "name": "pingdirectory", - "pluginDescriptorRef": { - "id": "org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator", - "location": "https://localhost:9999/pf-admin-api/v1/passwordCredentialValidators/descriptors/org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator" - }, - "configuration": { - "tables": [ - { - "name": "Authentication Error Overrides", - "rows": [] - } - ], - "fields": [ - { - "name": "LDAP Datastore", - "value": "pingdirectory" - }, - { - "name": "Search Base", - "value": "dc=example,dc=com" - }, - { - "name": "Search Filter", - "value": "(&(objectClass=person)(|(mail=${username})(cn=${username})(uid=${username})))" - }, - { - "name": "Scope of Search", - "value": "Subtree" - }, - { - "name": "Case-Sensitive Matching", - "value": "false" - }, - { - "name": "Display Name Attribute", - "value": "displayName" - }, - { - "name": "Mail Attribute", - "value": "mail" - }, - { - "name": "SMS Attribute", - "value": "" - }, - { - "name": "PingID Username Attribute", - "value": "" - }, - { - "name": "Mail Search Filter", - "value": "" - }, - { - "name": "Username Attribute", - "value": "" - }, - { - "name": "Mail Verified Attribute", - "value": "" - }, - { - "name": "Trim Username Spaces For Search", - "value": "false" - }, - { - "name": "Account Disabled Attribute", - "value": "" - }, - { - "name": "Enable PingDirectory Detailed Password Policy Requirement Messaging", - "value": "false" - }, - { - "name": "Expect Password Expired Control", - "value": "false" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.141Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "mail" - }, - { - "name": "givenName" - }, - { - "name": "DN" - }, - { - "name": "username" - } - ], - "extendedAttributes": [ - { - "name": "entryUUID" - } - ] - } - }, - { - "id": "simple", - "name": "simple", - "pluginDescriptorRef": { - "id": "org.sourceid.saml20.domain.SimpleUsernamePasswordCredentialValidator", - "location": "https://localhost:9999/pf-admin-api/v1/passwordCredentialValidators/descriptors/org.sourceid.saml20.domain.SimpleUsernamePasswordCredentialValidator" - }, - "configuration": { - "tables": [ - { - "name": "Users", - "rows": [ - { - "fields": [ - { - "name": "Username", - "value": "joe" - }, - { - "name": "Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..AcscU84nJxctW3DLpLtYtg.TbnXFMwsWczwhOOKiA59dv_GvnguFKcqzT5Q6WmM6j0hi6-o5Cu841lMJwbaOTXW1wFMPo_oN_RSfgemVD2LIQ.kclQSHNUcLXNGjAjnfNgXg" - }, - { - "name": "Confirm Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..1w4OjpjNLzRL86GrhO-mbA.0HoCYeRsGMd0tnwqVPh_P5EsIFb2mMU3_IlUnvUn_9ZF1SNr1p-7ZoAadzFLZH01h776PhExOCFfYnwJvXEE2Q.4bXHFzFd3qna7JNBvtv37A" - }, - { - "name": "Relax Password Requirements", - "value": "true" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [] - }, - "lastModified": "2025-01-02T19:37:47.158Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "username" - } - ] - } - } - ] - }, - { - "resourceType": "/localIdentity/identityProfiles", - "operationType": "SAVE", - "items": [ - { - "id": "adminIdentityProfile", - "name": "Admin Identity Profile", - "apcId": { - "id": "default", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/default" - }, - "authSources": [ - { - "source": "SecurityKey", - "id": "SecurityKey" - }, - { - "source": "FIDO", - "id": "FIDO" - } - ], - "authSourceUpdatePolicy": { - "storeAttributes": false, - "retainAttributes": false, - "updateAttributes": false, - "updateInterval": 0 - }, - "fieldConfig": { - "fields": [ - { - "type": "TEXT", - "id": "fullName", - "label": "Full Name", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "firstName", - "label": "First Name", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "lastName", - "label": "Last Name", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "EMAIL", - "id": "email", - "label": "Email Address", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "PHONE", - "id": "phoneNumber", - "label": "Phone Number", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "TEXT", - "id": "username", - "label": "Username", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": true, - "Mask Log Values": false - }, - "defaultValue": "" - } - ], - "stripSpaceFromUniqueField": true - }, - "emailVerificationConfig": { - "emailVerificationEnabled": false - }, - "dataStoreConfig": { - "type": "LDAP", - "dataStoreRef": { - "id": "LDAP-PingDirectory", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/LDAP-PingDirectory" - }, - "baseDn": "ou=Administrators,dc=example,dc=com", - "createPattern": "", - "objectClass": "", - "dataStoreMapping": { - "firstName": { - "type": "LDAP", - "name": "givenName", - "metadata": {} - }, - "lastName": { - "type": "LDAP", - "name": "sn", - "metadata": {} - }, - "phoneNumber": { - "type": "LDAP", - "name": "mobile", - "metadata": {} - }, - "fullName": { - "type": "LDAP", - "name": "cn", - "metadata": {} - }, - "email": { - "type": "LDAP", - "name": "mail", - "metadata": {} - }, - "username": { - "type": "LDAP", - "name": "uid", - "metadata": {} - } - } - }, - "profileConfig": { - "deleteIdentityEnabled": false, - "templateName": "local.identity.profile.html" - }, - "registrationEnabled": false, - "profileEnabled": true - }, - { - "id": "regIdentityProfile", - "name": "Registration Identity Profile", - "apcId": { - "id": "samplePolicyContract", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/samplePolicyContract" - }, - "authSources": [], - "authSourceUpdatePolicy": { - "storeAttributes": false, - "retainAttributes": false, - "updateAttributes": false, - "updateInterval": 0 - }, - "registrationConfig": { - "captchaEnabled": false, - "templateName": "local.identity.registration.html", - "createAuthnSessionAfterRegistration": true, - "usernameField": "username", - "thisIsMyDeviceEnabled": false - }, - "fieldConfig": { - "fields": [ - { - "type": "TEXT", - "id": "firstName", - "label": "First Name", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "lastName", - "label": "Last Name", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "fullName", - "label": "Full Name", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "EMAIL", - "id": "email", - "label": "Email Address", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "PHONE", - "id": "phoneNumber", - "label": "Phone Number", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "TEXT", - "id": "username", - "label": "Username", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": true, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "HIDDEN", - "id": "ImmutableID", - "label": "ImmutableID", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "HIDDEN", - "id": "accountVerified", - "label": "Account Verified", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Unique ID Field": false, - "Mask Log Values": false - } - } - ], - "stripSpaceFromUniqueField": false - }, - "emailVerificationConfig": { - "emailVerificationEnabled": false - }, - "dataStoreConfig": { - "type": "LDAP", - "dataStoreRef": { - "id": "LDAP-PingDirectory", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/LDAP-PingDirectory" - }, - "baseDn": "ou=People,dc=example,dc=com", - "createPattern": "uid=${username}", - "objectClass": "inetOrgPerson", - "auxiliaryObjectClasses": [ - "pf-connected-identities", - "ubidPersonAux" - ], - "dataStoreMapping": { - "firstName": { - "type": "LDAP", - "name": "givenName", - "metadata": {} - }, - "lastName": { - "type": "LDAP", - "name": "sn", - "metadata": {} - }, - "phoneNumber": { - "type": "LDAP", - "name": "mobile", - "metadata": {} - }, - "ImmutableID": { - "type": "LDAP", - "name": "entryUUID", - "metadata": {} - }, - "fullName": { - "type": "LDAP", - "name": "cn", - "metadata": {} - }, - "accountVerified": { - "type": "LDAP", - "name": "ubidAccountVerified", - "metadata": {} - }, - "email": { - "type": "LDAP", - "name": "mail", - "metadata": {} - }, - "username": { - "type": "LDAP", - "name": "uid", - "metadata": {} - } - } - }, - "profileConfig": { - "deleteIdentityEnabled": false, - "templateName": "local.identity.profile.html" - }, - "registrationEnabled": true, - "profileEnabled": true - } - ] - }, - { - "resourceType": "/oauth/accessTokenManagers", - "operationType": "SAVE", - "items": [ - { - "id": "jwt", - "name": "JSON Web Tokens", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.access.token.management.plugins.JwtBearerAccessTokenManagementPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/descriptors/com.pingidentity.pf.access.token.management.plugins.JwtBearerAccessTokenManagementPlugin" - }, - "configuration": { - "tables": [ - { - "name": "Symmetric Keys", - "rows": [] - }, - { - "name": "Certificates", - "rows": [ - { - "fields": [ - { - "name": "Key ID", - "value": "k1" - }, - { - "name": "Certificate", - "value": "tiq4n26axjircjk30oz5zf6k3" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Token Lifetime", - "value": "120" - }, - { - "name": "Use Centralized Signing Key", - "value": "false" - }, - { - "name": "JWS Algorithm", - "value": "RS256" - }, - { - "name": "Active Symmetric Key ID", - "value": "" - }, - { - "name": "Active Signing Certificate Key ID", - "value": "k1" - }, - { - "name": "JWE Algorithm", - "value": "" - }, - { - "name": "JWE Content Encryption Algorithm", - "value": "" - }, - { - "name": "Active Symmetric Encryption Key ID", - "value": "" - }, - { - "name": "Asymmetric Encryption Key", - "value": "" - }, - { - "name": "Asymmetric Encryption JWKS URL", - "value": "" - }, - { - "name": "Enable Token Revocation", - "value": "false" - }, - { - "name": "Include Key ID Header Parameter", - "value": "true" - }, - { - "name": "Include X.509 Thumbprint Header Parameter", - "value": "false" - }, - { - "name": "Default JWKS URL Cache Duration", - "value": "720" - }, - { - "name": "Include JWE Key ID Header Parameter", - "value": "true" - }, - { - "name": "Include JWE X.509 Thumbprint Header Parameter", - "value": "false" - }, - { - "name": "Client ID Claim Name", - "value": "client_id_name" - }, - { - "name": "Scope Claim Name", - "value": "scope" - }, - { - "name": "Space Delimit Scope Values", - "value": "false" - }, - { - "name": "Authorization Details Claim Name", - "value": "authorization_details" - }, - { - "name": "Issuer Claim Value", - "value": "" - }, - { - "name": "Audience Claim Value", - "value": "" - }, - { - "name": "Not Before Claim Offset", - "value": "" - }, - { - "name": "Include Issued At Claim", - "value": "false" - }, - { - "name": "JWT ID Claim Length", - "value": "22" - }, - { - "name": "Access Grant GUID Claim Name", - "value": "agid" - }, - { - "name": "Publish Keys to the PingFederate JWKS Endpoint", - "value": "false" - }, - { - "name": "JWKS Endpoint Path", - "value": "" - }, - { - "name": "JWKS Endpoint Cache Duration", - "value": "720" - }, - { - "name": "Publish Key ID X.509 URL", - "value": "false" - }, - { - "name": "Publish Thumbprint X.509 URL", - "value": "false" - }, - { - "name": "Expand Scope Groups", - "value": "false" - }, - { - "name": "Type Header Value", - "value": "" - } - ] - }, - "lastModified": "2025-01-02T21:03:19.303Z", - "attributeContract": { - "coreAttributes": [], - "extendedAttributes": [ - { - "name": "Username", - "multiValued": false - }, - { - "name": "OrgName", - "multiValued": false - } - ], - "defaultSubjectAttribute": "OrgName" - }, - "selectionSettings": { - "resourceUris": [] - }, - "accessControlSettings": { - "restrictClients": false, - "allowedClients": [] - }, - "sessionValidationSettings": { - "checkValidAuthnSession": false, - "checkSessionRevocationStatus": false, - "updateAuthnSessionActivity": false, - "includeSessionId": false - }, - "sequenceNumber": 2 - } - ] - }, - { - "resourceType": "/oauth/accessTokenManagers/settings", - "operationType": "SAVE", - "items": [ - { - "defaultAccessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - } - } - ] - }, - { - "resourceType": "/kerberos/realms", - "operationType": "SAVE", - "items": [ - { - "id": "testKerberosRealm", - "kerberosRealmName": "Test Kerberos Realm", - "keyDistributionCenters": [ - "distCenterTest" - ], - "kerberosUsername": "user", - "kerberosEncryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..p7-lBq1Be8b9E7z-8F2kew.wqyvKe3Irq0yJ9GjbI3tQA.oAcTXO6pdze88hL_mwQyQA", - "retainPreviousKeysOnPasswordChange": true, - "suppressDomainNameConcatenation": true, - "connectionType": "DIRECT" - } - ] - }, - { - "resourceType": "/kerberos/realms/settings", - "operationType": "SAVE", - "items": [ - { - "forceTcp": false, - "kdcTimeout": "3", - "debugLogOutput": false, - "kdcRetries": "3", - "keySetRetentionPeriodMins": 610 - } - ] - }, - { - "resourceType": "/idp/adapters", - "operationType": "SAVE", - "items": [ - { - "id": "IDFirst", - "name": "Identifier-First", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.identifierfirst.idp.IdentifierFirstAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.identifierfirst.idp.IdentifierFirstAdapter" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Identifier Cookie Lifetime", - "value": "30" - }, - { - "name": "Allow Cancelling Identifier Selection", - "value": "false" - }, - { - "name": "Maximum Identifiers Count", - "value": "5" - }, - { - "name": "Identifier Selection Template", - "value": "identifier.first.template.html" - }, - { - "name": "Enable Risk Provider", - "value": "false" - }, - { - "name": "Risk Provider", - "value": "" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.471Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject", - "masked": false, - "pseudonym": true - }, - { - "name": "domain", - "masked": false, - "pseudonym": false - } - ], - "extendedAttributes": [ - { - "name": "entryUUID", - "masked": false, - "pseudonym": false - }, - { - "name": "uid", - "masked": false, - "pseudonym": false - }, - { - "name": "mail", - "masked": false, - "pseudonym": false - } - ], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [ - { - "type": "LDAP", - "dataStoreRef": { - "id": "LDAP-PingDirectory", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/LDAP-PingDirectory" - }, - "id": "PD", - "description": "PD", - "baseDn": "dc=example,dc=com", - "searchScope": "SUBTREE", - "searchFilter": "(|(uid=${subject} )(mail=${subject}))", - "binaryAttributeSettings": {}, - "memberOfNestedGroup": false - } - ], - "attributeContractFulfillment": { - "entryUUID": { - "source": { - "type": "LDAP_DATA_STORE", - "id": "PD" - }, - "value": "entryUUID" - }, - "uid": { - "source": { - "type": "LDAP_DATA_STORE", - "id": "PD" - }, - "value": "uid" - }, - "mail": { - "source": { - "type": "LDAP_DATA_STORE", - "id": "PD" - }, - "value": "mail" - }, - "subject": { - "source": { - "type": "ADAPTER" - }, - "value": "subject" - }, - "domain": { - "source": { - "type": "ADAPTER" - }, - "value": "domain" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - }, - { - "id": "OTIdPJava", - "name": "OTIdPJava", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.opentoken.IdpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.opentoken.IdpAuthnAdapter" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..P8-n1_WPyNyDX8d513tRVQ.h9TlPDdMcCffdJw9D15mwA.ietPcUo5-UJiOXr8VJBoNg" - }, - { - "name": "Confirm Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9.._hHGvkU_PjNVpGs_ZTjKIg.F1_wEgClWpvBWBGVWPMXEA.dzFiIh1nXNAs9tziAjBDzA" - }, - { - "name": "Authentication Service", - "value": "https://localhost:9031/IdpSample/?cmd=sso" - }, - { - "name": "Transport Mode", - "value": "1" - }, - { - "name": "Token Name", - "value": "idpopentoken" - }, - { - "name": "Cipher Suite", - "value": "2" - }, - { - "name": "Logout Service", - "value": "https://localhost:9031/IdpSample/?cmd=slo" - }, - { - "name": "Cookie Domain", - "value": "" - }, - { - "name": "Cookie Path", - "value": "/" - }, - { - "name": "Token Lifetime", - "value": "300" - }, - { - "name": "Session Lifetime", - "value": "43200" - }, - { - "name": "Not Before Tolerance", - "value": "0" - }, - { - "name": "Force SunJCE Provider", - "value": "false" - }, - { - "name": "Use Verbose Error Messages", - "value": "false" - }, - { - "name": "Obfuscate Password", - "value": "true" - }, - { - "name": "Session Cookie", - "value": "false" - }, - { - "name": "Secure Cookie", - "value": "false" - }, - { - "name": "Delete Cookie", - "value": "false" - }, - { - "name": "Replay Prevention", - "value": "false" - }, - { - "name": "Skip Malformed Attribute Detection", - "value": "false" - }, - { - "name": "SameSite Cookie", - "value": "3" - }, - { - "name": "HTTP Only Flag", - "value": "true" - }, - { - "name": "Track Authentication Time", - "value": "true" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.524Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject", - "masked": false, - "pseudonym": true - } - ], - "extendedAttributes": [], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "ADAPTER" - }, - "value": "subject" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - }, - { - "id": "ciamHtmlForm", - "name": "Customer HTML Form (PF)", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter" - }, - "configuration": { - "tables": [ - { - "name": "Credential Validators", - "rows": [ - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "PDPCV" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Challenge Retries", - "value": "3" - }, - { - "name": "Session State", - "value": "None" - }, - { - "name": "Session Timeout", - "value": "60" - }, - { - "name": "Session Max Timeout", - "value": "480" - }, - { - "name": "Allow Password Changes", - "value": "true" - }, - { - "name": "Password Management System", - "value": "" - }, - { - "name": "Enable 'Remember My Username'", - "value": "true" - }, - { - "name": "Enable 'This is My Device'", - "value": "false" - }, - { - "name": "Change Password Policy Contract", - "value": "" - }, - { - "name": "Change Password Email Notification", - "value": "false" - }, - { - "name": "Show Password Expiring Warning", - "value": "false" - }, - { - "name": "Password Reset Type", - "value": "NONE" - }, - { - "name": "Password Reset Policy Contract", - "value": "" - }, - { - "name": "Revoke Sessions After Password Change Or Reset", - "value": "false" - }, - { - "name": "Account Unlock", - "value": "false" - }, - { - "name": "Local Identity Profile", - "value": "regIdentityProfile" - }, - { - "name": "Notification Publisher", - "value": "" - }, - { - "name": "Enable Username Recovery", - "value": "false" - }, - { - "name": "Login Template", - "value": "html.form.login.template.html" - }, - { - "name": "Logout Path", - "value": "" - }, - { - "name": "Logout Redirect", - "value": "" - }, - { - "name": "Logout Template", - "value": "idp.logout.success.page.template.html" - }, - { - "name": "Change Password Template", - "value": "html.form.change.password.template.html" - }, - { - "name": "Change Password Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Password Management System Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Change Password Email Template", - "value": "message-template-end-user-password-change.html" - }, - { - "name": "Expiring Password Warning Template", - "value": "html.form.password.expiring.notification.template.html" - }, - { - "name": "Threshold for Expiring Password Warning", - "value": "7" - }, - { - "name": "Snooze Interval for Expiring Password Warning", - "value": "24" - }, - { - "name": "Login Challenge Template", - "value": "html.form.login.challenge.template.html" - }, - { - "name": "'Remember My Username' Lifetime", - "value": "30" - }, - { - "name": "'This is My Device' Lifetime", - "value": "30" - }, - { - "name": "Allow Username Edits During Chaining", - "value": "false" - }, - { - "name": "Track Authentication Time", - "value": "true" - }, - { - "name": "Post-Password Change Re-Authentication Delay", - "value": "0" - }, - { - "name": "Password Reset Username Template", - "value": "forgot-password.html" - }, - { - "name": "Password Reset Code Template", - "value": "forgot-password-resume.html" - }, - { - "name": "Password Reset Template", - "value": "forgot-password-change.html" - }, - { - "name": "Password Reset Error Template", - "value": "forgot-password-error.html" - }, - { - "name": "Password Reset Success Template", - "value": "forgot-password-success.html" - }, - { - "name": "Account Unlock Template", - "value": "account-unlock.html" - }, - { - "name": "OTP Length", - "value": "8" - }, - { - "name": "OTP Time to Live", - "value": "10" - }, - { - "name": "PingID Properties", - "value": "" - }, - { - "name": "Require Verified Email", - "value": "false" - }, - { - "name": "Username Recovery Template", - "value": "username.recovery.template.html" - }, - { - "name": "Username Recovery Info Template", - "value": "username.recovery.info.template.html" - }, - { - "name": "Username Recovery Email Template", - "value": "message-template-username-recovery.html" - }, - { - "name": "CAPTCHA for Authentication", - "value": "false" - }, - { - "name": "CAPTCHA for Password change", - "value": "false" - }, - { - "name": "CAPTCHA for Password Reset", - "value": "false" - }, - { - "name": "CAPTCHA for Username recovery", - "value": "false" - }, - { - "name": "Password Update Timeout", - "value": "30" - }, - { - "name": "Require Re-Authentication For Expiring Password Flow", - "value": "false" - }, - { - "name": "Require Re-Authentication for Change Password Flow", - "value": "true" - }, - { - "name": "Require Re-Authentication for Password Reset Flow", - "value": "true" - }, - { - "name": "Password Reset One-Time Link Email Template", - "value": "message-template-forgot-password-link.html" - }, - { - "name": "Password Reset One-Time Password Email Template", - "value": "message-template-forgot-password-code.html" - }, - { - "name": "Account Disabled Email Template", - "value": "message-template-account-disabled.html" - }, - { - "name": "Password Reset Complete Email Template", - "value": "message-template-forgot-password-complete.html" - }, - { - "name": "Password Reset Failed Email Template", - "value": "message-template-forgot-password-failed.html" - }, - { - "name": "Account Unlock Email Template", - "value": "message-template-account-unlock-complete.html" - }, - { - "name": "Allowed OTP Character Set", - "value": "23456789BCDFGHJKMNPQRSTVWXZbcdfghjkmnpqrstvwxz" - }, - { - "name": "CAPTCHA Provider", - "value": "" - }, - { - "name": "Fail Authentication on Account Lockout", - "value": "true" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.596Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "policy.action", - "masked": false, - "pseudonym": false - }, - { - "name": "username", - "masked": false, - "pseudonym": true - } - ], - "extendedAttributes": [ - { - "name": "entryUUID", - "masked": false, - "pseudonym": false - }, - { - "name": "uid", - "masked": false, - "pseudonym": false - }, - { - "name": "mail", - "masked": false, - "pseudonym": false - }, - { - "name": "givenName", - "masked": false, - "pseudonym": false - }, - { - "name": "sn", - "masked": false, - "pseudonym": false - } - ], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "entryUUID": { - "source": { - "type": "ADAPTER" - }, - "value": "entryUUID" - }, - "uid": { - "source": { - "type": "ADAPTER" - }, - "value": "uid" - }, - "mail": { - "source": { - "type": "ADAPTER" - }, - "value": "mail" - }, - "policy.action": { - "source": { - "type": "ADAPTER" - }, - "value": "policy.action" - }, - "givenName": { - "source": { - "type": "ADAPTER" - }, - "value": "givenName" - }, - "sn": { - "source": { - "type": "ADAPTER" - }, - "value": "sn" - }, - "username": { - "source": { - "type": "ADAPTER" - }, - "value": "username" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - }, - { - "id": "htmlForm", - "name": "Employee HTML Form", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter" - }, - "configuration": { - "tables": [ - { - "name": "Credential Validators", - "rows": [ - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "PDPCV" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Challenge Retries", - "value": "3" - }, - { - "name": "Session State", - "value": "None" - }, - { - "name": "Session Timeout", - "value": "60" - }, - { - "name": "Session Max Timeout", - "value": "480" - }, - { - "name": "Allow Password Changes", - "value": "false" - }, - { - "name": "Password Management System", - "value": "" - }, - { - "name": "Enable 'Remember My Username'", - "value": "false" - }, - { - "name": "Enable 'This is My Device'", - "value": "false" - }, - { - "name": "Change Password Email Notification", - "value": "false" - }, - { - "name": "Show Password Expiring Warning", - "value": "false" - }, - { - "name": "Password Reset Type", - "value": "NONE" - }, - { - "name": "Password Reset Policy Contract", - "value": "" - }, - { - "name": "Account Unlock", - "value": "false" - }, - { - "name": "Local Identity Profile", - "value": "adminIdentityProfile" - }, - { - "name": "Notification Publisher", - "value": "" - }, - { - "name": "Enable Username Recovery", - "value": "false" - }, - { - "name": "Change Password Policy Contract", - "value": "" - }, - { - "name": "Revoke Sessions After Password Change Or Reset", - "value": "false" - }, - { - "name": "Login Template", - "value": "html.form.login.template.html" - }, - { - "name": "Logout Path", - "value": "" - }, - { - "name": "Logout Redirect", - "value": "" - }, - { - "name": "Logout Template", - "value": "idp.logout.success.page.template.html" - }, - { - "name": "Change Password Template", - "value": "html.form.change.password.template.html" - }, - { - "name": "Change Password Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Password Management System Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Change Password Email Template", - "value": "message-template-end-user-password-change.html" - }, - { - "name": "Expiring Password Warning Template", - "value": "html.form.password.expiring.notification.template.html" - }, - { - "name": "Threshold for Expiring Password Warning", - "value": "7" - }, - { - "name": "Snooze Interval for Expiring Password Warning", - "value": "24" - }, - { - "name": "Login Challenge Template", - "value": "html.form.login.challenge.template.html" - }, - { - "name": "'Remember My Username' Lifetime", - "value": "30" - }, - { - "name": "'This is My Device' Lifetime", - "value": "30" - }, - { - "name": "Allow Username Edits During Chaining", - "value": "false" - }, - { - "name": "Track Authentication Time", - "value": "true" - }, - { - "name": "Post-Password Change Re-Authentication Delay", - "value": "0" - }, - { - "name": "Password Reset Username Template", - "value": "forgot-password.html" - }, - { - "name": "Password Reset Code Template", - "value": "forgot-password-resume.html" - }, - { - "name": "Password Reset Template", - "value": "forgot-password-change.html" - }, - { - "name": "Password Reset Error Template", - "value": "forgot-password-error.html" - }, - { - "name": "Password Reset Success Template", - "value": "forgot-password-success.html" - }, - { - "name": "Account Unlock Template", - "value": "account-unlock.html" - }, - { - "name": "OTP Length", - "value": "8" - }, - { - "name": "OTP Time to Live", - "value": "10" - }, - { - "name": "PingID Properties", - "value": "" - }, - { - "name": "Require Verified Email", - "value": "false" - }, - { - "name": "Username Recovery Template", - "value": "username.recovery.template.html" - }, - { - "name": "Username Recovery Info Template", - "value": "username.recovery.info.template.html" - }, - { - "name": "Username Recovery Email Template", - "value": "message-template-username-recovery.html" - }, - { - "name": "CAPTCHA for Authentication", - "value": "false" - }, - { - "name": "CAPTCHA for Password change", - "value": "false" - }, - { - "name": "CAPTCHA for Password Reset", - "value": "false" - }, - { - "name": "CAPTCHA for Username recovery", - "value": "false" - }, - { - "name": "Password Update Timeout", - "value": "30" - }, - { - "name": "Require Re-Authentication For Expiring Password Flow", - "value": "false" - }, - { - "name": "Require Re-Authentication for Change Password Flow", - "value": "true" - }, - { - "name": "Require Re-Authentication for Password Reset Flow", - "value": "true" - }, - { - "name": "Password Reset One-Time Link Email Template", - "value": "message-template-forgot-password-link.html" - }, - { - "name": "Password Reset One-Time Password Email Template", - "value": "message-template-forgot-password-code.html" - }, - { - "name": "Account Disabled Email Template", - "value": "message-template-account-disabled.html" - }, - { - "name": "Password Reset Complete Email Template", - "value": "message-template-forgot-password-complete.html" - }, - { - "name": "Password Reset Failed Email Template", - "value": "message-template-forgot-password-failed.html" - }, - { - "name": "Account Unlock Email Template", - "value": "message-template-account-unlock-complete.html" - }, - { - "name": "Allowed OTP Character Set", - "value": "23456789BCDFGHJKMNPQRSTVWXZbcdfghjkmnpqrstvwxz" - }, - { - "name": "CAPTCHA Provider", - "value": "" - }, - { - "name": "Fail Authentication on Account Lockout", - "value": "true" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.675Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "policy.action", - "masked": false, - "pseudonym": false - }, - { - "name": "username", - "masked": false, - "pseudonym": true - } - ], - "extendedAttributes": [ - { - "name": "entryUUID", - "masked": false, - "pseudonym": false - }, - { - "name": "uid", - "masked": false, - "pseudonym": false - }, - { - "name": "mail", - "masked": false, - "pseudonym": false - }, - { - "name": "givenName", - "masked": false, - "pseudonym": false - }, - { - "name": "cn", - "masked": false, - "pseudonym": false - }, - { - "name": "sn", - "masked": false, - "pseudonym": false - } - ], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "entryUUID": { - "source": { - "type": "ADAPTER" - }, - "value": "entryUUID" - }, - "uid": { - "source": { - "type": "ADAPTER" - }, - "value": "uid" - }, - "mail": { - "source": { - "type": "ADAPTER" - }, - "value": "mail" - }, - "policy.action": { - "source": { - "type": "ADAPTER" - }, - "value": "policy.action" - }, - "givenName": { - "source": { - "type": "ADAPTER" - }, - "value": "givenName" - }, - "cn": { - "source": { - "type": "ADAPTER" - }, - "value": "cn" - }, - "sn": { - "source": { - "type": "ADAPTER" - }, - "value": "sn" - }, - "username": { - "source": { - "type": "ADAPTER" - }, - "value": "username" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - ] - }, - { - "resourceType": "/sp/adapters", - "operationType": "SAVE", - "items": [ - { - "id": "spadapter", - "name": "SpAdapter", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.opentoken.SpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/sp/adapters/descriptors/com.pingidentity.adapters.opentoken.SpAuthnAdapter" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..PFrv_FscMq6fEy2yX5N7AQ.GtT55khTeM8eJuVVnNK7Jg.39v7f0ww1MpoHoC_EbsUGA" - }, - { - "name": "Confirm Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..76VQ-HU1M3cC97voJmgSFg.SHQw-_wj3-amWgLV-8o2Pg.GhWUxboRZQRqmUPlHIgI0A" - }, - { - "name": "Transport Mode", - "value": "2" - }, - { - "name": "Token Name", - "value": "opentoken" - }, - { - "name": "Cipher Suite", - "value": "2" - }, - { - "name": "Authentication Service", - "value": "" - }, - { - "name": "Account Link Service", - "value": "" - }, - { - "name": "Logout Service", - "value": "" - }, - { - "name": "SameSite Cookie", - "value": "3" - }, - { - "name": "Cookie Domain", - "value": "" - }, - { - "name": "Cookie Path", - "value": "/" - }, - { - "name": "Token Lifetime", - "value": "300" - }, - { - "name": "Session Lifetime", - "value": "43200" - }, - { - "name": "Not Before Tolerance", - "value": "0" - }, - { - "name": "Force SunJCE Provider", - "value": "false" - }, - { - "name": "Use Verbose Error Messages", - "value": "false" - }, - { - "name": "Obfuscate Password", - "value": "true" - }, - { - "name": "Session Cookie", - "value": "false" - }, - { - "name": "Secure Cookie", - "value": "true" - }, - { - "name": "HTTP Only Flag", - "value": "true" - }, - { - "name": "Send Subject as Query Parameter", - "value": "false" - }, - { - "name": "Subject Query Parameter ", - "value": "" - }, - { - "name": "Send Extended Attributes", - "value": "" - }, - { - "name": "Skip Trimming of Trailing Backslashes", - "value": "false" - }, - { - "name": "URL Encode Cookie Values", - "value": "true" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.706Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [] - }, - "targetApplicationInfo": { - "applicationName": "test", - "applicationIconUrl": "https://test.com" - } - } - ] - }, - { - "resourceType": "/idpToSpAdapterMapping", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "ADAPTER" - }, - "value": "entryUUID" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "ciamHtmlForm|spadapter", - "sourceId": "ciamHtmlForm", - "targetId": "spadapter" - } - ] - }, - { - "resourceType": "/sp/authenticationPolicyContractMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "NO_MAPPING" - } - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "wIdHhK789PmadmMS|spadapter", - "sourceId": "wIdHhK789PmadmMS", - "targetId": "spadapter" - } - ] - }, - { - "resourceType": "/identityStoreProvisioners", - "operationType": "SAVE", - "items": [ - { - "id": "ISPTestID", - "name": "ISP TestName", - "pluginDescriptorRef": { - "id": "com.pingidentity.identitystoreprovisioners.sample.SampleIdentityStoreProvisioner", - "location": "https://localhost:9999/pf-admin-api/v1/identityStoreProvisioners/descriptors/com.pingidentity.identitystoreprovisioners.sample.SampleIdentityStoreProvisioner" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Delete user behavior", - "value": "Disable User" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.776Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "username" - } - ], - "inherited": false - }, - "groupAttributeContract": { - "coreAttributes": [ - { - "name": "groupname" - } - ], - "inherited": false - } - } - ] - }, - { - "resourceType": "/idp/tokenProcessors", - "operationType": "SAVE", - "items": [ - { - "id": "UsernameTokenProcessor", - "name": "UsernameTokenProcessor", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.tokenprocessors.username.UsernameTokenProcessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/descriptors/com.pingidentity.pf.tokenprocessors.username.UsernameTokenProcessor" - }, - "configuration": { - "tables": [ - { - "name": "Credential Validators", - "rows": [ - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "pingdirectory" - } - ], - "defaultRow": false - }, - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "simple" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Authentication Attempts", - "value": "3" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.792Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "username", - "masked": false - } - ], - "extendedAttributes": [], - "maskOgnlValues": false - } - }, - { - "id": "tokenprocessor", - "name": "token processor", - "pluginDescriptorRef": { - "id": "org.sourceid.wstrust.processor.saml.Saml20TokenProcessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/descriptors/org.sourceid.wstrust.processor.saml.Saml20TokenProcessor" - }, - "configuration": { - "tables": [ - { - "name": "Valid Certificate Issuer DNs", - "rows": [] - }, - { - "name": "Valid Certificate Subject DNs", - "rows": [] - } - ], - "fields": [ - { - "name": "Audience", - "value": "audience" - } - ] - }, - "lastModified": "2025-01-02T19:37:47.807Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "SAML_SUBJECT", - "masked": false - } - ], - "extendedAttributes": [], - "maskOgnlValues": false - } - } - ] - }, - { - "resourceType": "/sp/tokenGenerators", - "operationType": "SAVE", - "items": [ - { - "id": "tokengenerator", - "name": "token generator", - "pluginDescriptorRef": { - "id": "org.sourceid.wstrust.generator.saml.Saml20TokenGenerator", - "location": "https://localhost:9999/pf-admin-api/v1/sp/tokenGenerators/descriptors/org.sourceid.wstrust.generator.saml.Saml20TokenGenerator" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Minutes Before", - "value": "60" - }, - { - "name": "Minutes After", - "value": "60" - }, - { - "name": "Issuer", - "value": "issuer" - }, - { - "name": "Signing Certificate", - "value": "tiq4n26axjircjk30oz5zf6k3" - }, - { - "name": "Signing Algorithm", - "value": "SHA1" - }, - { - "name": "Include Certificate in KeyInfo", - "value": "false" - }, - { - "name": "Include Raw Key in KeyValue", - "value": "false" - }, - { - "name": "Audience", - "value": "audience" - }, - { - "name": "Confirmation Method", - "value": "urn:oasis:names:tc:SAML:2.0:cm:sender-vouches" - }, - { - "name": "Encryption Certificate", - "value": "" - }, - { - "name": "Message Customization Expression", - "value": "" - } - ] - }, - "lastModified": "2025-01-02T21:02:09.135Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "SAML_SUBJECT" - } - ], - "extendedAttributes": [] - } - } - ] - }, - { - "resourceType": "/tokenProcessorToTokenGeneratorMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "SAML_SUBJECT": { - "source": { - "type": "CONTEXT" - }, - "value": "ClientIp" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "tokenprocessor|tokengenerator", - "sourceId": "tokenprocessor", - "targetId": "tokengenerator" - } - ] - }, - { - "resourceType": "/idp/defaultUrls", - "operationType": "SAVE", - "items": [ - { - "confirmIdpSlo": false, - "idpErrorMsg": "errorDetail.idpSsoFailure" - } - ] - }, - { - "resourceType": "/sp/defaultUrls", - "operationType": "SAVE", - "items": [ - { - "confirmSlo": false - } - ] - }, - { - "resourceType": "/extendedProperties", - "operationType": "SAVE", - "items": [ - { - "name": "authNexp", - "description": "Authentication Experience [Single_Factor | Internal | ID-First | Multi_Factor]", - "multiValued": false - }, - { - "name": "useAuthnApi", - "description": "Use the AuthN API", - "multiValued": false - } - ] - }, - { - "resourceType": "/idp/stsRequestParametersContracts", - "operationType": "SAVE", - "items": [ - { - "id": "STSTestID", - "name": "STS TestName", - "parameters": [ - "test" - ], - "lastModified": "2025-01-02T19:37:47.913Z" - } - ] - }, - { - "resourceType": "/metadataUrls", - "operationType": "SAVE", - "items": [ - { - "id": "i8uUHFDebYX7Z7gSfyhZ9yKUA", - "name": "Test Metadata URL", - "url": "https://www.example.com", - "validateSignature": false - } - ] - }, - { - "resourceType": "/oauth/authServerSettings", - "operationType": "SAVE", - "items": [ - { - "defaultScopeDescription": "", - "scopes": [ - { - "name": "email", - "description": "email scope", - "dynamic": false - } - ], - "scopeGroups": [], - "exclusiveScopes": [], - "exclusiveScopeGroups": [], - "authorizationCodeTimeout": 60, - "authorizationCodeEntropy": 30, - "disallowPlainPKCE": false, - "includeIssuerInAuthorizationResponse": false, - "persistentGrantLifetime": -1, - "persistentGrantLifetimeUnit": "DAYS", - "persistentGrantIdleTimeout": 30, - "persistentGrantIdleTimeoutTimeUnit": "DAYS", - "refreshTokenLength": 42, - "rollRefreshTokenValues": false, - "refreshTokenRollingGracePeriod": 60, - "refreshRollingInterval": 0, - "refreshRollingIntervalTimeUnit": "HOURS", - "persistentGrantReuseGrantTypes": [ - "IMPLICIT" - ], - "persistentGrantContract": { - "extendedAttributes": [], - "coreAttributes": [ - { - "name": "USER_KEY" - }, - { - "name": "USER_NAME" - } - ] - }, - "bypassAuthorizationForApprovedGrants": false, - "allowUnidentifiedClientROCreds": false, - "allowUnidentifiedClientExtensionGrants": false, - "tokenEndpointBaseUrl": "", - "requireOfflineAccessScopeToIssueRefreshTokens": false, - "offlineAccessRequireConsentPrompt": false, - "userAuthorizationUrl": "", - "registeredAuthorizationPath": "", - "pendingAuthorizationTimeout": 600, - "bypassActivationCodeConfirmation": false, - "devicePollingInterval": 5, - "activationCodeCheckMode": "AFTER_AUTHENTICATION", - "enableCookielessUserAuthorizationAuthenticationApi": false, - "userAuthorizationConsentPageSetting": "INTERNAL", - "atmIdForOAuthGrantManagement": "jwt", - "scopeForOAuthGrantManagement": "email", - "allowedOrigins": [], - "trackUserSessionsForLogout": false, - "parReferenceTimeout": 60, - "parReferenceLength": 24, - "parStatus": "ENABLED", - "clientSecretRetentionPeriod": 0, - "jwtSecuredAuthorizationResponseModeLifetime": 600, - "dpopProofRequireNonce": false, - "dpopProofLifetimeSeconds": 120, - "dpopProofEnforceReplayPrevention": false, - "bypassAuthorizationForApprovedConsents": false, - "consentLifetimeDays": -1 - } - ] - }, - { - "resourceType": "/sp/idpConnections", - "operationType": "SAVE", - "items": [ - { - "type": "IDP", - "id": "n26SCl49a8lB_ifAaLF_MyUbquv", - "name": "testConnection", - "entityId": "testPartnerId", - "active": true, - "contactInfo": {}, - "loggingMode": "STANDARD", - "virtualEntityIds": [], - "credentials": { - "certs": [ - { - "primaryVerificationCert": true, - "secondaryVerificationCert": false, - "certView": { - "id": "gpmlavn03e4mknkyml4m2ak9q", - "serialNumber": "430421198347763948001683365009287878912609754790", - "subjectDN": "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US", - "subjectAlternativeNames": [], - "issuerDN": "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US", - "validFrom": "2024-12-12T23:28:24.000Z", - "expires": "2027-09-08T23:28:24.000Z", - "keyAlgorithm": "RSA", - "keySize": 2048, - "signatureAlgorithm": "SHA256withRSA", - "version": 3, - "sha1Fingerprint": "B1B57BC2A8733287A1A9B65EB60BFFD01EFECEBA", - "sha256Fingerprint": "AA40F0AA0B7A438F15C49FA2A2EBE3B28AAB34A846781211BD170E8D7B06D291", - "status": "VALID" - }, - "x509File": { - "id": "gpmlavn03e4mknkyml4m2ak9q", - "fileData": "-----BEGIN CERTIFICATE-----\nMIIDnTCCAoWgAwIBAgIUS2TBCdRzpK4Zze+HDKjB9EQSHqYwDQYJKoZIhvcNAQELBQAwXjELMAkG\nA1UEBhMCVVMxCzAJBgNVBAgMAkNPMQ8wDQYDVQQHDAZEZW52ZXIxIjAgBgNVBAoMGVBpbmcgSWRl\nbnRpdHkgQ29ycG9yYXRpb24xDTALBgNVBAMMBHRlc3QwHhcNMjQxMjEyMjMyODI0WhcNMjcwOTA4\nMjMyODI0WjBeMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ08xDzANBgNVBAcMBkRlbnZlcjEiMCAG\nA1UECgwZUGluZyBJZGVudGl0eSBDb3Jwb3JhdGlvbjENMAsGA1UEAwwEdGVzdDCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBAJdoGurgDvSRBL2cIeUaCY3po5YDZnV1eyuOQTxQc6OT2JS0\n+40gJbJmfNrbcOSt+1DbxzP+Ixblkcz569VOC5lbROn38yeaMU32Xc/4DGSp1HCY/JfSygz/+qr8\n8YTqMaI21AbZnAiY5x0Rw56IDmJglXaXeVbCUJy7oPTyAoYYT93DJDk41Ze51UcTmUsTKN4K3gvv\nSaRuyq5+g6EXBq7AkeOnbP0bSHybN1KEV5BXNNpgk9h0Jw3PE+qkm/5nYRzxBf4RA/Agfv9esG9N\nz3XgDowAGBmxr+rU/na7pwEEudMh668DEDeRVwh1ZapYpBtVcxMHmdJPgFJrBlo6mMECAwEAAaNT\nMFEwHQYDVR0OBBYEFGJc3Z0j9kXPsTmmbgAsY/PK2cupMB8GA1UdIwQYMBaAFGJc3Z0j9kXPsTmm\nbgAsY/PK2cupMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJVBvcHhh+00gzQ0\npnZKtRJxvEg+pGh+B9E+5i2PsNGyIAvAXw4mdBcQZKxfiXM31ZE2ge1mP+4di11+PKYNH2E973PL\nJ+wGHeQZ1ETDG5fo79t0MG1RzHtGoirZW7v4BNUI6ZM2FjEaCOtZg1rUhkdIfqDx4CeNjzb0rhXI\nzXNTS4Y6VlxWArQnwAgqPtb5poJG3Mm/3f6uQg/l0LIKTY/GR6yQsNCkzTZQhrIpXj4RpqnX3QgD\n1IWToMon7ntp4gAP/lASM5/xm5Jzb6dmF+hoN073g02UeV2TDLze80+K+Xr1GZeeULuXNrhOEXDR\nytvube8OXPPY6/zCphVb21g=\n-----END CERTIFICATE-----\n" - }, - "encryptionCert": false, - "activeVerificationCert": true - } - ] - }, - "modificationDate": "2025-01-02T19:37:48.089Z", - "creationDate": "2025-01-02T19:37:48.089Z", - "wsTrust": { - "attributeContract": { - "coreAttributes": [ - { - "name": "TOKEN_SUBJECT", - "masked": false - } - ], - "extendedAttributes": [] - }, - "tokenGeneratorMappings": [], - "generateLocalToken": false - } - } - ] - }, - { - "resourceType": "/idp/spConnections", - "operationType": "SAVE", - "items": [ - { - "type": "SP", - "id": "iIoQK.-GWcXI5kLp4KDNxQqAhDF", - "name": "test", - "entityId": "test", - "active": true, - "contactInfo": {}, - "loggingMode": "STANDARD", - "virtualEntityIds": [], - "licenseConnectionGroup": "", - "credentials": { - "certs": [], - "signingSettings": { - "signingKeyPairRef": { - "id": "tiq4n26axjircjk30oz5zf6k3", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/signing/tiq4n26axjircjk30oz5zf6k3" - }, - "algorithm": "SHA256withRSA", - "includeCertInSignature": false, - "includeRawKeyInSignature": false - } - }, - "modificationDate": "2025-01-02T21:01:44.089Z", - "creationDate": "2025-01-02T19:37:48.857Z", - "wsTrust": { - "partnerServiceIds": [ - "test" - ], - "oAuthAssertionProfiles": false, - "defaultTokenType": "SAML20", - "generateKey": false, - "encryptSaml2Assertion": false, - "minutesBefore": 5, - "minutesAfter": 30, - "attributeContract": { - "coreAttributes": [ - { - "name": "TOKEN_SUBJECT" - } - ], - "extendedAttributes": [] - }, - "tokenProcessorMappings": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "TOKEN_SUBJECT": { - "source": { - "type": "NO_MAPPING" - } - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "idpTokenProcessorRef": { - "id": "tokenprocessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/tokenprocessor" - }, - "restrictedVirtualEntityIds": [] - } - ] - }, - "connectionTargetType": "STANDARD" - } - ] - }, - { - "resourceType": "/session/settings", - "operationType": "SAVE", - "items": [ - { - "trackAdapterSessionsForLogout": false, - "revokeUserSessionOnLogout": true, - "sessionRevocationLifetime": 490 - } - ] - }, - { - "resourceType": "/session/applicationSessionPolicy", - "operationType": "SAVE", - "items": [ - { - "idleTimeoutMins": 60, - "maxTimeoutMins": 480 - } - ] - }, - { - "resourceType": "/session/authenticationSessionPolicies/global", - "operationType": "SAVE", - "items": [ - { - "enableSessions": false, - "persistentSessions": false, - "hashUniqueUserKeyAttribute": false, - "idleTimeoutMins": 60, - "idleTimeoutDisplayUnit": "MINUTES", - "maxTimeoutMins": 480, - "maxTimeoutDisplayUnit": "MINUTES" - } - ] - }, - { - "resourceType": "/session/authenticationSessionPolicies", - "operationType": "SAVE", - "items": [ - { - "id": "UfdnqYjWycSeo2vZZgSYB3gpw", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "OTIdPJava", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/OTIdPJava" - } - }, - "enableSessions": false, - "userDeviceType": "PRIVATE", - "persistent": false, - "timeoutDisplayUnit": "MINUTES", - "authnContextSensitive": false - } - ] - }, - { - "resourceType": "/oauth/issuers", - "operationType": "SAVE", - "items": [ - { - "id": "BmoJwEmyzs4RSNMzVUlCs8qTPC", - "name": "Test Issuer", - "description": "test issuer", - "host": "localhost", - "path": "" - } - ] - }, - { - "resourceType": "/additionalKeySets", - "operationType": "SAVE", - "items": [ - { - "id": "testID", - "name": "testName", - "description": "testDescription", - "signingKeys": { - "rsaActiveCertRef": { - "id": "tiq4n26axjircjk30oz5zf6k3", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/signing/tiq4n26axjircjk30oz5zf6k3" - }, - "rsaPublishX5cParameter": true - }, - "issuers": [ - { - "id": "BmoJwEmyzs4RSNMzVUlCs8qTPC", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/issuers/BmoJwEmyzs4RSNMzVUlCs8qTPC" - } - ] - } - ] - }, - { - "resourceType": "/oauth/idpAdapterMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "USER_NAME": { - "source": { - "type": "CONTEXT" - }, - "value": "OAuthScopes" - }, - "USER_KEY": { - "source": { - "type": "ADAPTER" - }, - "value": "subject" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "OTIdPJava", - "idpAdapterRef": { - "id": "OTIdPJava", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/OTIdPJava" - } - } - ] - }, - { - "resourceType": "/oauth/authenticationPolicyContractMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "USER_NAME": { - "source": { - "type": "CONTEXT" - }, - "value": "OAuthScopes" - }, - "USER_KEY": { - "source": { - "type": "AUTHENTICATION_POLICY_CONTRACT" - }, - "value": "subject" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "QGxlec5CX693lBQL", - "authenticationPolicyContractRef": { - "id": "QGxlec5CX693lBQL", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/QGxlec5CX693lBQL" - } - } - ] - }, - { - "resourceType": "/oauth/outOfBandAuthPlugins", - "operationType": "SAVE", - "items": [ - { - "id": "exampleCibaAuthenticator", - "name": "exampleCibaAuthenticator", - "pluginDescriptorRef": { - "id": "com.pingidentity.oobauth.pingone.mfa.PingOneMfaCibaAuthenticator", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/outOfBandAuthPlugins/descriptors/com.pingidentity.oobauth.pingone.mfa.PingOneMfaCibaAuthenticator" - }, - "configuration": { - "tables": [ - { - "name": "PingOne Template Variables", - "rows": [] - } - ], - "fields": [ - { - "name": "PingOne Environment", - "value": "noeOvj5ltBnf4rcmtZAKdJ|f5901536-2b60-4d4a-a987-3d56aadad46d" - }, - { - "name": "Application", - "value": "2a7c1b5d-415b-4fb5-a6c0-1e290f776785" - }, - { - "name": "PingOne Authentication Policy", - "value": "" - }, - { - "name": "Test Username", - "value": "" - }, - { - "name": "PingOne Template Name", - "value": "transaction" - }, - { - "name": "PingOne Template Variant", - "value": "" - }, - { - "name": "Client Context", - "value": "#*\nDefine additional key/value pairs to be received at the mobile application.\nThe following variables are available by default:\n\n$oobAuthRequestContext - Context for the out-of-band authentication/authorization request\n$languagePackMessages - The language-pack file configured for this authenticator\n$subject - The user's PingOne username or user ID.\n$JSONValue - A JSON utility class that can be used to escape text and convert objects to JSON.\n Methods:\n escape(String s) - Escape quotes, \\, /, \\r, \\n, \\b, \\f, \\t and other control characters (U+0000 through U+001F).\n toJSONString(Object value) - Convert an object to JSON text.\n\nAdditionally, any Extended Contract attributes are also available using the $name syntax.\n\nExample:\n\n{\n \"requestingApplicationName\": \"$JSONValue.escape($oobAuthRequestContext.requestingApplication.name)\",\n \"requestedScope\": $JSONValue.toJSONString($oobAuthRequestContext.requestedScope.values()),\n \"amount\": \"$JSONValue.escape($amount)\",\n \"alert.color\": \"red\"\n}\n*#" - }, - { - "name": "Messages Files", - "value": "pingone-mfa-messages" - }, - { - "name": "API Request Timeout", - "value": "12000" - }, - { - "name": "Proxy Settings", - "value": "System Defaults" - }, - { - "name": "Custom Proxy Host", - "value": "" - }, - { - "name": "Custom Proxy Port", - "value": "" - } - ] - }, - "lastModified": "2025-01-02T19:37:50.470Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [] - } - } - ] - }, - { - "resourceType": "/oauth/cibaServerPolicy/requestPolicies", - "operationType": "SAVE", - "items": [ - { - "id": "exampleCibaReqPolicy", - "name": "exampleCibaReqPolicy", - "authenticatorRef": { - "id": "exampleCibaAuthenticator", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/outOfBandAuthPlugins/exampleCibaAuthenticator" - }, - "transactionLifetime": 120, - "allowUnsignedLoginHintToken": false, - "requireTokenForIdentityHint": false, - "alternativeLoginHintTokenIssuers": [], - "identityHintContract": { - "coreAttributes": [ - { - "name": "IDENTITY_HINT_SUBJECT" - } - ], - "extendedAttributes": [] - }, - "identityHintContractFulfillment": { - "attributeSources": [], - "attributeContractFulfillment": { - "IDENTITY_HINT_SUBJECT": { - "source": { - "type": "REQUEST" - }, - "value": "IDENTITY_HINT_SUBJECT" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "identityHintMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "NO_MAPPING" - } - }, - "USER_KEY": { - "source": { - "type": "NO_MAPPING" - } - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "lastModified": "2025-01-02T19:37:50.507Z" - } - ] - }, - { - "resourceType": "/oauth/cibaServerPolicy/settings", - "operationType": "SAVE", - "items": [ - { - "defaultRequestPolicyRef": { - "id": "exampleCibaReqPolicy", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/cibaServerPolicy/requestPolicies/exampleCibaReqPolicy" - } - } - ] - }, - { - "resourceType": "/oauth/openIdConnect/policies", - "operationType": "SAVE", - "items": [ - { - "id": "test-openid-connect-policy", - "name": "Test OpenID Connect Policy", - "idTokenLifetime": 5, - "attributeContract": { - "coreAttributes": [ - { - "name": "sub", - "multiValued": false - } - ], - "extendedAttributes": [] - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "sub": { - "source": { - "type": "TOKEN" - }, - "value": "OrgName" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "includeSriInIdToken": false, - "includeUserInfoInIdToken": false, - "includeSHashInIdToken": false, - "includeX5tInIdToken": false, - "idTokenTypHeaderValue": "", - "returnIdTokenOnRefreshGrant": false, - "reissueIdTokenInHybridFlow": false, - "accessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - }, - "scopeAttributeMappings": {}, - "lastModified": "2025-01-02T19:37:50.605Z" - } - ] - }, - { - "resourceType": "/oauth/openIdConnect/settings", - "operationType": "SAVE", - "items": [ - { - "defaultPolicyRef": { - "id": "test-openid-connect-policy", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/openIdConnect/policies/test-openid-connect-policy" - }, - "sessionSettings": { - "trackUserSessionsForLogout": false, - "revokeUserSessionOnLogout": true, - "sessionRevocationLifetime": 490 - } - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/processor/policies", - "operationType": "SAVE", - "items": [ - { - "id": "tokenexchangeprocessorpolicy", - "name": "tokenexchangeprocessorpolicy", - "actorTokenRequired": false, - "attributeContract": { - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [] - }, - "processorMappings": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "TEXT" - }, - "value": "value" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [ - { - "errorResult": "error", - "source": { - "type": "CONTEXT" - }, - "attributeName": "ClientIp", - "condition": "EQUALS", - "value": "value" - } - ] - }, - "subjectTokenType": "urn:ietf:params:oauth:token-type:saml2", - "subjectTokenProcessor": { - "id": "tokenprocessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/tokenprocessor" - }, - "actorTokenType": "", - "actorTokenProcessor": {} - } - ] - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/processor/settings", - "operationType": "SAVE", - "items": [ - { - "defaultProcessorPolicyRef": { - "id": "tokenexchangeprocessorpolicy", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/tokenExchange/processor/policies/tokenexchangeprocessorpolicy" - } - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/generator/groups", - "operationType": "SAVE", - "items": [ - { - "id": "exampleGeneratorGroup", - "name": "exampleGeneratorGroup", - "resourceUris": [], - "generatorMappings": [ - { - "requestedTokenType": "urn:ietf:params:oauth:token-type:saml2", - "tokenGenerator": { - "id": "tokengenerator", - "location": "https://localhost:9999/pf-admin-api/v1/sp/tokenGenerators/tokengenerator" - }, - "defaultMapping": true - } - ] - }, - { - "id": "exampleGeneratorGroup2", - "name": "exampleGeneratorGroup2", - "resourceUris": [], - "generatorMappings": [ - { - "requestedTokenType": "urn:ietf:params:oauth:token-type:saml2", - "tokenGenerator": { - "id": "tokengenerator", - "location": "https://localhost:9999/pf-admin-api/v1/sp/tokenGenerators/tokengenerator" - }, - "defaultMapping": true - } - ] - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/generator/settings", - "operationType": "SAVE", - "items": [ - { - "defaultGeneratorGroupRef": { - "id": "exampleGeneratorGroup", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/tokenExchange/generator/groups/exampleGeneratorGroup" - } - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/tokenGeneratorMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "SAML_SUBJECT": { - "source": { - "type": "CONTEXT" - }, - "value": "OAuthScopes" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "tokenexchangeprocessorpolicy|tokengenerator", - "sourceId": "tokenexchangeprocessorpolicy", - "targetId": "tokengenerator" - } - ] - }, - { - "resourceType": "/oauth/clients", - "operationType": "SAVE", - "items": [ - { - "clientId": "test", - "enabled": true, - "redirectUris": [], - "grantTypes": [ - "CLIENT_CREDENTIALS", - "ACCESS_TOKEN_VALIDATION" - ], - "name": "test", - "modificationDate": "2025-01-02T19:37:50.760Z", - "creationDate": "2025-01-02T19:37:50.760Z", - "refreshRolling": "SERVER_DEFAULT", - "refreshTokenRollingIntervalType": "SERVER_DEFAULT", - "persistentGrantExpirationType": "SERVER_DEFAULT", - "persistentGrantExpirationTime": 0, - "persistentGrantExpirationTimeUnit": "DAYS", - "persistentGrantIdleTimeoutType": "SERVER_DEFAULT", - "persistentGrantIdleTimeout": 0, - "persistentGrantIdleTimeoutTimeUnit": "DAYS", - "persistentGrantReuseType": "SERVER_DEFAULT", - "allowAuthenticationApiInit": false, - "enableCookielessAuthenticationApi": false, - "bypassApprovalPage": false, - "restrictScopes": false, - "requirePushedAuthorizationRequests": false, - "requireJwtSecuredAuthorizationResponseMode": false, - "restrictedScopes": [], - "exclusiveScopes": [], - "restrictedResponseTypes": [], - "authorizationDetailTypes": [], - "defaultAccessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - }, - "restrictToDefaultAccessTokenManager": false, - "validateUsingAllEligibleAtms": false, - "oidcPolicy": { - "grantAccessSessionRevocationApi": false, - "grantAccessSessionSessionManagementApi": false, - "logoutMode": "NONE", - "pingAccessLogoutCapable": false, - "pairwiseIdentifierUserType": false - }, - "clientAuth": { - "type": "SECRET", - "encryptedSecret": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCJ9..7DwuTz2jKYLtp6DY5xB6ag.Ur20BDlEYLMrRM6yXNbvp5cdnRta7QafBHU1wXw5VU1ba7oERgsMG0buE2L2JxF8W1ZKNM-o2RcWGunpD9nUJVhicoPokdUeFRCdnOp3EU0.rJnSYiuhQUytZKK4ISjDhA", - "secondarySecrets": [] - }, - "deviceFlowSettingType": "SERVER_DEFAULT", - "requireProofKeyForCodeExchange": false, - "refreshTokenRollingGracePeriodType": "SERVER_DEFAULT", - "clientSecretRetentionPeriodType": "SERVER_DEFAULT", - "requireDpop": false, - "requireOfflineAccessScopeToIssueRefreshTokens": "SERVER_DEFAULT", - "offlineAccessRequireConsentPrompt": "SERVER_DEFAULT", - "requireSignedRequests": false - } - ] - }, - { - "resourceType": "/oauth/clientRegistrationPolicies", - "operationType": "SAVE", - "items": [ - { - "id": "testRegistrationPolicy", - "name": "Test Registration Policy", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.client.registration.ResponseTypesConstraintsPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/clientRegistrationPolicies/descriptors/com.pingidentity.pf.client.registration.ResponseTypesConstraintsPlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "code", - "value": "true" - }, - { - "name": "code id_token", - "value": "true" - }, - { - "name": "code id_token token", - "value": "true" - }, - { - "name": "code token", - "value": "true" - }, - { - "name": "id_token", - "value": "true" - }, - { - "name": "id_token token", - "value": "true" - }, - { - "name": "token", - "value": "true" - } - ] - }, - "lastModified": "2025-01-02T19:37:50.792Z" - } - ] - }, - { - "resourceType": "/oauth/clientSettings", - "operationType": "SAVE", - "items": [ - { - "clientMetadata": [ - { - "parameter": "authNexp", - "description": "Authentication Experience [Single_Factor | Internal | ID-First | Multi_Factor]", - "multiValued": false - }, - { - "parameter": "useAuthnApi", - "description": "Use the AuthN API", - "multiValued": false - } - ] - } - ] - }, - { - "resourceType": "/oauth/accessTokenMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "Username": { - "source": { - "type": "TEXT" - }, - "value": "Administrator" - }, - "OrgName": { - "source": { - "type": "TEXT" - }, - "value": "Ping" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "client_credentials|jwt", - "context": { - "type": "CLIENT_CREDENTIALS" - }, - "accessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - } - }, - { - "attributeSources": [], - "attributeContractFulfillment": { - "Username": { - "source": { - "type": "TEXT" - }, - "value": "Administrator" - }, - "OrgName": { - "source": { - "type": "TEXT" - }, - "value": "Ping" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "default|jwt", - "context": { - "type": "DEFAULT" - }, - "accessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - } - } - ] - }, - { - "resourceType": "/authenticationSelectors", - "operationType": "SAVE", - "items": [ - { - "id": "authnExp", - "name": "AuthN Experiences", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.selectors.ExtendedPropertyAuthnSelector", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationSelectors/descriptors/com.pingidentity.pf.selectors.ExtendedPropertyAuthnSelector" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Extended Property", - "value": "authNexp" - }, - { - "name": "Case-Sensitive Matching", - "value": "true" - }, - { - "name": "Enable 'No Match' Result Value", - "value": "false" - } - ] - }, - "lastModified": "2025-01-02T19:37:50.879Z", - "attributeContract": { - "extendedAttributes": [ - { - "name": "Single_Factor" - }, - { - "name": "Internal" - } - ] - } - } - ] - }, - { - "resourceType": "/authenticationApi", - "operationType": "SAVE", - "items": [ - { - "id": "myauthenticationapiapplication", - "url": "https://example.com", - "description": "example", - "additionalAllowedOrigins": [], - "name": "myauthenticationapiapplication" - } - ] - }, - { - "resourceType": "/authenticationApi/settings", - "operationType": "SAVE", - "items": [ - { - "apiEnabled": false, - "enableApiDescriptions": true, - "restrictAccessToRedirectlessMode": true, - "includeRequestContext": false - } - ] - }, - { - "resourceType": "/authenticationPolicies/fragments", - "operationType": "SAVE", - "items": [ - { - "id": "FirstFactor", - "name": "First_Factor", - "description": "Used for Customer First Factor", - "rootNode": { - "action": { - "type": "AUTHN_SOURCE", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "ciamHtmlForm", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/ciamHtmlForm" - } - }, - "attributeRules": { - "items": [ - { - "attributeSource": { - "type": "ADAPTER", - "id": "ciamHtmlForm" - }, - "attributeName": "policy.action", - "condition": "EQUALS_CASE_INSENSITIVE", - "expectedValue": "identity.registration", - "result": "Register" - } - ], - "fallbackToSuccess": true - } - }, - "children": [ - { - "action": { - "type": "DONE", - "context": "Fail" - } - }, - { - "action": { - "type": "LOCAL_IDENTITY_MAPPING", - "context": "Register", - "localIdentityRef": { - "id": "regIdentityProfile", - "location": "https://localhost:9999/pf-admin-api/v1/localIdentity/identityProfiles/regIdentityProfile" - }, - "inboundMapping": { - "attributeSources": [], - "attributeContractFulfillment": {}, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "outboundAttributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "firstName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "firstName" - }, - "lastName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "lastName" - }, - "ImmutableID": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "ImmutableID" - }, - "mail": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "email" - }, - "subject": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "username" - }, - "SAML_AUTHN_CTX": { - "source": { - "type": "TEXT" - }, - "value": "registered" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - }, - { - "action": { - "type": "LOCAL_IDENTITY_MAPPING", - "context": "Success", - "localIdentityRef": { - "id": "regIdentityProfile", - "location": "https://localhost:9999/pf-admin-api/v1/localIdentity/identityProfiles/regIdentityProfile" - }, - "inboundMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "pf.local.identity.unique.id": { - "source": { - "type": "ADAPTER", - "id": "ciamHtmlForm" - }, - "value": "uid" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "outboundAttributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "firstName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "firstName" - }, - "lastName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "lastName" - }, - "ImmutableID": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "ImmutableID" - }, - "mail": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "email" - }, - "subject": { - "source": { - "type": "ADAPTER", - "id": "ciamHtmlForm" - }, - "value": "username" - }, - "SAML_AUTHN_CTX": { - "source": { - "type": "TEXT" - }, - "value": "single_factor" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - } - ] - }, - "inputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "outputs": { - "id": "samplePolicyContract", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/samplePolicyContract" - } - }, - { - "id": "Identify_First", - "name": "Identify_First", - "description": "Used for First Factors that just use the User Identifier", - "rootNode": { - "action": { - "type": "AUTHN_SOURCE", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "IDFirst", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/IDFirst" - } - }, - "inputUserIdMapping": { - "source": { - "type": "INPUTS", - "id": "Inputs" - }, - "value": "subject" - }, - "userIdAuthenticated": false - }, - "children": [ - { - "action": { - "type": "DONE", - "context": "Fail" - } - }, - { - "action": { - "type": "APC_MAPPING", - "context": "Success", - "authenticationPolicyContractRef": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "ADAPTER", - "id": "IDFirst" - }, - "value": "uid" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - } - ] - }, - "inputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "outputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - } - }, - { - "id": "InternalAuthN", - "name": "Internal AuthN", - "description": "Used for Internal Authentication", - "rootNode": { - "action": { - "type": "AUTHN_SOURCE", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "htmlForm", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/htmlForm" - } - } - }, - "children": [ - { - "action": { - "type": "DONE", - "context": "Fail" - } - }, - { - "action": { - "type": "APC_MAPPING", - "context": "Success", - "authenticationPolicyContractRef": { - "id": "default", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/default" - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "firstName": { - "source": { - "type": "NO_MAPPING" - } - }, - "lastName": { - "source": { - "type": "NO_MAPPING" - } - }, - "ImmutableID": { - "source": { - "type": "ADAPTER", - "id": "htmlForm" - }, - "value": "entryUUID" - }, - "mail": { - "source": { - "type": "ADAPTER", - "id": "htmlForm" - }, - "value": "mail" - }, - "subject": { - "source": { - "type": "ADAPTER", - "id": "htmlForm" - }, - "value": "uid" - }, - "SAML_AUTHN_CTX": { - "source": { - "type": "TEXT" - }, - "value": "internal" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - } - ] - }, - "inputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "outputs": { - "id": "default", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/default" - } - } - ] - }, - { - "resourceType": "/authenticationPolicies/default", - "operationType": "SAVE", - "items": [ - { - "failIfNoSelection": false, - "authnSelectionTrees": [], - "defaultAuthenticationSources": [], - "trackedHttpParameters": [] - } - ] - }, - { - "resourceType": "/authenticationPolicies/settings", - "operationType": "SAVE", - "items": [ - { - "enableIdpAuthnSelection": false, - "enableSpAuthnSelection": false - } - ] - } - ] -} diff --git a/server-profiles/12.2/data.json b/server-profiles/12.2/data.json deleted file mode 100644 index d7a3e129..00000000 --- a/server-profiles/12.2/data.json +++ /dev/null @@ -1,4748 +0,0 @@ -{ - "metadata": { - "pfVersion": "12.2.0.4" - }, - "operations": [ - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "cert-time-tracking", - "items": [ - { - "id": "9vgmnd36wykte1l2nm8s8uead", - "type": "STRING", - "stringValue": "1735851845" - }, - { - "id": "sslservercert", - "type": "STRING", - "stringValue": "1735840761" - }, - { - "id": "tiq4n26axjircjk30oz5zf6k3", - "type": "STRING", - "stringValue": "1735851641" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.oauth20.domain.ClientManagerXmlFileImpl", - "items": [ - { - "id": "MigrationComplete8.4", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.domain.LoggingMode", - "items": [ - { - "id": "IdPOverrideOn", - "type": "STRING", - "stringValue": "false" - }, - { - "id": "SPOverrideOn", - "type": "STRING", - "stringValue": "false" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.domain.mgmt.AdminUserManager", - "items": [ - { - "id": "isDcRoleUpdated", - "type": "STRING", - "stringValue": "true" - }, - { - "id": "isEaRoleUpdated", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.domain.mgmt.impl.PartnerCertMigrator", - "items": [ - { - "id": "partner.cert.migration.complete", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/configStore", - "operationType": "SAVE", - "subResource": "org.sourceid.saml20.metadata.partner.impl.MetadataDirectoryHybridDbImpl", - "items": [ - { - "id": "MigrationComplete8.4", - "type": "STRING", - "stringValue": "true" - } - ] - }, - { - "resourceType": "/license/agreement", - "operationType": "SAVE", - "items": [ - { - "licenseAgreementUrl": "https://localhost:9999/pf-admin-api/license-agreement", - "accepted": true - } - ] - }, - { - "resourceType": "/certificates/ca", - "operationType": "SAVE", - "items": [ - { - "id": "sslservercert", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURVekNDQWoyZ0F3SUJBZ0lRSFJOTEZ3a0RRTHc3WGZ6NVZKTlJnekFMQmdrcWhraUc5dzBCQVFzd1N6RU9NQXdHQTFVRUNBd0YKVkVWWVFWTXhEekFOQmdOVkJBY01Ca0ZWVTFSSlRqRU5NQXNHQTFVRUN3d0VVRWxPUnpFTU1Bb0dBMVVFQ2d3RFEwUlNNUXN3Q1FZRApWUVFHREFKVlV6QWVGdzB5TkRBNE1USXhPVFEzTVRkYUZ3MDBOREE0TURjeE9UUTNNVGRhTUVzeERqQU1CZ05WQkFnTUJWUkZXRUZUCk1ROHdEUVlEVlFRSERBWkJWVk5VU1U0eERUQUxCZ05WQkFzTUJGQkpUa2N4RERBS0JnTlZCQW9NQTBORVVqRUxNQWtHQTFVRUJnd0MKVlZNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNodTE3Z1FiYnZNdnBsbkJ0YnBLOTNVVTMvYjRUZApKamJ5dXJNRDRQOFMrakNWeER4cDF4ZGxUeGJxbFphcVRuaE8yOG1GRHdFRFlhdVgyZHdENmUwTUxkNEV5aWQ3eUp5T2ViZmdQUzRMClJrc3ZVb3RlUlUxV2RoZ1I4NDdyRFNOZnFha3JQUkRaVWZJOUpmY0pqMG4rWElJT2hobEhQZXB4bE56aDRyK0xUY3ZqcXIvTWgxMEgKNzhteG1xZUhvUWlZYmhydExpaGgxN2N2cGVJWlhPT3dVU0JvV1pDWkcreXlYVXNGd2RHU3VoV1l0clNPbE1TZnZlTm5rbk41amh5aApVZWJRQ05vVUhTdEs1cW9YeTFVVU1HRE5IcEFHSDNWNHJpWmhCNkxhTkszZ3gwbmF5d3RvcDF0WkpaNXg0ZllJMFQvVTVreTlGZWxlCkE2SEMzZmR4QWdNQkFBR2pOekExTUIwR0ExVWREZ1FXQkJSWVBlRkVtTkxHcURGQ2pOcWhBUVc3NThZT3FqQVVCZ05WSFJFRURUQUwKZ2dsc2IyTmhiR2h2YzNRd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFBVVBRM1hKSmtJZ3JNSU5xVjJPdnB4bUR2c0JsVEVjQmE4Z2JRcwpTMXZuQUdDNFRsKzV2QWpwa0Z4VFhUbnBHaWtJU25POVp3SWJRYTJ1RlZRMjZFbkNKazF3Z3JMWFRkY0FXQjRLQmZRYWRKUTdVQzltCmE3RTZYaW5FSjBUWGd5UXNSc3R4cldVNldLWGV1d3lYZEFidGE1ZWhzRjZZUDNPYzNZZTBqR201L1FtaWZhVmwzWUJNQ3JxOUVGdkwKUzQ1MUVTcVJMaDA4QUZjZ3RaWlc4RGo1MHNyUGlWbDZidVVQOWd3YWxqamhYV01FTDBNVWtKMlgweHlVMHlGMytNV2lMMU9oaThURwpNeEw5YzliN3JScUQyWk9mU2xXVGN1Sm83OXM1ZkNFOG1leDU3VGdlSEh5eC9GVEIrUzhpMWYvT1J5WTl0ZlErbjJvQk1obnRzN2pkCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/keyPairs/sslServer", - "operationType": "SAVE", - "items": [ - { - "id": "sslservercert", - "fileData": "MIIKgAIBAzCCCioGCSqGSIb3DQEHAaCCChsEggoXMIIKEzCCBaoGCSqGSIb3DQEHAaCCBZsEggWXMIIFkzCCBY8GCyqGSIb3DQEMCgECoIIFQDCCBTwwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFNJjFcCjl6Zj86enQwnfa5Dhaed9AgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQL4FBvarelURw_mtJCbortQSCBNBoO3Ra2M6piPUds4H-QJ3j7zS_EqAieZ4Xib0xV-tlARdKibyq1iLzjJKQe_nZhYBOAkGtIqLvFiXFuOsdo2mpMvE8hx1MGB-UioPQMCzRndSSFHFJavziLrRrvbIHNnV-ZXUCr--vw9w_0hGrY6HxQf2sNY2TInT4-SBtP2o2Y6x4Y252Us4F-CqBFtS7JxoOKC7pVLIojWVW5y7DoqilrD7nB7NVUkl4n6S8lOE67hkWKKMxPuMi_uWVUwltzFrlfh7AD7W4-FXU7tglxcXc-e-GoznYQnKKhGrewTG-7kpjitpZjI_3nbVk5jfDrCDUgfsbRi1S3trbdg_PPNkcrFpdyibex83BQ8Fu-VMkCf4WljqzdyG8MRPnHWmK_XakHOUuuycY6qlCxTMWPgHGJ_gLEx6kqjjdqnB-AM_EuvklctwjiWQ-9_JsN54bJwKj8q1uV2rrVKgIhKJ9KtpiXN4mwPWnKLNqkmtqT9GYkIn2vRRs9ANa26zWahXZm4LpkEOgqwfLrrAqpX2w9tsQdlPouWW6tAVM17ZRUQlD8owIvjDzQkgzPM1o-o3va3QwKUiEXix5spDlzcOr8BKo6JhheBDtoqjbQ2oRKolgm8wlmQ5gm1qpz8rBfI9joKmZl8AV9wf1BthNMieNPhQGUmv2owk2SLyZSMb-zzDG0Nb3swGG8YPS2sGSa1SQlmVNTcrj5zWA3ur8JTEIpGBY8DJbCKLpSkCE2VGRctJMinBpASl3WUCsI691n7yMQo1E84Wb7ng3QFrEClkxE9cJuhEhTgPcAwSAM-uushoXT0_okUILLUQFU9vzRMSifH1toSEhobaNB053znjWYdrJtupgegFcwU0EvDyhxGuvM-bZtL_2ZQGUcGtUlSs1PWRwWOXs3LX74xVWcNGLg972Q0n8JsDw-sNDJQV9KnOYeVCjCZBa5Zc3D66VydEsN2wSFlB1SYrH1C3EMbXcSQYtYw9kv-hoD-kIcgwXE7e9C_3S8bE9ivCdVN8c0EG-qxt_CcnhPxUGYrEGl3SV1N9tZVOEYG0DyOeMkLDCXn8hRt7_Gn1GSgrtaF4_ZUJgv8i9A2TUgkIzqgm4TiEI57BlWkKNlttajANgfWn1W387WLvGG27AV0fLrqDlHpuFGCDseWq9J2rWiAdH4n20TLPoYxJxC8h9pqsOyxDMlT6j8geC8ckYXcoabH2u7HLhZlyhT4CKo1Yj7w2vgp68wOJk40jDo7c9AnrWixliZLfe0XUznS7GDQqlX8PFoCFn8vihalXSIh1vDf-DWebtB5XbHC3vkwh9IlHJ0wqSANzkWRCxCxQkLGxnMUBwjSM1cFUBr_i1D-Iqj8Dftc_7fkntf12D2W9WykGJaTBsFLyBM5Sihh2zQg_o2iCRX9b_WIGt4axS2sg4yILqDSf6EOxFZNbuWo8u6oYzRRTRSQvFzt4ujEGA1BolY9gvrGpG-PrzKVr_f-BTanQ9sTm3BqWI7Ayy3KXFhsf46303NuZDa2doZLnqvUZmXWdpBcFcnkcSlJ9D6iKpalZYU2dAlg1tAI6-ky5agyBaoOjvZGQgMiQh2_jBcgLbxqhvL0z880JDDJ6MqFSBt7ZC0WFT2j6YFYQupRV42dpXfCEeRei_8jE8MBcGCSqGSIb3DQEJFDEKHggAcABpAG4AZzAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNzM4MzYyNzc3ODU3MIIEYQYJKoZIhvcNAQcGoIIEUjCCBE4CAQAwggRHBgkqhkiG9w0BBwEwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFLWihKD1yvXe_U3wbIF4DQihO9JqAgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQ5m2yLlmCbkq1ITkP4Sf2lICCA9Ck1EuI9vUQ0dVQTsuLhHEQ2g8tNb0XvPDcpFvTqDEd5nJM3C2V7R_4Add2j7H9L312xg7WKOdWHuvsMTOcRSLIuT66D43aG4qvmWg0j_MsLJXmfYuHDcXaM7QCaPlP6AnFv4YWjqrfCdOcPe1GhjYShe3GZ7agihonM3nNq4ztzWUz7TrNRbBvEgQlebOWoO3xvC9CCCBNWeoceepDsk5QBU01JDBUG5lgA8OXfu1vOyamHnjEmJm23V3bmx5iPOWucOUTFwUuXO3q6QV5Gm9ehbP8IazHrvGJHdJF6Jxrohx93bmopGmQfV8rUuy5PQvu9LR8BPhfMsttSYwKHSy-wsMlhWk_zBMSDurgzvEmD64qHhFArAY1A4ZxXmW2KHwWt0VavGVsfOOTUZuH9kC5xrAEBkPOYjeWO3Cp3Se7o7VRbfTC7kweXc1fFY0R-gIReFr1J7us2PBajDQdFXBfxVukUHOjITtpkBVTxPWW6uJwrnUuLN6IVnbEl7CFYrm9U5vw_3K_S2ZpZg7A_T_MdXxt1oOka4eRlUENw-d5LfH25NBbeTW78ySoSZGmI0lelBuZRZsjyBdJz2l3cuS-OgEB-Mxt2eHuMdr-2aUt_6_uPNyfpBB3GkX0xvW1sY34KAuPVtB2roclJnvtzuza_3-HezWkd9ivy_b2-kDYsGrVhNg-qj_aG4OmE4MgVGYfRxHUsvM2dDnMB6iVl4xka8dUCR9yWlB47sJz8Q8M1Ct5uad8cJVhfGAJJ2_o0Bs_oBmToYuJqbI0cZqPm6Evf4GzQFr6hSv9jjJC0dNTnr8Nss5tAhdARuR1u7gEjS6Wl7L1hOnuj6bWB6WSJYFS50uHkc64AmPPvbGxhuT5sHiHyoFm16zLgOrc_AWiADvAfcJkGXGWl_x1cxSUkC7aj0CiI4TCGqu02B8SJ_ow4qVdaiDTECLodPA5Ko1asCadQTb3ztaN92g2NBBlmau6foJsExw-uiPU5GdBiJjxMiSPhvcTl_x3AEjsFXZR2Vb4czciY8pm3Le1vzS7nyA8XSPAIhgfcbr5EnDUFfzRp1_ypubs_jyJkIo1XebJQBpBtQHsC1L88WuvpHXiBZuJeZYqhWCNZpXqVdjJZZ8JhgvjW7eeh1Ez1DoNXvR-w8mFmF9hfN82er9qWIoYEgQULZncEO68NzdM3dY3g3VAWEQe-9Y_5tUOdb_v2oiL0QKr6ftsVVkFLBbNfercUMfzcsDIbHWp5GbDkEkezHULOFgWdDWpOywUKiVU22r5MK11N4WJnijbGc2MBj9qYJswME0wMTANBglghkgBZQMEAgEFAAQgrr2WgyTN6lz9Fid8P0NKmQOuO-uZNvf0EGgt3KuNEacEFE7isjyhDWcthECVtprKcnSQlk-kAgInEA==", - "format": "PKCS12", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..e3UIFPccb6Jp7bU0HRfmlQ.UAdZ0HlBqmKXjZgyZScUjYcq51rmu2SWCIVVB0gmeT8.nkrx4RFZrT07wr1DMLirFA" - } - ] - }, - { - "resourceType": "/keyPairs/sslServer/settings", - "operationType": "SAVE", - "items": [ - { - "runtimeServerCertRef": { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - }, - "adminConsoleCertRef": { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - }, - "activeRuntimeServerCerts": [ - { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - } - ], - "activeAdminConsoleCerts": [ - { - "id": "sslservercert", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/sslServer/sslservercert" - } - ] - } - ] - }, - { - "resourceType": "/keyPairs/signing", - "operationType": "SAVE", - "items": [ - { - "id": "9vgmnd36wykte1l2nm8s8uead", - "fileData": "MIIKYAIBAzCCCgoGCSqGSIb3DQEHAaCCCfsEggn3MIIJ8zCCBaoGCSqGSIb3DQEHAaCCBZsEggWXMIIFkzCCBY8GCyqGSIb3DQEMCgECoIIFQDCCBTwwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFGE1eouos0ogOnWNc6FlD_t_Lq3UAgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQIypkDlv39a_TEUt3GdyjbQSCBNB1iYlhzaVOv82x1xTAlmHUhWUaDBBVmnC_rntb3atP5_jx3GGsrHMiXQpe06ashkgrZ1G5zQbch4zu0NKG7OZ18qnd3G9sWp9aW_Q1dvniv6Qppi1jf1xMV2VgPkCUk2di4EAOTpSUeau6E6OWwSkxwpqy1uEGEemph2YG082Yu-C28WjTr_XViMQ6gs3lIw4dHKC6ViyP2Ti-zPLUl1bTnU7k9yebQZabTl4PAcK3DiTsKOHnGkWs_Rfa0ZsEaivlR7UcMbkUsFmOby9PpDK81frg4Sf-yqsTzulmNVfiwOOEGl_O3Cymd6oacHwhbBZp_BUFyjah5ZIQc3Q7jnkpK0nog3OOeBmjJHkLX38k6q3I4aDip-op6MmcbYip6h4vOJQT8nl8Xsg1oi4Yjjx-xv-TjXSQ-ChRuLE60TquhIl7QD9uyWjqzIWmZJ7Xi8SchTHRwJa3JbxxZlnxnseJtVcoeKhc_BIkcqJu3MeuhsHzWu1Lyap_v_0OLvAfaj4IfqP5lHuw7Q8iQ9S1vGcmH03mI879-Y9pfzhjKpn94JfCg_VNu8vRScy_m7r7W_yxxr7TZfdQEUVMd1r02mWCKMuVa0esVhms_aOo2VGGfMA1dNLMOdvspNvbLPCKPGFofHyNDL9Xbq6ANYrWRgXCOC-vKyMCxz73vbD-LuXkaV7Fk_qbGZZ7DnIuTjeXN2LNVDrjKZK1156dHBE0kLvstla_GiV-LZalN1nwCKxg4Oec9mh0uaXQXw5YT5lo-LiY1fM7aoUZOIy4OLykhWSyN3O9gu-C4LlchXO4If8lKSRLieTh4DV8F7dq91NOmbwPySRrQxzRg6IUs5CWT7rdm58v14SUYLr7ER2uhKm8Pcc3BtiJ39F2Mvk_PhTNPj5ELm-dXXDoT07YIqg-3UV-vF7UVdVfFfDGwylTMMmmtOeBv5-z_tWHqjoJDx7f7sl4LPdENhfO-hXkX74N2TbogvljkIRSGQKd-d8TNR1XzYo5oZAY2_L_oP7MIDGGK1rHZ1kjpiXguyOwJNaQsbpRbhAucwjbWKGCwaU_EMeS2Wu9tkqR49ww-Q_HUosga_zdeMzrpsIdhN0mH4dqYkX0zSa0a661pKlbfHKTUFlOyFkxu7j7df5vGqUJlQXekGXKHiiNYHXIXynHDfrdmJiIYO4TFqvmyVjIogJ92UOMfHShCOv08Z2vWXG55bmiD5cl-KuY8mfdr2-E4HJMukSgBrA-iEuhqvA3YaScpeabHxzpn-vBFGmVc_8ovbCX9VBJoBQxpu7zIK834m1hoDvZcodI7vGNBZlWjK5o7uoAcP5uk7c4U5EdOco3PQs-w10L-aQt8LsOnDv3jrg1Xu6IB0YOsG0XY24xK6Wh73yvsZcZepMkU1ZAWzZxu2s1z0lU3Ih2aHDGvrmz6BXuSG-lYVX5oRIMoyFa6dSTU86F7RkmBz-nx_ZalEGJMU64JAcUeW5V2A8QmywDFhsEYZUbNGKij0CEaBwBXzXAbwEGiUgee4y4yYQr6cTC2-VnJ6hJZafAQl5RDPYdKNQVi1OrjdrTHFo67ieHlmEnGZ50ruXEzEPGymM3nVawS5iQh9EKpnu7SwCFU53XVX4MSlO_gzXg0752TPQ-cNCnWsftIDE8MBcGCSqGSIb3DQEJFDEKHggAcABpAG4AZzAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNzM4MzYyNzc3ODk4MIIEQQYJKoZIhvcNAQcGoIIEMjCCBC4CAQAwggQnBgkqhkiG9w0BBwEwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFDowzdgMEzuCIw3Y9t_PTzXDX648AgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQi48YGZqK7dbYho_BunhoLICCA7Dg9qWc5rLprVyg1yi6MIXUL1J5uZjy5p6YcykUQxCdtQ1dSCtXnyPHPDh_M4pNlYaZhnZaHBEJUGrf_DtOXWIx4DTfHQx51ekMuLmXMrXcoe2cHIap0r1ZkC5Pec8sXAtlV9NXpItDBDzPDUowJSuiOyX_JZ4xyfKI0zy-RCYwT7AP7e-roRt1Kcx1mJ58GHgc8ni57UhUBDAyUS9EAS8-5pyImBC_jFuIAnzL7h4_7v0_906Dt-f-B_0oQLHWlyrIw1ZANnkt1BPsyzgIvaaa_He-dyel2-ZafThiLhfYGWqw-oy3Euwbeij2957U8dV7VNjzNT17f6UJlMM7tZ8L-gEnSAGTrF-E6AZRMybia5dFAZHSpRoBms9IXaOIMUXkqLZJVs0Lcq59iTIt_1KPnTxUpWYzmeVoL273NgVjLmk_Ms7CMjCl6a_D0Cnil_Pij_GR1jxVkl7gf8-x2r78Wapltpc1ckjNZjRZdxiLETN-1AV99vDClDZbHjcCDwqbuxgPfcT58JsYeNtTU8-FKdCyapyDZltjbm72lQtdeFkWmc5Duqz1Om2dZQ7R6voNFFjZwHK_w0_6Spn542mOUPVOonHMy0ryWJAQk1kXtNVY2FsJjyrs30drMduWDTk9zZYTmzMqhPIldNfT3EGt_cYsa-i5pP5OcCjyOSQJT4uutk8xi638O3vHcerNhwQGUgsC_mPPceSK46FtOdCP8NJbgRYmq38oQtvd04J2eLWGz5YW3A0g08INZSX9NCq2UK9LVbLy4QmK9E_B_Kev0At-bUuQuARuNCSW4o5K338NjwVWxEJqHYFzQV0dLk6L8sw5xs7dDmoSw85Umk_6Tgc3zowOYH4itkkbOVXpupWLjBitUdxKqGNyA06khtxPxpIjY0Gs4RQdD-kFrxkIVHQRdhOEauRtp5JPjBLaWqfWhHM1FkXC_HMZGHVCQdAl6rOVoTOJmitO_3V9ge5OUy3yE-e-M5hOws0tp2TrNAn6CHOB-haUBbzuMknTuFy5tls1lomIhiBz4t4rP3NN0bnlBdKA0uuYM1jyrWDtbmJbIsSRlJKgLswOzP-q_CrEl46gac_bUVnIeKPOdRdXcmybgczK0DSkkdWZCHV8zXUlq3VCJFWJuICg3dP52DdmadWJkqzCf9TBY-I_rfRfhersW6O4q6jpUPPfJxVMr1fKpC_AAzToXtZBcPJKWwrMgl12a67hvaIEw5bRdsx1nTnL-eXXvQMCj0EcDUFB7zBNMDEwDQYJYIZIAWUDBAIBBQAEIFg2gaa_X-B6s-HT3bVLHh9khDb50NP5eyyz79-bA90ABBTevhK8eADgl1aq9JJTH9dcOeMesAICJxA=", - "format": "PKCS12", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..h7BMDiugph9XZtAF6dmR0Q.a8qB8DAG-p_IA1CTjPkH7lKPKi0e0AFvIBGtYWWDHf0.G7dcXNLpAOlNVjpY6UGkXQ" - }, - { - "id": "tiq4n26axjircjk30oz5zf6k3", - "fileData": "MIIKUAIBAzCCCfoGCSqGSIb3DQEHAaCCCesEggnnMIIJ4zCCBaoGCSqGSIb3DQEHAaCCBZsEggWXMIIFkzCCBY8GCyqGSIb3DQEMCgECoIIFQDCCBTwwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFGuOOanUm8DAZylSj_vArT9nIy7GAgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQwpKllSJdf-uLTHA2IjUCiwSCBNC6XTUwZKnUEfLCTc8Utk-JgksT37eNN81ZaK10BrkQkUNPNHxWXAN2Fb6iYQZh4StFnelFl0SOOnmtf557VA-midwuq5vifB7cS-YGt6P9UQUL3rEKuo3-pkGKQPHbhrhPwrllTXKOD4E0y6_yNV9qaGByF6eT4Sk-owCXb5aFMdUNMqnjoPPXSibIUfxu4TdKmXGCNHFQWytKOvG10KLJ3CuerSrr2AZKaw4vq1l-n4dvcf5GqUTswOnbw8EkF9ZhWtWf4udJN2_CkbcWD4bzwFJHWK_NWSrHiAr9bDV0suZ8l59SOYnui5-nhgcECraKxXhCjoPhaR6jtINVOPo6_Yx-BPw9JmCTK1PI7ZxxBudmoTInw_JAsZYuQevQvlrx5jjlc5iGq9b1h9xLWJj_3g-Mvt-auMQUg0vVuRbD2eHFxLX8uB9wDB_XoDa55d7P-6KRRPYQtwBeYYN6UNhLrnSBCQJsKKhkN957reH936z21ONfjxzeQh8jYdhl8deKqnL3Nead5QjiY7mErMr35LDqozmDysiDr1GHIJya2eYCxqYKTjKzNyGGxKZ1AfPTAXw_PNOpxl_AmzLVCbgMz6fpqVuFo6z1TUbmZhvxi5JUWp4WuH6gtBByNdTyoUCu9PGGYx3Ctsh3rjTjLi4MKBPilfhpx63XBVLkio1CZMhnBmJBs1aod992aQlF_oSWI9hNBPrHngEIpEt3AO1UP7lcblgFoym9EIjZB61l3q1hCcOHqz-HMlu2jfUwOpN9-poqQqyOtODsEgdWtCVpu85iVoh_YgANa-UKtBZL99yqDNqTpHykxCiXFJiToprDtVruX7veKnE3LhtdmmNg10Netwvh0xdzsAR642V_2oYxW2ARJkZ4TWchRicT4m6UfiRTTjnhDei-4JJp-7pEyukQcWPh5inkGVirH6tbBwxDn9cOx_h3aLOykDhWnCPAQHMRtIANtxmVEiCOcmqxgVMl5ogPZ6l9udhVdHkbAPlh7q3hEwskVOzBsnwdzrKZ9wyN3q1kM2BX6g7EeHhnD6SPHAvBnlihQwX-HIR7-04buenq7ZuC8kJ7yybsm5-_LoOm0JuHrTevsjc_uMsNlzDo8R3nfm_Y9cf53sUe2C9AZG8110A4gvEOJxwjAPgrANnapIXKd0i50ZUaUBP00SUxMyQKFC6bo_E5PFr2Xk6PY_EtQK_wELawaoTblzQfdgkZGltyqn1oTO1Ohodi_pPMcqhNd2LGt2qs20yxGMBUsVMdgZxaf1zbTajcDMaNfre70zhxjnla0Hf8ceyne9bBll3pJBEYxiFI0Stcln4aztEmqYJdWuAty7QKqVIA-QSchP3-rzSExri8vDLCnF2O-W9iuAJgbztJ8PTXMbNhNR5Pi5GhhBGJppjdsRUVf7oORatotwFBDdDljiGSmKtSpCV4-OD59DWSNrh9iJ3m4x9VKqhYcJDImFKhGzaWSVSnLoMKWUKnnSuilPoS4iMCYnrcPZeFDtCSo2mjwJeu80ex9la0oFdmQ7VCcPGZq9AzyMTUa4jiZIRQklb0Elua8ic4LAptJUwd9PWOcUMQHzfg_UlWPuRuTWrhfTBxR-sLNmvtsp5i0EPA5-4vrSF5Bhxcmh0oUUWhx2efzDE8MBcGCSqGSIb3DQEJFDEKHggAcABpAG4AZzAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNzM4MzYyNzc3OTMxMIIEMQYJKoZIhvcNAQcGoIIEIjCCBB4CAQAwggQXBgkqhkiG9w0BBwEwZgYJKoZIhvcNAQUNMFkwOAYJKoZIhvcNAQUMMCsEFAvVF_i5GyLqTXVcJquxRb1Oj8p1AgInEAIBIDAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQhHSet9X7FtMBKCSk0pNjoICCA6BAqo1uUYK6yfxiLwRKR2ufTtUg5do1ruz4vbYAN3jn2l0dqyVo5KkeSwqFGD3GFsOfaNUSeArjB6fRM0O4wc-vLFXQAZ2qN_RIHBeEceF7tdbhgY-HcPp1tvRwqpXMQxBpXqO2JmGhMJOazHJei3Vn4-GN-sEbCNjbruMuXT_UeESzqEerXIuxLfDGnwA4T5vKcA80geRTea2lp8ikSDAuOhRqiprxoJRstahq07tvFQjXcx7QoNqJzkUXCX75l-mL5hmePGkOYbaFWeKWFgLCDlu8QCa4XzofLXQgy_A5ePNCe1npv0jXTq_ai7B4za9nD7qGTwUtknTNW4KQoIjhxoFQg4zMSfZukyDwCjhN4EXxRZirvp-MfvwRImz3Xat7OtAOjGLf1mFfNGe7RaXFTv40PLOUzE6QZqw4Ow7Cw2sqF597yOVOcDfh5JRZoeeBNtQkQkgyZqvOvvE2-3F9vtmXa-Jy2mq6zXUzXzHVNp9uRYS5tIAq5s-larLxE-af4kmB9iod3AlMyR-NEa3C1qe7sNli4Sy7Woelw_IgmPEqD2CVl5RD7u8GT2Hl2lcx4K2m-SLRpl4uRJ1J-3BDYUTfFCsi5wRTZq0XVUquPeAiZ6l6T7110aA3ii2kaA9LCXdahKJ6TXhlVU4dnHG9dKQ1ha8GGSo0YLb95Pjpq2435wz3l4pkcoycIq_K-hwiemCB9mdeaOanVFc1VGznAxJSeijoWZcgkNdyzze-6MWGXsk5DgZHt3TL_w22y84ujCOte3jOxOHYgnzFTKTOlJ3jVf8gbBZZH3nyfyqZ2DJBUT0xZDa0I3V0jtLvTPDUUXsxDaYdCgc2w8VKAQciasH1ephgnk7co6-CPoQfqVXgzzL34_TFZujRKMD8s-nD7RA6r8SzOk03HZDNxq26f_o2_TXo_PWes2SB8G0lDIvfMlZMPU-MopapbwjVMsxYR-5P49Fl4liXjiO5E703gQuW1Jt7iXvZ8RW5evrC-AjNF3nkSGDu_x2fUTmkmiZjn5aWGzbr0cPYS-oumtnczOfx9CDwVMZKRA67LPkF4HvBge_U55eZrmbUv0CJ4KRiAYX9UuNgDxcCSUC76lkEb4d4qOyVinSPQkjXviMd0E6gNifhWEpASyfp2t5Hc3hB9rDZZ367bkdxuIovAHlsdXh9yeB2ICM2v9CQAtoN7F4TDvPrBhybPITpY0jAX71eg0rdsyQnmeKgKP47E8B0ME0wMTANBglghkgBZQMEAgEFAAQgkbCJWiLDEwnrJgpojDldYI53FioUQrTir0QGk4OElaQEFEDuQVfguSwEz_oUv7rRAjgWwX_TAgInEA==", - "format": "PKCS12", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..1I3czs6vz28qZOTDxxkoIQ.F4Ep-IwVdgCVWZ6ydpSrxBEVkOWtngLnyWR_DZbrdbo.hFrSPzu2NLxiDtmz2bk9EQ" - } - ] - }, - { - "resourceType": "/keyPairs/signing/rotationSettings", - "operationType": "SAVE", - "items": [ - { - "id": "9vgmnd36wykte1l2nm8s8uead", - "validDays": 36500, - "keySize": 2048, - "signatureAlgorithm": "SHA256withRSA", - "creationBufferDays": 9125, - "activationBufferDays": 3650, - "keyAlgorithm": "RSA" - } - ] - }, - { - "resourceType": "/keyPairs/oauthOpenIdConnect", - "operationType": "SAVE", - "items": [ - { - "staticJwksEnabled": false - } - ] - }, - { - "resourceType": "/certificates/groups", - "operationType": "SAVE", - "subResource": "STS Settings Mutual SSL Authentication Certs", - "items": [ - { - "id": "ycrgw3j4ckw91gxdmd479qftb", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9XZ0F3SUJBZ0lVUzJUQkNkUnpwSzRaemUrSERLakI5RVFTSHFZd0RRWUpLb1pJaHZjTkFRRUxCUUF3WGpFTE1Ba0cKQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOUE1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeElqQWdCZ05WQkFvTUdWQnBibWNnU1dSbApiblJwZEhrZ1EyOXljRzl5WVhScGIyNHhEVEFMQmdOVkJBTU1CSFJsYzNRd0hoY05NalF4TWpFeU1qTXlPREkwV2hjTk1qY3dPVEE0Ck1qTXlPREkwV2pCZU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eER6QU5CZ05WQkFjTUJrUmxiblpsY2pFaU1DQUcKQTFVRUNnd1pVR2x1WnlCSlpHVnVkR2wwZVNCRGIzSndiM0poZEdsdmJqRU5NQXNHQTFVRUF3d0VkR1Z6ZERDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpkb0d1cmdEdlNSQkwyY0llVWFDWTNwbzVZRFpuVjFleXVPUVR4UWM2T1QySlMwCis0MGdKYkptZk5yYmNPU3QrMURieHpQK0l4YmxrY3o1NjlWT0M1bGJST24zOHllYU1VMzJYYy80REdTcDFIQ1kvSmZTeWd6LytxcjgKOFlUcU1hSTIxQWJabkFpWTV4MFJ3NTZJRG1KZ2xYYVhlVmJDVUp5N29QVHlBb1lZVDkzREpEazQxWmU1MVVjVG1Vc1RLTjRLM2d2dgpTYVJ1eXE1K2c2RVhCcTdBa2VPbmJQMGJTSHliTjFLRVY1QlhOTnBnazloMEp3M1BFK3FrbS81bllSenhCZjRSQS9BZ2Z2OWVzRzlOCnozWGdEb3dBR0JteHIrclUvbmE3cHdFRXVkTWg2NjhERURlUlZ3aDFaYXBZcEJ0VmN4TUhtZEpQZ0ZKckJsbzZtTUVDQXdFQUFhTlQKTUZFd0hRWURWUjBPQkJZRUZHSmMzWjBqOWtYUHNUbW1iZ0FzWS9QSzJjdXBNQjhHQTFVZEl3UVlNQmFBRkdKYzNaMGo5a1hQc1RtbQpiZ0FzWS9QSzJjdXBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSlZCdmNIaGgrMDBnelEwCnBuWkt0Ukp4dkVnK3BHaCtCOUUrNWkyUHNOR3lJQXZBWHc0bWRCY1FaS3hmaVhNMzFaRTJnZTFtUCs0ZGkxMStQS1lOSDJFOTczUEwKSit3R0hlUVoxRVRERzVmbzc5dDBNRzFSekh0R29pclpXN3Y0Qk5VSTZaTTJGakVhQ090WmcxclVoa2RJZnFEeDRDZU5qemIwcmhYSQp6WE5UUzRZNlZseFdBclFud0FncVB0YjVwb0pHM01tLzNmNnVRZy9sMExJS1RZL0dSNnlRc05Da3pUWlFocklwWGo0UnBxblgzUWdECjFJV1RvTW9uN250cDRnQVAvbEFTTTUveG01SnpiNmRtRitob04wNzNnMDJVZVYyVERMemU4MCtLK1hyMUdaZWVVTHVYTnJoT0VYRFIKeXR2dWJlOE9YUFBZNi96Q3BoVmIyMWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/secretManagers", - "operationType": "SAVE", - "items": [ - { - "id": "testSecretManager", - "name": "Test Secret Manager", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.secretmanagers.cyberark.CyberArkCredentialProvider", - "location": "https://localhost:9999/pf-admin-api/v1/secretManagers/descriptors/com.pingidentity.pf.secretmanagers.cyberark.CyberArkCredentialProvider" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "APP ID", - "value": "testAppId" - }, - { - "name": "Connection Port", - "value": "18923" - }, - { - "name": "Connection Timeout (sec)", - "value": "30" - }, - { - "name": "Username Retrieval Property Name", - "value": "username" - } - ] - }, - "lastModified": "2025-01-31T22:32:14.755Z" - } - ] - }, - { - "resourceType": "/pingOneConnections", - "operationType": "SAVE", - "items": [ - { - "id": "noeOvj5ltBnf4rcmtZAKdJ", - "name": "internal_brassteam_893438732", - "active": true, - "encryptedCredential": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..9kOSOKSt93i8OBPktHZM9g.ZLpaS52b3jpfvAYFwnYtSqX8WF3fajMAVBXDQKLpevqjxgvJtT-L09h9JMjtRU4N70QCqSRvm9jlOg_n57Pt1tu5Gk5-QKVUxgbo0llQJlKsU_rboxh50z_rC9Q6aJwa5pa-pAjTKdhXsTte0yQCnMeRyqV0tVrX7_66fHXCE7QxkreazomjIaHDPeb-nT29g2e_bFOjEjZkFIIYS6fn7BwwRp89FUGC1_ZISVgBtNfDa3EgdPOdN4CznzSK3lIreq4uuAHlnQvvHTGziUUzuhftq_KdkFOBCFZrFUUy9Pe1EOgeV10x1hwOYl84AKz4wy7jLjFDWKKIMltBXwB_XVFHV3okz1sZ8BYarbB37mmE8vjdNrq9jyezqOnVwyHgMPD6ti_cfKyIpGS3MOGsJePIVAtPdeWMBKB7m8M5Fp2BUcQFHi9kS2CpZkVePfZElsIH9Ltw4Z9Afih2hyBvFG5Y_0k2zS730rt4VMZW4EIVkUNUYfiw3CMYyqr4SVePWbfN5lO1fh3u3j5VSi30izT8QxUMlNm9BS83zBcliGMQP8PUjLWXj0KfAKIg82VpDYVD4A0IHPkw0qv7vmvZ5O54x5QmghPRqObpcTNNMFBVevXCyvp2H0MQYsLT2SSv2LnmhBakeXcaV2Uoem7VglbL82hQeZMV2WqbVfyugPnnE3cZ07bDa0iZd0XAPoN_K9KiwWp5Vm_SMLmc3_-hxBqGpYOqbRfeehf2yggtkcEQlEDyZs9MYU1ykkCwqsk2Q1oEJH8I5B16Y7uY5kIX8ym9i5h4qDQm9q7uj32Gtxq7IDP8EuEBfPE_WBMHbJC4qeItQptiyuUxtcGHQp1m98lBXV4rqK0_zzt4k2k0H3IT1XaA4T8gFyVSCkMJeJmLmN9tseKzdr_VyQwjItmQxScm7zVsuzcR-Jiagmv_fJYQKIJRVNa-m8UgBQl0VI1GO1l2TAryC1BhSJN04EFup2hRi-o3ddn7Gkrm7s1BA3RwuBLDzw6rh2vcJjrNNxWtsIZZhnU6DQR-Iukq3Jg4IJdQxkL0jijRcRTBkKNYmKJBZrrvWAvo9R4NMXRhLoOahy1OM_ndyh1OEu3_AbCbBrx38QVK_vPWjwys1XxsR7-5HNzmRep-OQRn2dXBaSO1oCHgGSsPZRbDb8165fEOORhzYstpOS34dlZX7t3pP8_B2erq1n32vToR3TOz7bLXS-J44Av32HFt4jBGZcmPRBWVqzS8yqMmeInkqxYTASgxCsj7WByvum7WrgSoHphlsSt5iI1QO-FWgemakahgIvKQiV21kXDBcfG-gGjFDtTEG9lPK7mGJ-vEX6qy8SJKFAHJIUHXPpy0fnTLALZt9_IN-XLPW59WBfe_yThSizFBegSL9We_7J9Vni8nu4JZJ9DmRblExLMWwtt31YVTELIgQLSFrplI1UHRCyHCF6MNcN3WrHJzxYZXlemZYPJyxXaV1aExut_a35UiOQWNJ9RKNawKML4wZ875sCZa02bkvyeDEuck3HumM7v825oNxEUTVU1DQ9a_Bgb-4MovlXWDZP3_HSTd657hxBccDlAcFtYr8oHmIYjYgGzcRi6uDYVVG33zVgE0ceZDGuGrmh88nqzBIbcX4I91AAWIBNJjzMyiXvOK1eKO7X_qYEsf4iDzYej8UlMeRpxJ5DsIVBtizvL5qJYrOHEFs9Kxih3sOrFwIOsb0JN275730cjJdsWzD-T245ADxzycwGQYNw.bvBBwx7JaS8a5OIdcKarmA", - "creationDate": "2025-01-31T22:32:14.801Z", - "credentialId": "971b5d20-0955-4030-b49b-7e349b3b9b1e", - "pingOneConnectionId": "554257ac-76ca-447a-a210-722343328312", - "environmentId": "f5901536-2b60-4d4a-a987-3d56aadad46d", - "organizationName": "internal_brassteam_893438732", - "region": "North America", - "pingOneManagementApiEndpoint": "https://api.pingone.com", - "pingOneAuthenticationApiEndpoint": "https://auth.pingone.com" - } - ] - }, - { - "resourceType": "/dataStores", - "operationType": "SAVE", - "items": [ - { - "type": "LDAP", - "id": "LDAP-PingDirectory", - "maskAttributeValues": false, - "hostnames": [ - "localhost:1389" - ], - "ldapType": "PING_DIRECTORY", - "bindAnonymously": false, - "userDN": "cn=pingfederate", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..64nlOkXuYGL4PoJX2FUx5A.qWhVq-Jjhh4uwYAZMX9A5g.3haZjzMXPBcs4ssG6OlBLw", - "useSsl": false, - "useDnsSrvRecords": false, - "name": "PingDirectory", - "hostnamesTags": [ - { - "hostnames": [ - "localhost:1389" - ], - "defaultSource": true - } - ], - "lastModified": "2025-01-31T22:32:14.916Z", - "retryFailedOperations": false, - "testOnBorrow": false, - "testOnReturn": false, - "createIfNecessary": true, - "verifyHost": true, - "minConnections": 10, - "maxConnections": 100, - "maxWait": -1, - "timeBetweenEvictions": 0, - "readTimeout": 0, - "connectionTimeout": 0, - "binaryAttributes": [], - "dnsTtl": 0, - "ldapDnsSrvPrefix": "_ldap._tcp", - "ldapsDnsSrvPrefix": "_ldaps._tcp", - "useStartTLS": false - }, - { - "type": "JDBC", - "id": "ProvisionerDS", - "maskAttributeValues": false, - "connectionUrl": "jdbc:hsqldb:${pf.server.data.dir}${/}hypersonic${/}ProvisionerDefaultDB;hsqldb.lock_file=false", - "driverClass": "org.hsqldb.jdbcDriver", - "userName": "sa", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..wiFBgJnmvSMp-pdNCcWxRA.wSWWVdwfp1ccq3JjbS3Msw.SsKTVuYcIpnx4GTaBp3ixA", - "allowMultiValueAttributes": false, - "name": "ProvisionerDS (sa)", - "connectionUrlTags": [ - { - "connectionUrl": "jdbc:hsqldb:${pf.server.data.dir}${/}hypersonic${/}ProvisionerDefaultDB;hsqldb.lock_file=false", - "defaultSource": true - } - ], - "lastModified": "2025-01-31T22:32:14.931Z", - "minPoolSize": 10, - "maxPoolSize": 100, - "blockingTimeout": 5000, - "idleTimeout": 5 - }, - { - "type": "LDAP", - "id": "pingdirectory", - "maskAttributeValues": false, - "hostnames": [ - "pingdirectory:1389" - ], - "ldapType": "PING_DIRECTORY", - "bindAnonymously": false, - "userDN": "cn=pingfederate", - "encryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..NpyVixL-cYvYcKhd7VuWXQ.hPBXeyuXN4-FoAR8zlt3Uw.LnxX4-w3XqQxPFDQhV0skQ", - "useSsl": false, - "useDnsSrvRecords": false, - "name": "pingdirectory", - "hostnamesTags": [ - { - "hostnames": [ - "pingdirectory:1389" - ], - "defaultSource": true - } - ], - "lastModified": "2025-01-31T22:32:14.941Z", - "retryFailedOperations": false, - "testOnBorrow": false, - "testOnReturn": false, - "createIfNecessary": true, - "verifyHost": true, - "minConnections": 10, - "maxConnections": 100, - "maxWait": -1, - "timeBetweenEvictions": 60000, - "readTimeout": 3000, - "connectionTimeout": 3000, - "binaryAttributes": [], - "dnsTtl": 60000, - "ldapDnsSrvPrefix": "_ldap._tcp", - "ldapsDnsSrvPrefix": "_ldaps._tcp", - "useStartTLS": false - } - ] - }, - { - "resourceType": "/notificationPublishers", - "operationType": "SAVE", - "items": [ - { - "id": "exampleSmtpPublisher", - "name": "exampleSmtpPublisher", - "pluginDescriptorRef": { - "id": "com.pingidentity.email.SmtpNotificationPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/notificationPublishers/descriptors/com.pingidentity.email.SmtpNotificationPlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "From Address", - "value": "example@pingidentity.com" - }, - { - "name": "Email Server", - "value": "example.com" - }, - { - "name": "Sender Name", - "value": "" - }, - { - "name": "SMTP Port", - "value": "25" - }, - { - "name": "Encryption Method", - "value": "NONE" - }, - { - "name": "SMTPS Port", - "value": "465" - }, - { - "name": "Verify Hostname", - "value": "true" - }, - { - "name": "UTF-8 Message Header Support", - "value": "false" - }, - { - "name": "Username", - "value": "" - }, - { - "name": "Password", - "value": "" - }, - { - "name": "Test Address", - "value": "" - }, - { - "name": "Connection Timeout", - "value": "30" - }, - { - "name": "Enable SMTP Debugging Messages", - "value": "false" - } - ] - }, - "lastModified": "2025-01-31T22:32:14.992Z" - }, - { - "id": "exampleSmtpPublisher2", - "name": "exampleSmtpPublisher2", - "pluginDescriptorRef": { - "id": "com.pingidentity.email.SmtpNotificationPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/notificationPublishers/descriptors/com.pingidentity.email.SmtpNotificationPlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "From Address", - "value": "example@pingdemo.example" - }, - { - "name": "Email Server", - "value": "pingdemo.example" - }, - { - "name": "Sender Name", - "value": "" - }, - { - "name": "SMTP Port", - "value": "25" - }, - { - "name": "Encryption Method", - "value": "NONE" - }, - { - "name": "SMTPS Port", - "value": "465" - }, - { - "name": "Verify Hostname", - "value": "true" - }, - { - "name": "UTF-8 Message Header Support", - "value": "false" - }, - { - "name": "Username", - "value": "" - }, - { - "name": "Password", - "value": "" - }, - { - "name": "Test Address", - "value": "" - }, - { - "name": "Connection Timeout", - "value": "30" - }, - { - "name": "Enable SMTP Debugging Messages", - "value": "false" - } - ] - }, - "lastModified": "2025-01-31T22:32:14.974Z" - } - ] - }, - { - "resourceType": "/notificationPublishers/settings", - "operationType": "SAVE", - "items": [ - { - "defaultNotificationPublisherRef": { - "id": "exampleSmtpPublisher", - "location": "https://localhost:9999/pf-admin-api/v1/notificationPublishers/exampleSmtpPublisher" - } - } - ] - }, - { - "resourceType": "/captchaProviders", - "operationType": "SAVE", - "items": [ - { - "id": "exampleCaptchaProvider", - "name": "exampleCaptchaProvider", - "pluginDescriptorRef": { - "id": "com.pingidentity.captcha.recaptchaV3.ReCaptchaV3Plugin", - "location": "https://localhost:9999/pf-admin-api/v1/captchaProviders/descriptors/com.pingidentity.captcha.recaptchaV3.ReCaptchaV3Plugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Site Key", - "value": "asdf" - }, - { - "name": "Secret Key", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..LEHbXKxxq0izxaHGeMAMAA.5gWiH8Z9IZCNJ5XTilpWYw.YCG2pILn3QiJertJcDMVpA" - }, - { - "name": "Pass Score Threshold", - "value": "1" - }, - { - "name": "JavaScript File Name", - "value": "recaptcha-v3.js" - } - ] - }, - "lastModified": "2025-01-31T22:32:15.038Z" - }, - { - "id": "exampleCaptchaProviderV2", - "name": "exampleCaptchaProviderV2", - "pluginDescriptorRef": { - "id": "com.pingidentity.captcha.ReCaptchaV2InvisiblePlugin", - "location": "https://localhost:9999/pf-admin-api/v1/captchaProviders/descriptors/com.pingidentity.captcha.ReCaptchaV2InvisiblePlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Site Key", - "value": "exampleCaptchaProviderV2" - }, - { - "name": "Secret Key", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..D1Sppt9g51GeGAKZjrBdhg.4QDUIu63Od67tRn1nTFMcA.FtwqtuMxlkE5j0Z9U7Xa2A" - }, - { - "name": "JavaScript File Name", - "value": "recaptcha-v2-invisible.js" - } - ] - }, - "lastModified": "2025-01-31T22:32:15.069Z" - } - ] - }, - { - "resourceType": "/captchaProviders/settings", - "operationType": "SAVE", - "items": [ - { - "defaultCaptchaProviderRef": { - "id": "exampleCaptchaProviderV2", - "location": "https://localhost:9999/pf-admin-api/v1/captchaProviders/exampleCaptchaProviderV2" - } - } - ] - }, - { - "resourceType": "/serverSettings", - "operationType": "SAVE", - "items": [ - { - "contactInfo": {}, - "rolesAndProtocols": { - "oauthRole": { - "enableOauth": true, - "enableOpenIdConnect": true - }, - "idpRole": { - "enable": true, - "enableSaml11": true, - "enableSaml10": true, - "enableWsFed": true, - "enableWsTrust": true, - "saml20Profile": { - "enable": true - }, - "enableOutboundProvisioning": true - }, - "spRole": { - "enable": true, - "enableSaml11": true, - "enableSaml10": true, - "enableWsFed": true, - "enableWsTrust": true, - "saml20Profile": { - "enable": true, - "enableXASP": true - }, - "enableInboundProvisioning": true, - "enableOpenIDConnect": true - }, - "enableIdpDiscovery": true - }, - "federationInfo": { - "baseUrl": "https://localhost:9031", - "saml2EntityId": "samlEntityId", - "saml1xIssuerId": "", - "saml1xSourceId": "", - "wsfedRealm": "" - }, - "notifications": { - "notifyAdminUserPasswordChanges": false, - "expiringCertificateAdministrativeConsoleWarningDays": 14, - "expiredCertificateAdministrativeConsoleWarningDays": 14, - "threadPoolExhaustionNotificationSettings": { - "emailAddress": "", - "threadDumpEnabled": true, - "notificationMode": "LOGGING_ONLY" - } - } - } - ] - }, - { - "resourceType": "/serverSettings/systemKeys", - "operationType": "SAVE", - "items": [ - { - "current": { - "creationDate": "2025-01-02T17:59:19.959Z", - "encryptedKeyData": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCIsInppcCI6IkRFRiJ9..mBwXJBuBBcBb1iuF7_J_oQ.aD0ENEXvfHwWh_wJBCV6_uj98eJ8hFuLpstFj19YSB6kFScALLsDk_6r4oSzepix.dj8Utcj8m66bpfazwNsw8A" - }, - "pending": { - "creationDate": "2025-01-02T17:59:19.960Z", - "encryptedKeyData": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4xLjQuMCIsInppcCI6IkRFRiJ9..lTUXjpewvJW85TygS2XTtw.tn7hmeI-KHBTvmRmev2pvqN8R2qeW5PHhMBTUa761u6vbJ7wH70SJyU-RoZ3mYX0.XLC2NhA4WJ4mmmE-RtRyQw" - } - } - ] - }, - { - "resourceType": "/serverSettings/outboundProvisioning", - "operationType": "SAVE", - "items": [ - { - "dataStoreRef": { - "id": "ProvisionerDS", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/ProvisionerDS" - }, - "synchronizationFrequency": 60 - } - ] - }, - { - "resourceType": "/serverSettings/wsTrustStsSettings", - "operationType": "SAVE", - "items": [ - { - "basicAuthnEnabled": true, - "clientCertAuthnEnabled": true, - "restrictBySubjectDn": true, - "restrictByIssuerCert": true, - "subjectDns": [ - "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US" - ], - "users": [ - { - "username": "testUser", - "encryptedPassword": "lPkeLavAtN0Qb4eY579HVgd5Uk3vdODyatGvGAV-tVQ.odLwjB--.2" - } - ], - "issuerCerts": [ - { - "id": "ycrgw3j4ckw91gxdmd479qftb", - "location": "https://localhost:9999/pf-admin-api/v1/serverSettings/wsTrustStsSettings/ycrgw3j4ckw91gxdmd479qftb" - } - ] - } - ] - }, - { - "resourceType": "/serverSettings/wsTrustStsSettings/issuerCertificates", - "operationType": "SAVE", - "items": [ - { - "id": "ycrgw3j4ckw91gxdmd479qftb", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9XZ0F3SUJBZ0lVUzJUQkNkUnpwSzRaemUrSERLakI5RVFTSHFZd0RRWUpLb1pJaHZjTkFRRUxCUUF3WGpFTE1Ba0cKQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOUE1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeElqQWdCZ05WQkFvTUdWQnBibWNnU1dSbApiblJwZEhrZ1EyOXljRzl5WVhScGIyNHhEVEFMQmdOVkJBTU1CSFJsYzNRd0hoY05NalF4TWpFeU1qTXlPREkwV2hjTk1qY3dPVEE0Ck1qTXlPREkwV2pCZU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eER6QU5CZ05WQkFjTUJrUmxiblpsY2pFaU1DQUcKQTFVRUNnd1pVR2x1WnlCSlpHVnVkR2wwZVNCRGIzSndiM0poZEdsdmJqRU5NQXNHQTFVRUF3d0VkR1Z6ZERDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpkb0d1cmdEdlNSQkwyY0llVWFDWTNwbzVZRFpuVjFleXVPUVR4UWM2T1QySlMwCis0MGdKYkptZk5yYmNPU3QrMURieHpQK0l4YmxrY3o1NjlWT0M1bGJST24zOHllYU1VMzJYYy80REdTcDFIQ1kvSmZTeWd6LytxcjgKOFlUcU1hSTIxQWJabkFpWTV4MFJ3NTZJRG1KZ2xYYVhlVmJDVUp5N29QVHlBb1lZVDkzREpEazQxWmU1MVVjVG1Vc1RLTjRLM2d2dgpTYVJ1eXE1K2c2RVhCcTdBa2VPbmJQMGJTSHliTjFLRVY1QlhOTnBnazloMEp3M1BFK3FrbS81bllSenhCZjRSQS9BZ2Z2OWVzRzlOCnozWGdEb3dBR0JteHIrclUvbmE3cHdFRXVkTWg2NjhERURlUlZ3aDFaYXBZcEJ0VmN4TUhtZEpQZ0ZKckJsbzZtTUVDQXdFQUFhTlQKTUZFd0hRWURWUjBPQkJZRUZHSmMzWjBqOWtYUHNUbW1iZ0FzWS9QSzJjdXBNQjhHQTFVZEl3UVlNQmFBRkdKYzNaMGo5a1hQc1RtbQpiZ0FzWS9QSzJjdXBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSlZCdmNIaGgrMDBnelEwCnBuWkt0Ukp4dkVnK3BHaCtCOUUrNWkyUHNOR3lJQXZBWHc0bWRCY1FaS3hmaVhNMzFaRTJnZTFtUCs0ZGkxMStQS1lOSDJFOTczUEwKSit3R0hlUVoxRVRERzVmbzc5dDBNRzFSekh0R29pclpXN3Y0Qk5VSTZaTTJGakVhQ090WmcxclVoa2RJZnFEeDRDZU5qemIwcmhYSQp6WE5UUzRZNlZseFdBclFud0FncVB0YjVwb0pHM01tLzNmNnVRZy9sMExJS1RZL0dSNnlRc05Da3pUWlFocklwWGo0UnBxblgzUWdECjFJV1RvTW9uN250cDRnQVAvbEFTTTUveG01SnpiNmRtRitob04wNzNnMDJVZVYyVERMemU4MCtLK1hyMUdaZWVVTHVYTnJoT0VYRFIKeXR2dWJlOE9YUFBZNi96Q3BoVmIyMWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/serverSettings/generalSettings", - "operationType": "SAVE", - "items": [ - { - "disableAutomaticConnectionValidation": false, - "idpConnectionTransactionLoggingOverride": "DONT_OVERRIDE", - "spConnectionTransactionLoggingOverride": "DONT_OVERRIDE", - "datastoreValidationIntervalSecs": 300, - "requestHeaderForCorrelationId": "" - } - ] - }, - { - "resourceType": "/serverSettings/logSettings", - "operationType": "SAVE", - "items": [ - { - "logCategories": [ - { - "id": "core", - "name": "Core", - "description": "Debug logging for core components.", - "enabled": false - }, - { - "id": "protocolrequestresponse", - "name": "Protocol Requests and Responses", - "description": "Log protocol request and response messages.", - "enabled": false - }, - { - "id": "policytree", - "name": "Policy Tree", - "description": "Policy tree debug logging.", - "enabled": false - }, - { - "id": "dsresponsetime", - "name": "Data Store Response Times", - "description": "Log response times for data store requests.", - "enabled": false - }, - { - "id": "trustedcas", - "name": "Trusted CAs", - "description": "Log PingFederate and JRE trusted CAs when they are loaded.", - "enabled": false - }, - { - "id": "xmlsig", - "name": "XML Signatures", - "description": "Debug logging for XML signature operations.", - "enabled": false - }, - { - "id": "requestheaders", - "name": "HTTP Request Headers", - "description": "Log HTTP request headers. Sensitive information, such as passwords, may be logged when this category is enabled.", - "enabled": false - }, - { - "id": "requestparams", - "name": "HTTP Request Parameters", - "description": "Log HTTP GET request parameters. Sensitive information, such as passwords, may be logged when this category is enabled.", - "enabled": false - }, - { - "id": "restdatastore", - "name": "REST Data Store Requests and Responses", - "description": "Log REST datastore requests and responses. Sensitive information, such as passwords, may be logged when this category is enabled.", - "enabled": false - } - ] - } - ] - }, - { - "resourceType": "/administrativeAccounts", - "operationType": "SAVE", - "items": [ - { - "username": "Administrator", - "encryptedPassword": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..kXCR48-wTysghVHlJnW7gw.13D06DlCeQZMfG1ZzeLtV47R7hhfqXsTeHJk89yIciHWqTyzaHoaoUeKP0NvQV73MaNwwFLy-6xXiJb_M18wew.rzhaAzkb9Nikklu0r_wNgA", - "description": "Initial administrator user.", - "auditor": false, - "active": true, - "roles": [ - "ADMINISTRATOR", - "USER_ADMINISTRATOR", - "CRYPTO_ADMINISTRATOR", - "EXPRESSION_ADMINISTRATOR", - "DATA_COLLECTION_ADMINISTRATOR" - ] - } - ] - }, - { - "resourceType": "/certificates/revocation/ocspCertificates", - "operationType": "SAVE", - "items": [ - { - "id": "opcey20sf9djwvk8snv1actzq", - "fileData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9XZ0F3SUJBZ0lVUzJUQkNkUnpwSzRaemUrSERLakI5RVFTSHFZd0RRWUpLb1pJaHZjTkFRRUxCUUF3WGpFTE1Ba0cKQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOUE1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeElqQWdCZ05WQkFvTUdWQnBibWNnU1dSbApiblJwZEhrZ1EyOXljRzl5WVhScGIyNHhEVEFMQmdOVkJBTU1CSFJsYzNRd0hoY05NalF4TWpFeU1qTXlPREkwV2hjTk1qY3dPVEE0Ck1qTXlPREkwV2pCZU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eER6QU5CZ05WQkFjTUJrUmxiblpsY2pFaU1DQUcKQTFVRUNnd1pVR2x1WnlCSlpHVnVkR2wwZVNCRGIzSndiM0poZEdsdmJqRU5NQXNHQTFVRUF3d0VkR1Z6ZERDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUpkb0d1cmdEdlNSQkwyY0llVWFDWTNwbzVZRFpuVjFleXVPUVR4UWM2T1QySlMwCis0MGdKYkptZk5yYmNPU3QrMURieHpQK0l4YmxrY3o1NjlWT0M1bGJST24zOHllYU1VMzJYYy80REdTcDFIQ1kvSmZTeWd6LytxcjgKOFlUcU1hSTIxQWJabkFpWTV4MFJ3NTZJRG1KZ2xYYVhlVmJDVUp5N29QVHlBb1lZVDkzREpEazQxWmU1MVVjVG1Vc1RLTjRLM2d2dgpTYVJ1eXE1K2c2RVhCcTdBa2VPbmJQMGJTSHliTjFLRVY1QlhOTnBnazloMEp3M1BFK3FrbS81bllSenhCZjRSQS9BZ2Z2OWVzRzlOCnozWGdEb3dBR0JteHIrclUvbmE3cHdFRXVkTWg2NjhERURlUlZ3aDFaYXBZcEJ0VmN4TUhtZEpQZ0ZKckJsbzZtTUVDQXdFQUFhTlQKTUZFd0hRWURWUjBPQkJZRUZHSmMzWjBqOWtYUHNUbW1iZ0FzWS9QSzJjdXBNQjhHQTFVZEl3UVlNQmFBRkdKYzNaMGo5a1hQc1RtbQpiZ0FzWS9QSzJjdXBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSlZCdmNIaGgrMDBnelEwCnBuWkt0Ukp4dkVnK3BHaCtCOUUrNWkyUHNOR3lJQXZBWHc0bWRCY1FaS3hmaVhNMzFaRTJnZTFtUCs0ZGkxMStQS1lOSDJFOTczUEwKSit3R0hlUVoxRVRERzVmbzc5dDBNRzFSekh0R29pclpXN3Y0Qk5VSTZaTTJGakVhQ090WmcxclVoa2RJZnFEeDRDZU5qemIwcmhYSQp6WE5UUzRZNlZseFdBclFud0FncVB0YjVwb0pHM01tLzNmNnVRZy9sMExJS1RZL0dSNnlRc05Da3pUWlFocklwWGo0UnBxblgzUWdECjFJV1RvTW9uN250cDRnQVAvbEFTTTUveG01SnpiNmRtRitob04wNzNnMDJVZVYyVERMemU4MCtLK1hyMUdaZWVVTHVYTnJoT0VYRFIKeXR2dWJlOE9YUFBZNi96Q3BoVmIyMWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - } - ] - }, - { - "resourceType": "/certificates/revocation/settings", - "operationType": "SAVE", - "items": [ - { - "ocspSettings": { - "requesterAddNonce": false, - "actionOnResponderUnavailable": "CONTINUE", - "actionOnStatusUnknown": "FAIL", - "actionOnUnsuccessfulResponse": "FAIL", - "currentUpdateGracePeriod": 5, - "nextUpdateGracePeriod": 5, - "responseCachePeriod": 48, - "responderTimeout": 5, - "responderCertReference": { - "id": "opcey20sf9djwvk8snv1actzq", - "location": "https://localhost:9999/pf-admin-api/v1/certificates/revocation/ocspCertificates/opcey20sf9djwvk8snv1actzq" - } - } - } - ] - }, - { - "resourceType": "/virtualHostNames", - "operationType": "SAVE", - "items": [ - { - "virtualHostNames": [] - } - ] - }, - { - "resourceType": "/redirectValidation", - "operationType": "SAVE", - "items": [ - { - "redirectValidationLocalSettings": { - "enableTargetResourceValidationForSSO": false, - "enableTargetResourceValidationForSLO": false, - "enableTargetResourceValidationForIdpDiscovery": false, - "enableInErrorResourceValidation": false, - "whiteList": [], - "uriAllowList": [] - }, - "redirectValidationPartnerSettings": { - "enableWreplyValidationSLO": false - } - } - ] - }, - { - "resourceType": "/incomingProxySettings", - "operationType": "SAVE", - "items": [ - { - "enableClientCertHeaderAuth": false, - "clientCertHeaderEncodingFormat": "APACHE_MOD_SSL", - "proxyTerminatesHttpsConns": false - } - ] - }, - { - "resourceType": "/protocolMetadata/lifetimeSettings", - "operationType": "SAVE", - "items": [ - { - "cacheDuration": 1440, - "reloadDelay": 1440 - } - ] - }, - { - "resourceType": "/protocolMetadata/signingSettings", - "operationType": "SAVE", - "items": [ - {} - ] - }, - { - "resourceType": "/serviceAuthentication", - "operationType": "SAVE", - "items": [ - {} - ] - }, - { - "resourceType": "/extendedProperties", - "operationType": "SAVE", - "items": [ - { - "name": "authNexp", - "description": "Authentication Experience [Single_Factor | Internal | ID-First | Multi_Factor]", - "multiValued": false - }, - { - "name": "useAuthnApi", - "description": "Use the AuthN API", - "multiValued": false - } - ] - }, - { - "resourceType": "/authenticationPolicyContracts", - "operationType": "SAVE", - "items": [ - { - "id": "DkhZxRcZchsed90U", - "name": "Fragment - Subject", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [], - "lastModified": "2025-01-31T22:32:15.606Z" - }, - { - "id": "QGxlec5CX693lBQL", - "name": "apc", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [], - "lastModified": "2025-01-31T22:32:15.617Z" - }, - { - "id": "default", - "name": "Default", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [ - { - "name": "firstName" - }, - { - "name": "lastName" - }, - { - "name": "ImmutableID" - }, - { - "name": "mail" - }, - { - "name": "SAML_AUTHN_CTX" - } - ], - "lastModified": "2025-01-31T22:32:15.619Z" - }, - { - "id": "samplePolicyContract", - "name": "Sample Policy Contract", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [ - { - "name": "firstName" - }, - { - "name": "lastName" - }, - { - "name": "ImmutableID" - }, - { - "name": "mail" - }, - { - "name": "SAML_AUTHN_CTX" - } - ], - "lastModified": "2025-01-31T22:32:15.627Z" - }, - { - "id": "wIdHhK789PmadmMS", - "name": "Fragment - Form", - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [ - { - "name": "entryUUID" - }, - { - "name": "uid" - }, - { - "name": "mail" - } - ], - "lastModified": "2025-01-31T22:32:15.632Z" - } - ] - }, - { - "resourceType": "/passwordCredentialValidators", - "operationType": "SAVE", - "items": [ - { - "id": "PDPCV", - "name": "PD PCV", - "pluginDescriptorRef": { - "id": "org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator", - "location": "https://localhost:9999/pf-admin-api/v1/passwordCredentialValidators/descriptors/org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator" - }, - "configuration": { - "tables": [ - { - "name": "Authentication Error Overrides", - "rows": [] - } - ], - "fields": [ - { - "name": "LDAP Datastore", - "value": "LDAP-PingDirectory" - }, - { - "name": "Search Base", - "value": "dc=example,dc=com" - }, - { - "name": "Search Filter", - "value": "(|(uid=${username})(mail=${username}))" - }, - { - "name": "Scope of Search", - "value": "Subtree" - }, - { - "name": "Case-Sensitive Matching", - "value": "true" - }, - { - "name": "Display Name Attribute", - "value": "displayName" - }, - { - "name": "Mail Attribute", - "value": "mail" - }, - { - "name": "SMS Attribute", - "value": "" - }, - { - "name": "PingID Username Attribute", - "value": "uid" - }, - { - "name": "Mail Search Filter", - "value": "mail=${mail}" - }, - { - "name": "Username Attribute", - "value": "uid" - }, - { - "name": "Trim Username Spaces For Search", - "value": "true" - }, - { - "name": "Mail Verified Attribute", - "value": "" - }, - { - "name": "Account Disabled Attribute", - "value": "" - }, - { - "name": "Enable PingDirectory Detailed Password Policy Requirement Messaging", - "value": "false" - }, - { - "name": "Expect Password Expired Control", - "value": "false" - } - ] - }, - "lastModified": "2025-01-31T22:32:15.886Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "mail" - }, - { - "name": "givenName" - }, - { - "name": "DN" - }, - { - "name": "username" - } - ], - "extendedAttributes": [ - { - "name": "entryUUID" - }, - { - "name": "uid" - }, - { - "name": "sn" - } - ] - } - }, - { - "id": "pingdirectory", - "name": "pingdirectory", - "pluginDescriptorRef": { - "id": "org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator", - "location": "https://localhost:9999/pf-admin-api/v1/passwordCredentialValidators/descriptors/org.sourceid.saml20.domain.LDAPUsernamePasswordCredentialValidator" - }, - "configuration": { - "tables": [ - { - "name": "Authentication Error Overrides", - "rows": [] - } - ], - "fields": [ - { - "name": "LDAP Datastore", - "value": "pingdirectory" - }, - { - "name": "Search Base", - "value": "dc=example,dc=com" - }, - { - "name": "Search Filter", - "value": "(&(objectClass=person)(|(mail=${username})(cn=${username})(uid=${username})))" - }, - { - "name": "Scope of Search", - "value": "Subtree" - }, - { - "name": "Case-Sensitive Matching", - "value": "false" - }, - { - "name": "Display Name Attribute", - "value": "displayName" - }, - { - "name": "Mail Attribute", - "value": "mail" - }, - { - "name": "SMS Attribute", - "value": "" - }, - { - "name": "PingID Username Attribute", - "value": "" - }, - { - "name": "Mail Search Filter", - "value": "" - }, - { - "name": "Username Attribute", - "value": "" - }, - { - "name": "Mail Verified Attribute", - "value": "" - }, - { - "name": "Trim Username Spaces For Search", - "value": "false" - }, - { - "name": "Account Disabled Attribute", - "value": "" - }, - { - "name": "Enable PingDirectory Detailed Password Policy Requirement Messaging", - "value": "false" - }, - { - "name": "Expect Password Expired Control", - "value": "false" - } - ] - }, - "lastModified": "2025-01-31T22:32:15.900Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "mail" - }, - { - "name": "givenName" - }, - { - "name": "DN" - }, - { - "name": "username" - } - ], - "extendedAttributes": [ - { - "name": "entryUUID" - } - ] - } - }, - { - "id": "simple", - "name": "simple", - "pluginDescriptorRef": { - "id": "org.sourceid.saml20.domain.SimpleUsernamePasswordCredentialValidator", - "location": "https://localhost:9999/pf-admin-api/v1/passwordCredentialValidators/descriptors/org.sourceid.saml20.domain.SimpleUsernamePasswordCredentialValidator" - }, - "configuration": { - "tables": [ - { - "name": "Users", - "rows": [ - { - "fields": [ - { - "name": "Username", - "value": "joe" - }, - { - "name": "Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..C5TQiZmuxKBmrRBjQEvEiA.KkyfPDp6zBRdvl0hs3jXna4vGYw_86Zyn4fxnqKCpOtkEuSZX0kUu7JFGX6dBW94UsArefoiHQ6SQwLxdo5GYg.kJA3CHPnu16GGqovGVkFHw" - }, - { - "name": "Confirm Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9.._zgTvi1nWLsYZU-NQkcAxQ.kAXpw1Zso7vvZkVkOzT_twZnNELDBVCEEyxpbgXOdgZ1MgepmZwl3c7zmTJzxmcD5B2YlOVAaWzw-fIXEAwLhA.eEWHDXFzUhiSVYnnazTswg" - }, - { - "name": "Relax Password Requirements", - "value": "true" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [] - }, - "lastModified": "2025-01-31T22:32:15.917Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "username" - } - ] - } - } - ] - }, - { - "resourceType": "/localIdentity/identityProfiles", - "operationType": "SAVE", - "items": [ - { - "id": "adminIdentityProfile", - "name": "Admin Identity Profile", - "apcId": { - "id": "default", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/default" - }, - "authSources": [ - { - "source": "SecurityKey", - "id": "SecurityKey" - }, - { - "source": "FIDO", - "id": "FIDO" - } - ], - "authSourceUpdatePolicy": { - "storeAttributes": false, - "retainAttributes": false, - "updateAttributes": false, - "updateInterval": 0 - }, - "fieldConfig": { - "fields": [ - { - "type": "TEXT", - "id": "fullName", - "label": "Full Name", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "firstName", - "label": "First Name", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "lastName", - "label": "Last Name", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "EMAIL", - "id": "email", - "label": "Email Address", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "PHONE", - "id": "phoneNumber", - "label": "Phone Number", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "TEXT", - "id": "username", - "label": "Username", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": true, - "Mask Log Values": false - }, - "defaultValue": "" - } - ], - "stripSpaceFromUniqueField": true - }, - "emailVerificationConfig": { - "emailVerificationEnabled": false - }, - "dataStoreConfig": { - "type": "LDAP", - "dataStoreRef": { - "id": "LDAP-PingDirectory", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/LDAP-PingDirectory" - }, - "baseDn": "ou=Administrators,dc=example,dc=com", - "createPattern": "", - "objectClass": "", - "dataStoreMapping": { - "firstName": { - "type": "LDAP", - "name": "givenName", - "metadata": {} - }, - "lastName": { - "type": "LDAP", - "name": "sn", - "metadata": {} - }, - "phoneNumber": { - "type": "LDAP", - "name": "mobile", - "metadata": {} - }, - "fullName": { - "type": "LDAP", - "name": "cn", - "metadata": {} - }, - "email": { - "type": "LDAP", - "name": "mail", - "metadata": {} - }, - "username": { - "type": "LDAP", - "name": "uid", - "metadata": {} - } - } - }, - "profileConfig": { - "deleteIdentityEnabled": false, - "templateName": "local.identity.profile.html" - }, - "registrationEnabled": false, - "profileEnabled": true - }, - { - "id": "regIdentityProfile", - "name": "Registration Identity Profile", - "apcId": { - "id": "samplePolicyContract", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/samplePolicyContract" - }, - "authSources": [], - "authSourceUpdatePolicy": { - "storeAttributes": false, - "retainAttributes": false, - "updateAttributes": false, - "updateInterval": 0 - }, - "registrationConfig": { - "captchaEnabled": false, - "templateName": "local.identity.registration.html", - "createAuthnSessionAfterRegistration": true, - "usernameField": "username", - "thisIsMyDeviceEnabled": false - }, - "fieldConfig": { - "fields": [ - { - "type": "TEXT", - "id": "firstName", - "label": "First Name", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "lastName", - "label": "Last Name", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "TEXT", - "id": "fullName", - "label": "Full Name", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "EMAIL", - "id": "email", - "label": "Email Address", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "PHONE", - "id": "phoneNumber", - "label": "Phone Number", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": false, - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "TEXT", - "id": "username", - "label": "Username", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Read-Only": false, - "Required": true, - "Unique ID Field": true, - "Mask Log Values": false - }, - "defaultValue": "" - }, - { - "type": "HIDDEN", - "id": "ImmutableID", - "label": "ImmutableID", - "registrationPageField": true, - "profilePageField": true, - "attributes": { - "Unique ID Field": false, - "Mask Log Values": false - } - }, - { - "type": "HIDDEN", - "id": "accountVerified", - "label": "Account Verified", - "registrationPageField": false, - "profilePageField": true, - "attributes": { - "Unique ID Field": false, - "Mask Log Values": false - } - } - ], - "stripSpaceFromUniqueField": false - }, - "emailVerificationConfig": { - "emailVerificationEnabled": false - }, - "dataStoreConfig": { - "type": "LDAP", - "dataStoreRef": { - "id": "LDAP-PingDirectory", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/LDAP-PingDirectory" - }, - "baseDn": "ou=People,dc=example,dc=com", - "createPattern": "uid=${username}", - "objectClass": "inetOrgPerson", - "auxiliaryObjectClasses": [ - "pf-connected-identities", - "ubidPersonAux" - ], - "dataStoreMapping": { - "firstName": { - "type": "LDAP", - "name": "givenName", - "metadata": {} - }, - "lastName": { - "type": "LDAP", - "name": "sn", - "metadata": {} - }, - "phoneNumber": { - "type": "LDAP", - "name": "mobile", - "metadata": {} - }, - "ImmutableID": { - "type": "LDAP", - "name": "entryUUID", - "metadata": {} - }, - "fullName": { - "type": "LDAP", - "name": "cn", - "metadata": {} - }, - "accountVerified": { - "type": "LDAP", - "name": "ubidAccountVerified", - "metadata": {} - }, - "email": { - "type": "LDAP", - "name": "mail", - "metadata": {} - }, - "username": { - "type": "LDAP", - "name": "uid", - "metadata": {} - } - } - }, - "profileConfig": { - "deleteIdentityEnabled": false, - "templateName": "local.identity.profile.html" - }, - "registrationEnabled": true, - "profileEnabled": true - } - ] - }, - { - "resourceType": "/oauth/accessTokenManagers", - "operationType": "SAVE", - "items": [ - { - "id": "jwt", - "name": "JSON Web Tokens", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.access.token.management.plugins.JwtBearerAccessTokenManagementPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/descriptors/com.pingidentity.pf.access.token.management.plugins.JwtBearerAccessTokenManagementPlugin" - }, - "configuration": { - "tables": [ - { - "name": "Symmetric Keys", - "rows": [] - }, - { - "name": "Certificates", - "rows": [ - { - "fields": [ - { - "name": "Key ID", - "value": "k1" - }, - { - "name": "Certificate", - "value": "tiq4n26axjircjk30oz5zf6k3" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Token Lifetime", - "value": "120" - }, - { - "name": "Use Centralized Signing Key", - "value": "false" - }, - { - "name": "JWS Algorithm", - "value": "RS256" - }, - { - "name": "Active Symmetric Key ID", - "value": "" - }, - { - "name": "Active Signing Certificate Key ID", - "value": "k1" - }, - { - "name": "JWE Algorithm", - "value": "" - }, - { - "name": "JWE Content Encryption Algorithm", - "value": "" - }, - { - "name": "Active Symmetric Encryption Key ID", - "value": "" - }, - { - "name": "Asymmetric Encryption Key", - "value": "" - }, - { - "name": "Asymmetric Encryption JWKS URL", - "value": "" - }, - { - "name": "Enable Token Revocation", - "value": "false" - }, - { - "name": "Include Key ID Header Parameter", - "value": "true" - }, - { - "name": "Include X.509 Thumbprint Header Parameter", - "value": "false" - }, - { - "name": "Default JWKS URL Cache Duration", - "value": "720" - }, - { - "name": "Include JWE Key ID Header Parameter", - "value": "true" - }, - { - "name": "Include JWE X.509 Thumbprint Header Parameter", - "value": "false" - }, - { - "name": "Client ID Claim Name", - "value": "client_id_name" - }, - { - "name": "Scope Claim Name", - "value": "scope" - }, - { - "name": "Space Delimit Scope Values", - "value": "false" - }, - { - "name": "Authorization Details Claim Name", - "value": "authorization_details" - }, - { - "name": "Issuer Claim Value", - "value": "" - }, - { - "name": "Audience Claim Value", - "value": "" - }, - { - "name": "Not Before Claim Offset", - "value": "" - }, - { - "name": "Include Issued At Claim", - "value": "false" - }, - { - "name": "JWT ID Claim Length", - "value": "22" - }, - { - "name": "Access Grant GUID Claim Name", - "value": "agid" - }, - { - "name": "Publish Keys to the PingFederate JWKS Endpoint", - "value": "false" - }, - { - "name": "JWKS Endpoint Path", - "value": "" - }, - { - "name": "JWKS Endpoint Cache Duration", - "value": "720" - }, - { - "name": "Publish Key ID X.509 URL", - "value": "false" - }, - { - "name": "Publish Thumbprint X.509 URL", - "value": "false" - }, - { - "name": "Expand Scope Groups", - "value": "false" - }, - { - "name": "Type Header Value", - "value": "" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.143Z", - "attributeContract": { - "coreAttributes": [], - "extendedAttributes": [ - { - "name": "Username", - "multiValued": false - }, - { - "name": "OrgName", - "multiValued": false - } - ], - "defaultSubjectAttribute": "OrgName" - }, - "tokenEndpointAttributeContract": { - "attributes": [], - "inherited": false - }, - "selectionSettings": { - "resourceUris": [] - }, - "accessControlSettings": { - "restrictClients": false, - "allowedClients": [] - }, - "sessionValidationSettings": { - "checkValidAuthnSession": false, - "checkSessionRevocationStatus": false, - "updateAuthnSessionActivity": false, - "includeSessionId": false - }, - "sequenceNumber": 2 - } - ] - }, - { - "resourceType": "/oauth/accessTokenManagers/settings", - "operationType": "SAVE", - "items": [ - { - "defaultAccessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - } - } - ] - }, - { - "resourceType": "/kerberos/realms", - "operationType": "SAVE", - "items": [ - { - "id": "testKerberosRealm", - "kerberosRealmName": "Test Kerberos Realm", - "keyDistributionCenters": [ - "distCenterTest" - ], - "kerberosUsername": "user", - "kerberosEncryptedPassword": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..BXkYp-spJltD07g9ftFx7g.K9Z8nFyksI2dQWaTU1Wabg.2lCuOsObXEYPHTJVafj62A", - "retainPreviousKeysOnPasswordChange": true, - "suppressDomainNameConcatenation": true, - "connectionType": "DIRECT" - } - ] - }, - { - "resourceType": "/kerberos/realms/settings", - "operationType": "SAVE", - "items": [ - { - "forceTcp": false, - "kdcTimeout": "3", - "debugLogOutput": false, - "kdcRetries": "3", - "keySetRetentionPeriodMins": 610 - } - ] - }, - { - "resourceType": "/idp/adapters", - "operationType": "SAVE", - "items": [ - { - "id": "IDFirst", - "name": "Identifier-First", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.identifierfirst.idp.IdentifierFirstAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.identifierfirst.idp.IdentifierFirstAdapter" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Identifier Cookie Lifetime", - "value": "30" - }, - { - "name": "Allow Cancelling Identifier Selection", - "value": "false" - }, - { - "name": "Maximum Identifiers Count", - "value": "5" - }, - { - "name": "Identifier Selection Template", - "value": "identifier.first.template.html" - }, - { - "name": "Enable Risk Provider", - "value": "false" - }, - { - "name": "Risk Provider", - "value": "" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.317Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject", - "masked": false, - "pseudonym": true - }, - { - "name": "domain", - "masked": false, - "pseudonym": false - } - ], - "extendedAttributes": [ - { - "name": "entryUUID", - "masked": false, - "pseudonym": false - }, - { - "name": "uid", - "masked": false, - "pseudonym": false - }, - { - "name": "mail", - "masked": false, - "pseudonym": false - } - ], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [ - { - "type": "LDAP", - "dataStoreRef": { - "id": "LDAP-PingDirectory", - "location": "https://localhost:9999/pf-admin-api/v1/dataStores/LDAP-PingDirectory" - }, - "id": "PD", - "description": "PD", - "baseDn": "dc=example,dc=com", - "searchScope": "SUBTREE", - "searchFilter": "(|(uid=${subject} )(mail=${subject}))", - "binaryAttributeSettings": {}, - "memberOfNestedGroup": false - } - ], - "attributeContractFulfillment": { - "entryUUID": { - "source": { - "type": "LDAP_DATA_STORE", - "id": "PD" - }, - "value": "entryUUID" - }, - "uid": { - "source": { - "type": "LDAP_DATA_STORE", - "id": "PD" - }, - "value": "uid" - }, - "mail": { - "source": { - "type": "LDAP_DATA_STORE", - "id": "PD" - }, - "value": "mail" - }, - "subject": { - "source": { - "type": "ADAPTER" - }, - "value": "subject" - }, - "domain": { - "source": { - "type": "ADAPTER" - }, - "value": "domain" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - }, - { - "id": "OTIdPJava", - "name": "OTIdPJava", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.opentoken.IdpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.opentoken.IdpAuthnAdapter" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..VLkmV_SoOHMwCh-llliQUQ.g5LMasmJxSpgbIdpI7peiQ.rW1xpTvC9ydsiPQySRRRTw" - }, - { - "name": "Confirm Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..Z12sPCihIExIXMzOuyFEnQ.pXEcsDlQK49qw01n62qF2w.9SAqaq3hnQWriZ-id2Xd0Q" - }, - { - "name": "Authentication Service", - "value": "https://localhost:9031/IdpSample/?cmd=sso" - }, - { - "name": "Transport Mode", - "value": "1" - }, - { - "name": "Token Name", - "value": "idpopentoken" - }, - { - "name": "Cipher Suite", - "value": "2" - }, - { - "name": "Logout Service", - "value": "https://localhost:9031/IdpSample/?cmd=slo" - }, - { - "name": "Cookie Domain", - "value": "" - }, - { - "name": "Cookie Path", - "value": "/" - }, - { - "name": "Token Lifetime", - "value": "300" - }, - { - "name": "Session Lifetime", - "value": "43200" - }, - { - "name": "Not Before Tolerance", - "value": "0" - }, - { - "name": "Force SunJCE Provider", - "value": "false" - }, - { - "name": "Use Verbose Error Messages", - "value": "false" - }, - { - "name": "Obfuscate Password", - "value": "true" - }, - { - "name": "Session Cookie", - "value": "false" - }, - { - "name": "Secure Cookie", - "value": "false" - }, - { - "name": "Delete Cookie", - "value": "false" - }, - { - "name": "Replay Prevention", - "value": "false" - }, - { - "name": "Skip Malformed Attribute Detection", - "value": "false" - }, - { - "name": "SameSite Cookie", - "value": "3" - }, - { - "name": "HTTP Only Flag", - "value": "true" - }, - { - "name": "Track Authentication Time", - "value": "true" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.377Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject", - "masked": false, - "pseudonym": true - } - ], - "extendedAttributes": [], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "ADAPTER" - }, - "value": "subject" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - }, - { - "id": "ciamHtmlForm", - "name": "Customer HTML Form (PF)", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter" - }, - "configuration": { - "tables": [ - { - "name": "Credential Validators", - "rows": [ - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "PDPCV" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Challenge Retries", - "value": "3" - }, - { - "name": "Session State", - "value": "None" - }, - { - "name": "Session Timeout", - "value": "60" - }, - { - "name": "Session Max Timeout", - "value": "480" - }, - { - "name": "Allow Password Changes", - "value": "true" - }, - { - "name": "Password Management System", - "value": "" - }, - { - "name": "Enable 'Remember My Username'", - "value": "true" - }, - { - "name": "Enable 'This is My Device'", - "value": "false" - }, - { - "name": "Change Password Policy Contract", - "value": "" - }, - { - "name": "Change Password Email Notification", - "value": "false" - }, - { - "name": "Show Password Expiring Warning", - "value": "false" - }, - { - "name": "Password Reset Type", - "value": "NONE" - }, - { - "name": "Password Reset Policy Contract", - "value": "" - }, - { - "name": "Revoke Sessions After Password Change Or Reset", - "value": "false" - }, - { - "name": "Account Unlock", - "value": "false" - }, - { - "name": "Local Identity Profile", - "value": "regIdentityProfile" - }, - { - "name": "Notification Publisher", - "value": "" - }, - { - "name": "Enable Username Recovery", - "value": "false" - }, - { - "name": "Login Template", - "value": "html.form.login.template.html" - }, - { - "name": "Logout Path", - "value": "" - }, - { - "name": "Logout Redirect", - "value": "" - }, - { - "name": "Logout Template", - "value": "idp.logout.success.page.template.html" - }, - { - "name": "Change Password Template", - "value": "html.form.change.password.template.html" - }, - { - "name": "Change Password Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Password Management System Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Change Password Email Template", - "value": "message-template-end-user-password-change.html" - }, - { - "name": "Expiring Password Warning Template", - "value": "html.form.password.expiring.notification.template.html" - }, - { - "name": "Threshold for Expiring Password Warning", - "value": "7" - }, - { - "name": "Snooze Interval for Expiring Password Warning", - "value": "24" - }, - { - "name": "Login Challenge Template", - "value": "html.form.login.challenge.template.html" - }, - { - "name": "'Remember My Username' Lifetime", - "value": "30" - }, - { - "name": "'This is My Device' Lifetime", - "value": "30" - }, - { - "name": "Allow Username Edits During Chaining", - "value": "false" - }, - { - "name": "Track Authentication Time", - "value": "true" - }, - { - "name": "Post-Password Change Re-Authentication Delay", - "value": "0" - }, - { - "name": "Password Reset Username Template", - "value": "forgot-password.html" - }, - { - "name": "Password Reset Code Template", - "value": "forgot-password-resume.html" - }, - { - "name": "Password Reset Template", - "value": "forgot-password-change.html" - }, - { - "name": "Password Reset Error Template", - "value": "forgot-password-error.html" - }, - { - "name": "Password Reset Success Template", - "value": "forgot-password-success.html" - }, - { - "name": "Account Unlock Template", - "value": "account-unlock.html" - }, - { - "name": "OTP Length", - "value": "8" - }, - { - "name": "OTP Time to Live", - "value": "10" - }, - { - "name": "PingID Properties", - "value": "" - }, - { - "name": "Require Verified Email", - "value": "false" - }, - { - "name": "Username Recovery Template", - "value": "username.recovery.template.html" - }, - { - "name": "Username Recovery Info Template", - "value": "username.recovery.info.template.html" - }, - { - "name": "Username Recovery Email Template", - "value": "message-template-username-recovery.html" - }, - { - "name": "CAPTCHA for Authentication", - "value": "false" - }, - { - "name": "CAPTCHA for Password change", - "value": "false" - }, - { - "name": "CAPTCHA for Password Reset", - "value": "false" - }, - { - "name": "CAPTCHA for Username recovery", - "value": "false" - }, - { - "name": "Password Update Timeout", - "value": "30" - }, - { - "name": "Require Re-Authentication For Expiring Password Flow", - "value": "false" - }, - { - "name": "Require Re-Authentication for Change Password Flow", - "value": "true" - }, - { - "name": "Require Re-Authentication for Password Reset Flow", - "value": "true" - }, - { - "name": "Password Reset One-Time Link Email Template", - "value": "message-template-forgot-password-link.html" - }, - { - "name": "Password Reset One-Time Password Email Template", - "value": "message-template-forgot-password-code.html" - }, - { - "name": "Account Disabled Email Template", - "value": "message-template-account-disabled.html" - }, - { - "name": "Password Reset Complete Email Template", - "value": "message-template-forgot-password-complete.html" - }, - { - "name": "Password Reset Failed Email Template", - "value": "message-template-forgot-password-failed.html" - }, - { - "name": "Account Unlock Email Template", - "value": "message-template-account-unlock-complete.html" - }, - { - "name": "Allowed OTP Character Set", - "value": "23456789BCDFGHJKMNPQRSTVWXZbcdfghjkmnpqrstvwxz" - }, - { - "name": "CAPTCHA Provider", - "value": "" - }, - { - "name": "Fail Authentication on Account Lockout", - "value": "true" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.454Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "policy.action", - "masked": false, - "pseudonym": false - }, - { - "name": "username", - "masked": false, - "pseudonym": true - } - ], - "extendedAttributes": [ - { - "name": "entryUUID", - "masked": false, - "pseudonym": false - }, - { - "name": "uid", - "masked": false, - "pseudonym": false - }, - { - "name": "mail", - "masked": false, - "pseudonym": false - }, - { - "name": "givenName", - "masked": false, - "pseudonym": false - }, - { - "name": "sn", - "masked": false, - "pseudonym": false - } - ], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "entryUUID": { - "source": { - "type": "ADAPTER" - }, - "value": "entryUUID" - }, - "uid": { - "source": { - "type": "ADAPTER" - }, - "value": "uid" - }, - "mail": { - "source": { - "type": "ADAPTER" - }, - "value": "mail" - }, - "policy.action": { - "source": { - "type": "ADAPTER" - }, - "value": "policy.action" - }, - "givenName": { - "source": { - "type": "ADAPTER" - }, - "value": "givenName" - }, - "sn": { - "source": { - "type": "ADAPTER" - }, - "value": "sn" - }, - "username": { - "source": { - "type": "ADAPTER" - }, - "value": "username" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - }, - { - "id": "htmlForm", - "name": "Employee HTML Form", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/descriptors/com.pingidentity.adapters.htmlform.idp.HtmlFormIdpAuthnAdapter" - }, - "configuration": { - "tables": [ - { - "name": "Credential Validators", - "rows": [ - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "PDPCV" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Challenge Retries", - "value": "3" - }, - { - "name": "Session State", - "value": "None" - }, - { - "name": "Session Timeout", - "value": "60" - }, - { - "name": "Session Max Timeout", - "value": "480" - }, - { - "name": "Allow Password Changes", - "value": "false" - }, - { - "name": "Password Management System", - "value": "" - }, - { - "name": "Enable 'Remember My Username'", - "value": "false" - }, - { - "name": "Enable 'This is My Device'", - "value": "false" - }, - { - "name": "Change Password Email Notification", - "value": "false" - }, - { - "name": "Show Password Expiring Warning", - "value": "false" - }, - { - "name": "Password Reset Type", - "value": "NONE" - }, - { - "name": "Password Reset Policy Contract", - "value": "" - }, - { - "name": "Account Unlock", - "value": "false" - }, - { - "name": "Local Identity Profile", - "value": "adminIdentityProfile" - }, - { - "name": "Notification Publisher", - "value": "" - }, - { - "name": "Enable Username Recovery", - "value": "false" - }, - { - "name": "Change Password Policy Contract", - "value": "" - }, - { - "name": "Revoke Sessions After Password Change Or Reset", - "value": "false" - }, - { - "name": "Login Template", - "value": "html.form.login.template.html" - }, - { - "name": "Logout Path", - "value": "" - }, - { - "name": "Logout Redirect", - "value": "" - }, - { - "name": "Logout Template", - "value": "idp.logout.success.page.template.html" - }, - { - "name": "Change Password Template", - "value": "html.form.change.password.template.html" - }, - { - "name": "Change Password Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Password Management System Message Template", - "value": "html.form.message.template.html" - }, - { - "name": "Change Password Email Template", - "value": "message-template-end-user-password-change.html" - }, - { - "name": "Expiring Password Warning Template", - "value": "html.form.password.expiring.notification.template.html" - }, - { - "name": "Threshold for Expiring Password Warning", - "value": "7" - }, - { - "name": "Snooze Interval for Expiring Password Warning", - "value": "24" - }, - { - "name": "Login Challenge Template", - "value": "html.form.login.challenge.template.html" - }, - { - "name": "'Remember My Username' Lifetime", - "value": "30" - }, - { - "name": "'This is My Device' Lifetime", - "value": "30" - }, - { - "name": "Allow Username Edits During Chaining", - "value": "false" - }, - { - "name": "Track Authentication Time", - "value": "true" - }, - { - "name": "Post-Password Change Re-Authentication Delay", - "value": "0" - }, - { - "name": "Password Reset Username Template", - "value": "forgot-password.html" - }, - { - "name": "Password Reset Code Template", - "value": "forgot-password-resume.html" - }, - { - "name": "Password Reset Template", - "value": "forgot-password-change.html" - }, - { - "name": "Password Reset Error Template", - "value": "forgot-password-error.html" - }, - { - "name": "Password Reset Success Template", - "value": "forgot-password-success.html" - }, - { - "name": "Account Unlock Template", - "value": "account-unlock.html" - }, - { - "name": "OTP Length", - "value": "8" - }, - { - "name": "OTP Time to Live", - "value": "10" - }, - { - "name": "PingID Properties", - "value": "" - }, - { - "name": "Require Verified Email", - "value": "false" - }, - { - "name": "Username Recovery Template", - "value": "username.recovery.template.html" - }, - { - "name": "Username Recovery Info Template", - "value": "username.recovery.info.template.html" - }, - { - "name": "Username Recovery Email Template", - "value": "message-template-username-recovery.html" - }, - { - "name": "CAPTCHA for Authentication", - "value": "false" - }, - { - "name": "CAPTCHA for Password change", - "value": "false" - }, - { - "name": "CAPTCHA for Password Reset", - "value": "false" - }, - { - "name": "CAPTCHA for Username recovery", - "value": "false" - }, - { - "name": "Password Update Timeout", - "value": "30" - }, - { - "name": "Require Re-Authentication For Expiring Password Flow", - "value": "false" - }, - { - "name": "Require Re-Authentication for Change Password Flow", - "value": "true" - }, - { - "name": "Require Re-Authentication for Password Reset Flow", - "value": "true" - }, - { - "name": "Password Reset One-Time Link Email Template", - "value": "message-template-forgot-password-link.html" - }, - { - "name": "Password Reset One-Time Password Email Template", - "value": "message-template-forgot-password-code.html" - }, - { - "name": "Account Disabled Email Template", - "value": "message-template-account-disabled.html" - }, - { - "name": "Password Reset Complete Email Template", - "value": "message-template-forgot-password-complete.html" - }, - { - "name": "Password Reset Failed Email Template", - "value": "message-template-forgot-password-failed.html" - }, - { - "name": "Account Unlock Email Template", - "value": "message-template-account-unlock-complete.html" - }, - { - "name": "Allowed OTP Character Set", - "value": "23456789BCDFGHJKMNPQRSTVWXZbcdfghjkmnpqrstvwxz" - }, - { - "name": "CAPTCHA Provider", - "value": "" - }, - { - "name": "Fail Authentication on Account Lockout", - "value": "true" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.563Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "policy.action", - "masked": false, - "pseudonym": false - }, - { - "name": "username", - "masked": false, - "pseudonym": true - } - ], - "extendedAttributes": [ - { - "name": "entryUUID", - "masked": false, - "pseudonym": false - }, - { - "name": "uid", - "masked": false, - "pseudonym": false - }, - { - "name": "mail", - "masked": false, - "pseudonym": false - }, - { - "name": "givenName", - "masked": false, - "pseudonym": false - }, - { - "name": "cn", - "masked": false, - "pseudonym": false - }, - { - "name": "sn", - "masked": false, - "pseudonym": false - } - ], - "maskOgnlValues": false - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "entryUUID": { - "source": { - "type": "ADAPTER" - }, - "value": "entryUUID" - }, - "uid": { - "source": { - "type": "ADAPTER" - }, - "value": "uid" - }, - "mail": { - "source": { - "type": "ADAPTER" - }, - "value": "mail" - }, - "policy.action": { - "source": { - "type": "ADAPTER" - }, - "value": "policy.action" - }, - "givenName": { - "source": { - "type": "ADAPTER" - }, - "value": "givenName" - }, - "cn": { - "source": { - "type": "ADAPTER" - }, - "value": "cn" - }, - "sn": { - "source": { - "type": "ADAPTER" - }, - "value": "sn" - }, - "username": { - "source": { - "type": "ADAPTER" - }, - "value": "username" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - ] - }, - { - "resourceType": "/sp/adapters", - "operationType": "SAVE", - "items": [ - { - "id": "spadapter", - "name": "SpAdapter", - "pluginDescriptorRef": { - "id": "com.pingidentity.adapters.opentoken.SpAuthnAdapter", - "location": "https://localhost:9999/pf-admin-api/v1/sp/adapters/descriptors/com.pingidentity.adapters.opentoken.SpAuthnAdapter" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..u0YFl7URp7YzeIiI7BpTtg.o-pxKG_Hwv1Vc-OW2w42mQ.RcQEIMOebPYPZnmnqfhUEg" - }, - { - "name": "Confirm Password", - "encryptedValue": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..2fgwEHpx9lUiApM7XUHSXg.QEOl-gVWyzEzQUYNc-z2Bw.c53SlFrALoPQ9Fb4875OyA" - }, - { - "name": "Transport Mode", - "value": "2" - }, - { - "name": "Token Name", - "value": "opentoken" - }, - { - "name": "Cipher Suite", - "value": "2" - }, - { - "name": "Authentication Service", - "value": "" - }, - { - "name": "Account Link Service", - "value": "" - }, - { - "name": "Logout Service", - "value": "" - }, - { - "name": "SameSite Cookie", - "value": "3" - }, - { - "name": "Cookie Domain", - "value": "" - }, - { - "name": "Cookie Path", - "value": "/" - }, - { - "name": "Token Lifetime", - "value": "300" - }, - { - "name": "Session Lifetime", - "value": "43200" - }, - { - "name": "Not Before Tolerance", - "value": "0" - }, - { - "name": "Force SunJCE Provider", - "value": "false" - }, - { - "name": "Use Verbose Error Messages", - "value": "false" - }, - { - "name": "Obfuscate Password", - "value": "true" - }, - { - "name": "Session Cookie", - "value": "false" - }, - { - "name": "Secure Cookie", - "value": "true" - }, - { - "name": "HTTP Only Flag", - "value": "true" - }, - { - "name": "Send Subject as Query Parameter", - "value": "false" - }, - { - "name": "Subject Query Parameter ", - "value": "" - }, - { - "name": "Send Extended Attributes", - "value": "" - }, - { - "name": "Skip Trimming of Trailing Backslashes", - "value": "false" - }, - { - "name": "URL Encode Cookie Values", - "value": "true" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.608Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [] - }, - "targetApplicationInfo": { - "applicationName": "test", - "applicationIconUrl": "https://test.com" - } - } - ] - }, - { - "resourceType": "/idpToSpAdapterMapping", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "ADAPTER" - }, - "value": "entryUUID" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "ciamHtmlForm|spadapter", - "sourceId": "ciamHtmlForm", - "targetId": "spadapter" - } - ] - }, - { - "resourceType": "/sp/authenticationPolicyContractMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "NO_MAPPING" - } - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "wIdHhK789PmadmMS|spadapter", - "sourceId": "wIdHhK789PmadmMS", - "targetId": "spadapter" - } - ] - }, - { - "resourceType": "/identityStoreProvisioners", - "operationType": "SAVE", - "items": [ - { - "id": "ISPTestID", - "name": "ISP TestName", - "pluginDescriptorRef": { - "id": "com.pingidentity.identitystoreprovisioners.sample.SampleIdentityStoreProvisioner", - "location": "https://localhost:9999/pf-admin-api/v1/identityStoreProvisioners/descriptors/com.pingidentity.identitystoreprovisioners.sample.SampleIdentityStoreProvisioner" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Delete user behavior", - "value": "Disable User" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.707Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "username" - } - ], - "inherited": false - }, - "groupAttributeContract": { - "coreAttributes": [ - { - "name": "groupname" - } - ], - "inherited": false - } - } - ] - }, - { - "resourceType": "/idp/tokenProcessors", - "operationType": "SAVE", - "items": [ - { - "id": "UsernameTokenProcessor", - "name": "UsernameTokenProcessor", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.tokenprocessors.username.UsernameTokenProcessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/descriptors/com.pingidentity.pf.tokenprocessors.username.UsernameTokenProcessor" - }, - "configuration": { - "tables": [ - { - "name": "Credential Validators", - "rows": [ - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "pingdirectory" - } - ], - "defaultRow": false - }, - { - "fields": [ - { - "name": "Password Credential Validator Instance", - "value": "simple" - } - ], - "defaultRow": false - } - ] - } - ], - "fields": [ - { - "name": "Authentication Attempts", - "value": "3" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.727Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "username", - "masked": false - } - ], - "extendedAttributes": [], - "maskOgnlValues": false - } - }, - { - "id": "tokenprocessor", - "name": "token processor", - "pluginDescriptorRef": { - "id": "org.sourceid.wstrust.processor.saml.Saml20TokenProcessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/descriptors/org.sourceid.wstrust.processor.saml.Saml20TokenProcessor" - }, - "configuration": { - "tables": [ - { - "name": "Valid Certificate Issuer DNs", - "rows": [] - }, - { - "name": "Valid Certificate Subject DNs", - "rows": [] - } - ], - "fields": [ - { - "name": "Audience", - "value": "audience" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.744Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "SAML_SUBJECT", - "masked": false - } - ], - "extendedAttributes": [], - "maskOgnlValues": false - } - } - ] - }, - { - "resourceType": "/sp/tokenGenerators", - "operationType": "SAVE", - "items": [ - { - "id": "tokengenerator", - "name": "token generator", - "pluginDescriptorRef": { - "id": "org.sourceid.wstrust.generator.saml.Saml20TokenGenerator", - "location": "https://localhost:9999/pf-admin-api/v1/sp/tokenGenerators/descriptors/org.sourceid.wstrust.generator.saml.Saml20TokenGenerator" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Minutes Before", - "value": "60" - }, - { - "name": "Minutes After", - "value": "60" - }, - { - "name": "Issuer", - "value": "issuer" - }, - { - "name": "Signing Certificate", - "value": "tiq4n26axjircjk30oz5zf6k3" - }, - { - "name": "Signing Algorithm", - "value": "SHA1" - }, - { - "name": "Include Certificate in KeyInfo", - "value": "false" - }, - { - "name": "Include Raw Key in KeyValue", - "value": "false" - }, - { - "name": "Audience", - "value": "audience" - }, - { - "name": "Confirmation Method", - "value": "urn:oasis:names:tc:SAML:2.0:cm:sender-vouches" - }, - { - "name": "Encryption Certificate", - "value": "" - }, - { - "name": "Message Customization Expression", - "value": "" - } - ] - }, - "lastModified": "2025-01-31T22:32:16.762Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "SAML_SUBJECT" - } - ], - "extendedAttributes": [] - } - } - ] - }, - { - "resourceType": "/tokenProcessorToTokenGeneratorMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "SAML_SUBJECT": { - "source": { - "type": "CONTEXT" - }, - "value": "ClientIp" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "tokenprocessor|tokengenerator", - "sourceId": "tokenprocessor", - "targetId": "tokengenerator" - } - ] - }, - { - "resourceType": "/idp/defaultUrls", - "operationType": "SAVE", - "items": [ - { - "confirmIdpSlo": false, - "idpErrorMsg": "errorDetail.idpSsoFailure" - } - ] - }, - { - "resourceType": "/sp/defaultUrls", - "operationType": "SAVE", - "items": [ - { - "confirmSlo": false - } - ] - }, - { - "resourceType": "/idp/stsRequestParametersContracts", - "operationType": "SAVE", - "items": [ - { - "id": "STSTestID", - "name": "STS TestName", - "parameters": [ - "test" - ], - "lastModified": "2025-01-31T22:32:16.838Z" - } - ] - }, - { - "resourceType": "/metadataUrls", - "operationType": "SAVE", - "items": [ - { - "id": "i8uUHFDebYX7Z7gSfyhZ9yKUA", - "name": "Test Metadata URL", - "url": "https://www.example.com", - "validateSignature": false - } - ] - }, - { - "resourceType": "/oauth/authServerSettings", - "operationType": "SAVE", - "items": [ - { - "defaultScopeDescription": "", - "scopes": [ - { - "name": "email", - "description": "email scope", - "dynamic": false - } - ], - "scopeGroups": [], - "exclusiveScopes": [], - "exclusiveScopeGroups": [], - "authorizationCodeTimeout": 60, - "authorizationCodeEntropy": 30, - "disallowPlainPKCE": false, - "includeIssuerInAuthorizationResponse": false, - "persistentGrantLifetime": -1, - "persistentGrantLifetimeUnit": "DAYS", - "persistentGrantIdleTimeout": 30, - "persistentGrantIdleTimeoutTimeUnit": "DAYS", - "refreshTokenLength": 42, - "rollRefreshTokenValues": false, - "refreshTokenRollingGracePeriod": 60, - "refreshRollingInterval": 0, - "refreshRollingIntervalTimeUnit": "HOURS", - "persistentGrantReuseGrantTypes": [ - "IMPLICIT" - ], - "persistentGrantContract": { - "extendedAttributes": [], - "coreAttributes": [ - { - "name": "USER_KEY" - }, - { - "name": "USER_NAME" - } - ] - }, - "bypassAuthorizationForApprovedGrants": false, - "allowUnidentifiedClientROCreds": false, - "allowUnidentifiedClientExtensionGrants": false, - "tokenEndpointBaseUrl": "", - "requireOfflineAccessScopeToIssueRefreshTokens": false, - "offlineAccessRequireConsentPrompt": false, - "userAuthorizationUrl": "", - "registeredAuthorizationPath": "", - "pendingAuthorizationTimeout": 600, - "bypassActivationCodeConfirmation": false, - "devicePollingInterval": 5, - "activationCodeCheckMode": "AFTER_AUTHENTICATION", - "enableCookielessUserAuthorizationAuthenticationApi": false, - "returnIdTokenOnOpenIdWithDeviceAuthzGrant": false, - "userAuthorizationConsentPageSetting": "INTERNAL", - "atmIdForOAuthGrantManagement": "jwt", - "scopeForOAuthGrantManagement": "email", - "allowedOrigins": [], - "trackUserSessionsForLogout": false, - "parReferenceTimeout": 60, - "parReferenceLength": 24, - "parStatus": "ENABLED", - "clientSecretRetentionPeriod": 0, - "jwtSecuredAuthorizationResponseModeLifetime": 600, - "dpopProofRequireNonce": false, - "dpopProofLifetimeSeconds": 120, - "dpopProofEnforceReplayPrevention": false, - "bypassAuthorizationForApprovedConsents": false, - "consentLifetimeDays": -1 - } - ] - }, - { - "resourceType": "/sp/idpConnections", - "operationType": "SAVE", - "items": [ - { - "type": "IDP", - "id": "n26SCl49a8lB_ifAaLF_MyUbquv", - "name": "testConnection", - "entityId": "testPartnerId", - "active": true, - "contactInfo": {}, - "loggingMode": "STANDARD", - "virtualEntityIds": [], - "credentials": { - "certs": [ - { - "primaryVerificationCert": true, - "secondaryVerificationCert": false, - "certView": { - "id": "gpmlavn03e4mknkyml4m2ak9q", - "serialNumber": "430421198347763948001683365009287878912609754790", - "subjectDN": "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US", - "subjectAlternativeNames": [], - "issuerDN": "CN=test, O=Ping Identity Corporation, L=Denver, ST=CO, C=US", - "validFrom": "2024-12-12T23:28:24.000Z", - "expires": "2027-09-08T23:28:24.000Z", - "keyAlgorithm": "RSA", - "keySize": 2048, - "signatureAlgorithm": "SHA256withRSA", - "version": 3, - "sha1Fingerprint": "B1B57BC2A8733287A1A9B65EB60BFFD01EFECEBA", - "sha256Fingerprint": "AA40F0AA0B7A438F15C49FA2A2EBE3B28AAB34A846781211BD170E8D7B06D291", - "status": "VALID" - }, - "x509File": { - "id": "gpmlavn03e4mknkyml4m2ak9q", - "fileData": "-----BEGIN CERTIFICATE-----\nMIIDnTCCAoWgAwIBAgIUS2TBCdRzpK4Zze+HDKjB9EQSHqYwDQYJKoZIhvcNAQELBQAwXjELMAkG\nA1UEBhMCVVMxCzAJBgNVBAgMAkNPMQ8wDQYDVQQHDAZEZW52ZXIxIjAgBgNVBAoMGVBpbmcgSWRl\nbnRpdHkgQ29ycG9yYXRpb24xDTALBgNVBAMMBHRlc3QwHhcNMjQxMjEyMjMyODI0WhcNMjcwOTA4\nMjMyODI0WjBeMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ08xDzANBgNVBAcMBkRlbnZlcjEiMCAG\nA1UECgwZUGluZyBJZGVudGl0eSBDb3Jwb3JhdGlvbjENMAsGA1UEAwwEdGVzdDCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBAJdoGurgDvSRBL2cIeUaCY3po5YDZnV1eyuOQTxQc6OT2JS0\n+40gJbJmfNrbcOSt+1DbxzP+Ixblkcz569VOC5lbROn38yeaMU32Xc/4DGSp1HCY/JfSygz/+qr8\n8YTqMaI21AbZnAiY5x0Rw56IDmJglXaXeVbCUJy7oPTyAoYYT93DJDk41Ze51UcTmUsTKN4K3gvv\nSaRuyq5+g6EXBq7AkeOnbP0bSHybN1KEV5BXNNpgk9h0Jw3PE+qkm/5nYRzxBf4RA/Agfv9esG9N\nz3XgDowAGBmxr+rU/na7pwEEudMh668DEDeRVwh1ZapYpBtVcxMHmdJPgFJrBlo6mMECAwEAAaNT\nMFEwHQYDVR0OBBYEFGJc3Z0j9kXPsTmmbgAsY/PK2cupMB8GA1UdIwQYMBaAFGJc3Z0j9kXPsTmm\nbgAsY/PK2cupMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJVBvcHhh+00gzQ0\npnZKtRJxvEg+pGh+B9E+5i2PsNGyIAvAXw4mdBcQZKxfiXM31ZE2ge1mP+4di11+PKYNH2E973PL\nJ+wGHeQZ1ETDG5fo79t0MG1RzHtGoirZW7v4BNUI6ZM2FjEaCOtZg1rUhkdIfqDx4CeNjzb0rhXI\nzXNTS4Y6VlxWArQnwAgqPtb5poJG3Mm/3f6uQg/l0LIKTY/GR6yQsNCkzTZQhrIpXj4RpqnX3QgD\n1IWToMon7ntp4gAP/lASM5/xm5Jzb6dmF+hoN073g02UeV2TDLze80+K+Xr1GZeeULuXNrhOEXDR\nytvube8OXPPY6/zCphVb21g=\n-----END CERTIFICATE-----\n" - }, - "activeVerificationCert": true, - "encryptionCert": false - } - ] - }, - "modificationDate": "2025-01-31T22:32:17.051Z", - "creationDate": "2025-01-31T22:32:17.050Z", - "wsTrust": { - "attributeContract": { - "coreAttributes": [ - { - "name": "TOKEN_SUBJECT", - "masked": false - } - ], - "extendedAttributes": [] - }, - "tokenGeneratorMappings": [], - "generateLocalToken": false - } - } - ] - }, - { - "resourceType": "/idp/spConnections", - "operationType": "SAVE", - "items": [ - { - "type": "SP", - "id": "iIoQK.-GWcXI5kLp4KDNxQqAhDF", - "name": "test", - "entityId": "test", - "active": true, - "contactInfo": {}, - "loggingMode": "STANDARD", - "virtualEntityIds": [], - "credentials": { - "certs": [], - "signingSettings": { - "signingKeyPairRef": { - "id": "tiq4n26axjircjk30oz5zf6k3", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/signing/tiq4n26axjircjk30oz5zf6k3" - }, - "algorithm": "SHA256withRSA", - "includeCertInSignature": false, - "includeRawKeyInSignature": false - } - }, - "modificationDate": "2025-01-31T22:32:17.901Z", - "creationDate": "2025-01-31T22:32:17.901Z", - "wsTrust": { - "partnerServiceIds": [ - "test" - ], - "oAuthAssertionProfiles": false, - "defaultTokenType": "SAML20", - "generateKey": false, - "encryptSaml2Assertion": false, - "minutesBefore": 5, - "minutesAfter": 30, - "attributeContract": { - "coreAttributes": [ - { - "name": "TOKEN_SUBJECT" - } - ], - "extendedAttributes": [] - }, - "tokenProcessorMappings": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "TOKEN_SUBJECT": { - "source": { - "type": "NO_MAPPING" - } - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "idpTokenProcessorRef": { - "id": "tokenprocessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/tokenprocessor" - }, - "restrictedVirtualEntityIds": [] - } - ] - }, - "connectionTargetType": "STANDARD" - } - ] - }, - { - "resourceType": "/session/settings", - "operationType": "SAVE", - "items": [ - { - "trackAdapterSessionsForLogout": false, - "revokeUserSessionOnLogout": true, - "sessionRevocationLifetime": 490 - } - ] - }, - { - "resourceType": "/session/applicationSessionPolicy", - "operationType": "SAVE", - "items": [ - { - "idleTimeoutMins": 60, - "maxTimeoutMins": 480 - } - ] - }, - { - "resourceType": "/session/authenticationSessionPolicies/global", - "operationType": "SAVE", - "items": [ - { - "enableSessions": false, - "persistentSessions": false, - "hashUniqueUserKeyAttribute": false, - "idleTimeoutMins": 60, - "idleTimeoutDisplayUnit": "MINUTES", - "maxTimeoutMins": 480, - "maxTimeoutDisplayUnit": "MINUTES" - } - ] - }, - { - "resourceType": "/session/authenticationSessionPolicies", - "operationType": "SAVE", - "items": [ - { - "id": "UfdnqYjWycSeo2vZZgSYB3gpw", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "OTIdPJava", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/OTIdPJava" - } - }, - "enableSessions": false, - "userDeviceType": "PRIVATE", - "persistent": false, - "timeoutDisplayUnit": "MINUTES", - "authnContextSensitive": false - } - ] - }, - { - "resourceType": "/oauth/issuers", - "operationType": "SAVE", - "items": [ - { - "id": "BmoJwEmyzs4RSNMzVUlCs8qTPC", - "name": "Test Issuer", - "description": "test issuer", - "host": "localhost", - "path": "" - } - ] - }, - { - "resourceType": "/additionalKeySets", - "operationType": "SAVE", - "items": [ - { - "id": "testID", - "name": "testName", - "description": "testDescription", - "signingKeys": { - "rsaActiveCertRef": { - "id": "tiq4n26axjircjk30oz5zf6k3", - "location": "https://localhost:9999/pf-admin-api/v1/keyPairs/signing/tiq4n26axjircjk30oz5zf6k3" - }, - "rsaPublishX5cParameter": true - }, - "issuers": [ - { - "id": "BmoJwEmyzs4RSNMzVUlCs8qTPC", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/issuers/BmoJwEmyzs4RSNMzVUlCs8qTPC" - } - ] - } - ] - }, - { - "resourceType": "/oauth/idpAdapterMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "USER_NAME": { - "source": { - "type": "CONTEXT" - }, - "value": "OAuthScopes" - }, - "USER_KEY": { - "source": { - "type": "ADAPTER" - }, - "value": "subject" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "OTIdPJava", - "idpAdapterRef": { - "id": "OTIdPJava", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/OTIdPJava" - } - } - ] - }, - { - "resourceType": "/oauth/authenticationPolicyContractMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "USER_NAME": { - "source": { - "type": "CONTEXT" - }, - "value": "OAuthScopes" - }, - "USER_KEY": { - "source": { - "type": "AUTHENTICATION_POLICY_CONTRACT" - }, - "value": "subject" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "QGxlec5CX693lBQL", - "authenticationPolicyContractRef": { - "id": "QGxlec5CX693lBQL", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/QGxlec5CX693lBQL" - } - } - ] - }, - { - "resourceType": "/oauth/outOfBandAuthPlugins", - "operationType": "SAVE", - "items": [ - { - "id": "exampleCibaAuthenticator", - "name": "exampleCibaAuthenticator", - "pluginDescriptorRef": { - "id": "com.pingidentity.oobauth.pingone.mfa.PingOneMfaCibaAuthenticator", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/outOfBandAuthPlugins/descriptors/com.pingidentity.oobauth.pingone.mfa.PingOneMfaCibaAuthenticator" - }, - "configuration": { - "tables": [ - { - "name": "PingOne Template Variables", - "rows": [] - } - ], - "fields": [ - { - "name": "PingOne Environment", - "value": "noeOvj5ltBnf4rcmtZAKdJ|f5901536-2b60-4d4a-a987-3d56aadad46d" - }, - { - "name": "Application", - "value": "2a7c1b5d-415b-4fb5-a6c0-1e290f776785" - }, - { - "name": "PingOne Authentication Policy", - "value": "" - }, - { - "name": "Test Username", - "value": "" - }, - { - "name": "PingOne Template Name", - "value": "transaction" - }, - { - "name": "PingOne Template Variant", - "value": "" - }, - { - "name": "Client Context", - "value": "#*\nDefine additional key/value pairs to be received at the mobile application.\nThe following variables are available by default:\n\n$oobAuthRequestContext - Context for the out-of-band authentication/authorization request\n$languagePackMessages - The language-pack file configured for this authenticator\n$subject - The user's PingOne username or user ID.\n$JSONValue - A JSON utility class that can be used to escape text and convert objects to JSON.\n Methods:\n escape(String s) - Escape quotes, \\, /, \\r, \\n, \\b, \\f, \\t and other control characters (U+0000 through U+001F).\n toJSONString(Object value) - Convert an object to JSON text.\n\nAdditionally, any Extended Contract attributes are also available using the $name syntax.\n\nExample:\n\n{\n \"requestingApplicationName\": \"$JSONValue.escape($oobAuthRequestContext.requestingApplication.name)\",\n \"requestedScope\": $JSONValue.toJSONString($oobAuthRequestContext.requestedScope.values()),\n \"amount\": \"$JSONValue.escape($amount)\",\n \"alert.color\": \"red\"\n}\n*#" - }, - { - "name": "Messages Files", - "value": "pingone-mfa-messages" - }, - { - "name": "API Request Timeout", - "value": "12000" - }, - { - "name": "Proxy Settings", - "value": "System Defaults" - }, - { - "name": "Custom Proxy Host", - "value": "" - }, - { - "name": "Custom Proxy Port", - "value": "" - } - ] - }, - "lastModified": "2025-01-31T22:32:19.734Z", - "attributeContract": { - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [] - } - } - ] - }, - { - "resourceType": "/oauth/cibaServerPolicy/requestPolicies", - "operationType": "SAVE", - "items": [ - { - "id": "exampleCibaReqPolicy", - "name": "exampleCibaReqPolicy", - "authenticatorRef": { - "id": "exampleCibaAuthenticator", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/outOfBandAuthPlugins/exampleCibaAuthenticator" - }, - "transactionLifetime": 120, - "allowUnsignedLoginHintToken": false, - "requireTokenForIdentityHint": false, - "alternativeLoginHintTokenIssuers": [], - "identityHintContract": { - "coreAttributes": [ - { - "name": "IDENTITY_HINT_SUBJECT" - } - ], - "extendedAttributes": [] - }, - "identityHintContractFulfillment": { - "attributeSources": [], - "attributeContractFulfillment": { - "IDENTITY_HINT_SUBJECT": { - "source": { - "type": "REQUEST" - }, - "value": "IDENTITY_HINT_SUBJECT" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "identityHintMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "NO_MAPPING" - } - }, - "USER_KEY": { - "source": { - "type": "NO_MAPPING" - } - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "lastModified": "2025-01-31T22:32:19.764Z" - } - ] - }, - { - "resourceType": "/oauth/cibaServerPolicy/settings", - "operationType": "SAVE", - "items": [ - { - "defaultRequestPolicyRef": { - "id": "exampleCibaReqPolicy", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/cibaServerPolicy/requestPolicies/exampleCibaReqPolicy" - } - } - ] - }, - { - "resourceType": "/oauth/openIdConnect/policies", - "operationType": "SAVE", - "items": [ - { - "id": "test-openid-connect-policy", - "name": "Test OpenID Connect Policy", - "idTokenLifetime": 5, - "attributeContract": { - "coreAttributes": [ - { - "name": "sub", - "multiValued": false - } - ], - "extendedAttributes": [] - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "sub": { - "source": { - "type": "TOKEN" - }, - "value": "OrgName" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "includeSriInIdToken": false, - "includeUserInfoInIdToken": false, - "includeSHashInIdToken": false, - "includeX5tInIdToken": false, - "idTokenTypHeaderValue": "", - "returnIdTokenOnRefreshGrant": false, - "returnIdTokenOnTokenExchangeGrant": false, - "reissueIdTokenInHybridFlow": false, - "accessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - }, - "scopeAttributeMappings": {}, - "lastModified": "2025-01-31T22:32:19.793Z" - } - ] - }, - { - "resourceType": "/oauth/openIdConnect/settings", - "operationType": "SAVE", - "items": [ - { - "defaultPolicyRef": { - "id": "test-openid-connect-policy", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/openIdConnect/policies/test-openid-connect-policy" - }, - "sessionSettings": { - "trackUserSessionsForLogout": false, - "revokeUserSessionOnLogout": true, - "sessionRevocationLifetime": 490 - } - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/processor/policies", - "operationType": "SAVE", - "items": [ - { - "id": "tokenexchangeprocessorpolicy", - "name": "tokenexchangeprocessorpolicy", - "actorTokenRequired": false, - "attributeContract": { - "coreAttributes": [ - { - "name": "subject" - } - ], - "extendedAttributes": [] - }, - "processorMappings": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "TEXT" - }, - "value": "value" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [ - { - "errorResult": "error", - "source": { - "type": "CONTEXT" - }, - "attributeName": "ClientIp", - "condition": "EQUALS", - "value": "value" - } - ] - }, - "subjectTokenType": "urn:ietf:params:oauth:token-type:saml2", - "subjectTokenProcessor": { - "id": "tokenprocessor", - "location": "https://localhost:9999/pf-admin-api/v1/idp/tokenProcessors/tokenprocessor" - }, - "actorTokenType": "", - "actorTokenProcessor": {} - } - ] - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/processor/settings", - "operationType": "SAVE", - "items": [ - { - "defaultProcessorPolicyRef": { - "id": "tokenexchangeprocessorpolicy", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/tokenExchange/processor/policies/tokenexchangeprocessorpolicy" - } - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/generator/groups", - "operationType": "SAVE", - "items": [ - { - "id": "exampleGeneratorGroup", - "name": "exampleGeneratorGroup", - "resourceUris": [], - "generatorMappings": [ - { - "requestedTokenType": "urn:ietf:params:oauth:token-type:saml2", - "tokenGenerator": { - "id": "tokengenerator", - "location": "https://localhost:9999/pf-admin-api/v1/sp/tokenGenerators/tokengenerator" - }, - "defaultMapping": true - } - ] - }, - { - "id": "exampleGeneratorGroup2", - "name": "exampleGeneratorGroup2", - "resourceUris": [], - "generatorMappings": [ - { - "requestedTokenType": "urn:ietf:params:oauth:token-type:saml2", - "tokenGenerator": { - "id": "tokengenerator", - "location": "https://localhost:9999/pf-admin-api/v1/sp/tokenGenerators/tokengenerator" - }, - "defaultMapping": true - } - ] - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/generator/settings", - "operationType": "SAVE", - "items": [ - { - "defaultGeneratorGroupRef": { - "id": "exampleGeneratorGroup", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/tokenExchange/generator/groups/exampleGeneratorGroup" - } - } - ] - }, - { - "resourceType": "/oauth/tokenExchange/tokenGeneratorMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "SAML_SUBJECT": { - "source": { - "type": "CONTEXT" - }, - "value": "OAuthScopes" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "tokenexchangeprocessorpolicy|tokengenerator", - "sourceId": "tokenexchangeprocessorpolicy", - "targetId": "tokengenerator" - } - ] - }, - { - "resourceType": "/oauth/clients", - "operationType": "SAVE", - "items": [ - { - "clientId": "test", - "enabled": true, - "redirectUris": [], - "grantTypes": [ - "CLIENT_CREDENTIALS", - "ACCESS_TOKEN_VALIDATION" - ], - "name": "test", - "modificationDate": "2025-01-31T22:32:19.927Z", - "creationDate": "2025-01-31T22:32:19.927Z", - "refreshRolling": "SERVER_DEFAULT", - "refreshTokenRollingIntervalType": "SERVER_DEFAULT", - "persistentGrantExpirationType": "SERVER_DEFAULT", - "persistentGrantExpirationTime": 0, - "persistentGrantExpirationTimeUnit": "DAYS", - "persistentGrantIdleTimeoutType": "SERVER_DEFAULT", - "persistentGrantIdleTimeout": 0, - "persistentGrantIdleTimeoutTimeUnit": "DAYS", - "persistentGrantReuseType": "SERVER_DEFAULT", - "allowAuthenticationApiInit": false, - "enableCookielessAuthenticationApi": false, - "bypassApprovalPage": false, - "restrictScopes": false, - "requirePushedAuthorizationRequests": false, - "requireJwtSecuredAuthorizationResponseMode": false, - "restrictedScopes": [], - "exclusiveScopes": [], - "restrictedResponseTypes": [], - "authorizationDetailTypes": [], - "defaultAccessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - }, - "restrictToDefaultAccessTokenManager": false, - "validateUsingAllEligibleAtms": false, - "oidcPolicy": { - "grantAccessSessionRevocationApi": false, - "grantAccessSessionSessionManagementApi": false, - "logoutMode": "NONE", - "pingAccessLogoutCapable": false, - "pairwiseIdentifierUserType": false - }, - "clientAuth": { - "type": "SECRET", - "encryptedSecret": "OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiUWVzOVR5eTV5WiIsInZlcnNpb24iOiIxMi4yLjAuNCJ9..ek9f1RsTFzvZAr2zYUAKUg.oF0lexeGQn1HT68sDwGGMJWkl9WmrTz5ThtJq-E0dsb13biwdjYQOvJCmonsjXZkuGaPPV0dfADekdPIod9zV5nGplpqH75FrnWhtr06_6I.yenJNLd7e8YH3mleNSxAMQ", - "secondarySecrets": [] - }, - "deviceFlowSettingType": "SERVER_DEFAULT", - "requireProofKeyForCodeExchange": false, - "refreshTokenRollingGracePeriodType": "SERVER_DEFAULT", - "clientSecretRetentionPeriodType": "SERVER_DEFAULT", - "requireDpop": false, - "requireOfflineAccessScopeToIssueRefreshTokens": "SERVER_DEFAULT", - "offlineAccessRequireConsentPrompt": "SERVER_DEFAULT", - "lockoutMaxMaliciousActionsType": "SERVER_DEFAULT", - "requireSignedRequests": false - } - ] - }, - { - "resourceType": "/oauth/clientRegistrationPolicies", - "operationType": "SAVE", - "items": [ - { - "id": "testRegistrationPolicy", - "name": "Test Registration Policy", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.client.registration.ResponseTypesConstraintsPlugin", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/clientRegistrationPolicies/descriptors/com.pingidentity.pf.client.registration.ResponseTypesConstraintsPlugin" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "code", - "value": "true" - }, - { - "name": "code id_token", - "value": "true" - }, - { - "name": "code id_token token", - "value": "true" - }, - { - "name": "code token", - "value": "true" - }, - { - "name": "id_token", - "value": "true" - }, - { - "name": "id_token token", - "value": "true" - }, - { - "name": "token", - "value": "true" - } - ] - }, - "lastModified": "2025-01-31T22:32:19.959Z" - } - ] - }, - { - "resourceType": "/oauth/clientSettings", - "operationType": "SAVE", - "items": [ - { - "clientMetadata": [ - { - "parameter": "authNexp", - "description": "Authentication Experience [Single_Factor | Internal | ID-First | Multi_Factor]", - "multiValued": false - }, - { - "parameter": "useAuthnApi", - "description": "Use the AuthN API", - "multiValued": false - } - ] - } - ] - }, - { - "resourceType": "/oauth/accessTokenMappings", - "operationType": "SAVE", - "items": [ - { - "attributeSources": [], - "attributeContractFulfillment": { - "Username": { - "source": { - "type": "TEXT" - }, - "value": "Administrator" - }, - "OrgName": { - "source": { - "type": "TEXT" - }, - "value": "Ping" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "client_credentials|jwt", - "context": { - "type": "CLIENT_CREDENTIALS" - }, - "accessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - } - }, - { - "attributeSources": [], - "attributeContractFulfillment": { - "Username": { - "source": { - "type": "TEXT" - }, - "value": "Administrator" - }, - "OrgName": { - "source": { - "type": "TEXT" - }, - "value": "Ping" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - }, - "id": "default|jwt", - "context": { - "type": "DEFAULT" - }, - "accessTokenManagerRef": { - "id": "jwt", - "location": "https://localhost:9999/pf-admin-api/v1/oauth/accessTokenManagers/jwt" - } - } - ] - }, - { - "resourceType": "/authenticationSelectors", - "operationType": "SAVE", - "items": [ - { - "id": "authnExp", - "name": "AuthN Experiences", - "pluginDescriptorRef": { - "id": "com.pingidentity.pf.selectors.ExtendedPropertyAuthnSelector", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationSelectors/descriptors/com.pingidentity.pf.selectors.ExtendedPropertyAuthnSelector" - }, - "configuration": { - "tables": [], - "fields": [ - { - "name": "Extended Property", - "value": "authNexp" - }, - { - "name": "Case-Sensitive Matching", - "value": "true" - }, - { - "name": "Enable 'No Match' Result Value", - "value": "false" - } - ] - }, - "lastModified": "2025-01-31T22:32:20.047Z", - "attributeContract": { - "extendedAttributes": [ - { - "name": "Single_Factor" - }, - { - "name": "Internal" - } - ] - } - } - ] - }, - { - "resourceType": "/authenticationApi", - "operationType": "SAVE", - "items": [ - { - "id": "myauthenticationapiapplication", - "url": "https://example.com", - "description": "example", - "additionalAllowedOrigins": [], - "name": "myauthenticationapiapplication" - } - ] - }, - { - "resourceType": "/authenticationApi/settings", - "operationType": "SAVE", - "items": [ - { - "apiEnabled": false, - "enableApiDescriptions": true, - "restrictAccessToRedirectlessMode": true, - "includeRequestContext": false - } - ] - }, - { - "resourceType": "/authenticationPolicies/fragments", - "operationType": "SAVE", - "items": [ - { - "id": "FirstFactor", - "name": "First_Factor", - "description": "Used for Customer First Factor", - "rootNode": { - "action": { - "type": "AUTHN_SOURCE", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "ciamHtmlForm", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/ciamHtmlForm" - } - }, - "attributeRules": { - "items": [ - { - "attributeSource": { - "type": "ADAPTER", - "id": "ciamHtmlForm" - }, - "attributeName": "policy.action", - "condition": "EQUALS_CASE_INSENSITIVE", - "expectedValue": "identity.registration", - "result": "Register" - } - ], - "fallbackToSuccess": true - } - }, - "children": [ - { - "action": { - "type": "DONE", - "context": "Fail" - } - }, - { - "action": { - "type": "LOCAL_IDENTITY_MAPPING", - "context": "Register", - "localIdentityRef": { - "id": "regIdentityProfile", - "location": "https://localhost:9999/pf-admin-api/v1/localIdentity/identityProfiles/regIdentityProfile" - }, - "inboundMapping": { - "attributeSources": [], - "attributeContractFulfillment": {}, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "outboundAttributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "firstName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "firstName" - }, - "lastName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "lastName" - }, - "ImmutableID": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "ImmutableID" - }, - "mail": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "email" - }, - "subject": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "username" - }, - "SAML_AUTHN_CTX": { - "source": { - "type": "TEXT" - }, - "value": "registered" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - }, - { - "action": { - "type": "LOCAL_IDENTITY_MAPPING", - "context": "Success", - "localIdentityRef": { - "id": "regIdentityProfile", - "location": "https://localhost:9999/pf-admin-api/v1/localIdentity/identityProfiles/regIdentityProfile" - }, - "inboundMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "pf.local.identity.unique.id": { - "source": { - "type": "ADAPTER", - "id": "ciamHtmlForm" - }, - "value": "uid" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - }, - "outboundAttributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "firstName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "firstName" - }, - "lastName": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "lastName" - }, - "ImmutableID": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "ImmutableID" - }, - "mail": { - "source": { - "type": "LOCAL_IDENTITY_PROFILE", - "id": "regIdentityProfile" - }, - "value": "email" - }, - "subject": { - "source": { - "type": "ADAPTER", - "id": "ciamHtmlForm" - }, - "value": "username" - }, - "SAML_AUTHN_CTX": { - "source": { - "type": "TEXT" - }, - "value": "single_factor" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - } - ] - }, - "inputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "outputs": { - "id": "samplePolicyContract", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/samplePolicyContract" - } - }, - { - "id": "Identify_First", - "name": "Identify_First", - "description": "Used for First Factors that just use the User Identifier", - "rootNode": { - "action": { - "type": "AUTHN_SOURCE", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "IDFirst", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/IDFirst" - } - }, - "inputUserIdMapping": { - "source": { - "type": "INPUTS", - "id": "Inputs" - }, - "value": "subject" - }, - "userIdAuthenticated": false - }, - "children": [ - { - "action": { - "type": "DONE", - "context": "Fail" - } - }, - { - "action": { - "type": "APC_MAPPING", - "context": "Success", - "authenticationPolicyContractRef": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "subject": { - "source": { - "type": "ADAPTER", - "id": "IDFirst" - }, - "value": "uid" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - } - ] - }, - "inputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "outputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - } - }, - { - "id": "InternalAuthN", - "name": "Internal AuthN", - "description": "Used for Internal Authentication", - "rootNode": { - "action": { - "type": "AUTHN_SOURCE", - "authenticationSource": { - "type": "IDP_ADAPTER", - "sourceRef": { - "id": "htmlForm", - "location": "https://localhost:9999/pf-admin-api/v1/idp/adapters/htmlForm" - } - } - }, - "children": [ - { - "action": { - "type": "DONE", - "context": "Fail" - } - }, - { - "action": { - "type": "APC_MAPPING", - "context": "Success", - "authenticationPolicyContractRef": { - "id": "default", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/default" - }, - "attributeMapping": { - "attributeSources": [], - "attributeContractFulfillment": { - "firstName": { - "source": { - "type": "NO_MAPPING" - } - }, - "lastName": { - "source": { - "type": "NO_MAPPING" - } - }, - "ImmutableID": { - "source": { - "type": "ADAPTER", - "id": "htmlForm" - }, - "value": "entryUUID" - }, - "mail": { - "source": { - "type": "ADAPTER", - "id": "htmlForm" - }, - "value": "mail" - }, - "subject": { - "source": { - "type": "ADAPTER", - "id": "htmlForm" - }, - "value": "uid" - }, - "SAML_AUTHN_CTX": { - "source": { - "type": "TEXT" - }, - "value": "internal" - } - }, - "issuanceCriteria": { - "conditionalCriteria": [] - } - } - } - } - ] - }, - "inputs": { - "id": "DkhZxRcZchsed90U", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/DkhZxRcZchsed90U" - }, - "outputs": { - "id": "default", - "location": "https://localhost:9999/pf-admin-api/v1/authenticationPolicyContracts/default" - } - } - ] - }, - { - "resourceType": "/authenticationPolicies/default", - "operationType": "SAVE", - "items": [ - { - "failIfNoSelection": false, - "authnSelectionTrees": [], - "defaultAuthenticationSources": [], - "trackedHttpParameters": [] - } - ] - }, - { - "resourceType": "/authenticationPolicies/settings", - "operationType": "SAVE", - "items": [ - { - "enableIdpAuthnSelection": false, - "enableSpAuthnSelection": false - } - ] - } - ] -} diff --git a/server-profiles/shared-profile/instance/bin/oauth2.properties.subst b/server-profiles/shared-profile/instance/bin/oauth2.properties.subst deleted file mode 100644 index a529f2af..00000000 --- a/server-profiles/shared-profile/instance/bin/oauth2.properties.subst +++ /dev/null @@ -1,132 +0,0 @@ -############################################################################### -# # -# OAuth 2.0-based Administrative API Authorization # -# # -# This authorization mechanism requires all requests to the PingFederate # -# administrative API to include an OAuth access token (AT) in the HTTP # -# "Authorization" request header with a "Bearer" type (following RFC 6750). # -# # -# ATs are validated by calling an introspection endpoint at the issuing OAuth # -# Authorization Server (AS). Token claims returned from the AS dictate the # -# username and administrative roles of the API caller. # -# # -############################################################################### - -# -------------------- -# Client ID (REQUIRED) -# -------------------- -# The client ID used to identify the PingFederate administrative API as a Resource Server (RS) to the AS for AT introspection. -# -client.id=test - -# --------------------------------------- -# Client Authentication Method (REQUIRED) -# --------------------------------------- -# The type of authentication expected by the AS introspection endpoint. -# -# Supported values are: -# client_secret_basic - Client credentials sent using HTTP Basic authentication. -# client_secret_post - Client credentials included in the HTTP request body. -# private_key_jwt - Client authenticates in accordance with RFC 7523. Public keys to enable the AS to validate JWT -# signatures are published at the PingFederate runtime JWKS endpoint (e.g.: https://example.com:9031/pf/JWKS). -# none - No client authentication. -# -client.authn.method=client_secret_basic - -# ------------------------ -# Client Secret (OPTIONAL) -# ------------------------ -# The client secret used in client_secret_basic or client_secret_post authentication methods. -# This property should be obfuscated using one of the following utilities: -# -# On Windows: -# >obfuscate.bat -# -# On Linux: -# >./obfuscate.sh -# -# Example: -# obfuscate.bat secret -# Result: -# OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiVEU0dVZjcU1wayIsInZlcnNpb24iOiI3LjEuMjAwLjQtU05BUFNIT1QifQ..8Zf_xQ4PuXuYkdE0culPpA.E2Lh_zAne5YpaJo9wbl39A.Z8wVd6SFB8lcQbvutU1u-Q -# Copy complete result into property value, as shown in the example below: -# client.secret=OBF:JWE:eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiVEU0dVZjcU1wayIsInZlcnNpb24iOiI3LjEuMjAwLjQtU05BUFNIT1QifQ..8Zf_xQ4PuXuYkdE0culPpA.E2Lh_zAne5YpaJo9wbl39A.Z8wVd6SFB8lcQbvutU1u-Q -# -client.secret=2FederateM0re! - -# --------------------------------------- -# Token Introspection Endpoint (REQUIRED) -# --------------------------------------- -# The full HTTPS URL of the AS introspection endpoint PingFederate will call for AT validation. -# -introspection.endpoint=https://localhost:9031/as/introspect.oauth2 - -# ----------------- -# Scopes (REQUIRED) -# ----------------- -# The required scopes of validated ATs authorized to call the PingFederate administrative API. Space delimit multiple values. -# -required.scopes=email - -# ---------------------------------- -# Username Attribute Name (REQUIRED) -# ---------------------------------- -# The name of the claim in the AT introspection response that contains the username of the administrator. The value of the -# username claim is used in administrative audit logs. -# -username.attribute.name=Username - -# ------------------------------ -# Role Attribute Name (REQUIRED) -# ------------------------------ -# The name of the claim in the introspection response that determines the administrative role. -# -# Example: -# role.attribute.name=admin_role -# -role.attribute.name=OrgName - -# ------------------------------------- -# Administrator Role Mapping (REQUIRED) -# ------------------------------------- -# The following set of properties maps the AT introspection response to roles to determine administrative permissions. -# -# Some special characters in the value that need to be evaluated must be escaped (e.g., "\ " for " "). This is also true for -# spaces that occur at the beginning. See the Javadoc for the load method of the java.util.Properties class for a definitive -# description of what characters need to be escaped and how to do so. -# -# Example: -# Assume that admin_role is set for the Role Attribute Name (role.attribute.name) and mappings are set as follows: -# -# role.admin=admin -# role.cryptoManager=cryptoadmin -# role.userAdmin=useradmin -# role.expressionAdmin=expressionadmin -# -# When admin_role claim has a single value: -# admin_role : "admin" -# The caller will be granted the admin role. -# -# When the admin_role claim has an array containing multiple values: -# admin_role : ["admin","cryptoadmin","useradmin"] -# The caller will be granted the admin, crypto and user administrator roles. -# -# Only one value can be entered per line. If multiple values need to be mapped to a single PingFederate role, then multiple -# properties must be created using a numeric, incremental suffix, starting with 1. Example: -# role.admin.1= -# role.admin.2= -# role.admin.3= -# -role.admin=Ping -role.cryptoManager=Ping -role.userAdmin=Ping - -# The expressionAdmin role must only be granted to the administrators with admin role. -role.expressionAdmin=Ping - -# ----------------------------------------------- -# Auditor Role Attribute Value Mapping (OPTIONAL) -# ----------------------------------------------- -# The auditor role overrides the privileges associated with the assignment of any other role for the same caller. -# -role.auditor=${PF_OAUTH2_ROLE_AUDITOR} \ No newline at end of file diff --git a/server-profiles/shared-profile/instance/bin/run.properties.subst b/server-profiles/shared-profile/instance/bin/run.properties.subst deleted file mode 100644 index c7268511..00000000 --- a/server-profiles/shared-profile/instance/bin/run.properties.subst +++ /dev/null @@ -1,561 +0,0 @@ -# PingFederate Initialization Properties File - -# The properties in this file control the administrative console as well as -# the runtime server (transaction-processing) behavior, and deployment, -# including server clustering. Changes are optional. For detailed information, -# refer to the Administrator's Manual and the Server Clustering Guide. - -# --------------------------------- -# Administrative Console Properties -# --------------------------------- -# -# This property defines the port on which the PingFederate administrative -# console and API runs. Default is 9999. -pf.admin.https.port=9999 - -# This property defines the URL that PingFederate's administrative node will use -# to populate resource references in Administrative API responses -# and for the redirect URL the node will send to an OP for administrator OIDC login -# (for example, https://pingfederate-admin.example.com or, if the load balancer uses -# a custom port, https://pingfederate-admin.example.com:8443). -# -# This property should be used because pf.admin.hostname has been deprecated. -# If pf.admin.hostname is defined in run.properties, it will be ignored -# if pf.admin.baseurl is specified. But if only pf.admin.hostname is defined, -# then the URL will be constructed the same way as in versions of PingFederate -# before 10.3. -pf.admin.baseurl=https://localhost:9999 - -# -# This property defines the IP address over which the PingFederate -# administrative console communicates. Use for deployments where multiple -# network interfaces are installed on the machine running PingFederate. -# The bind addresses can be ipv6 compliant: use "::" as a replacement -# for "0.0.0.0". -pf.console.bind.address=0.0.0.0 - -# HTML page title -# --------------- -# This property defines the browser window or tab title for the administrative -# console, used to make separate instances identifiable. -pf.console.title=Docker PingFederate - -# -# This property defines the name of the PingFederate environment that will be -# displayed in the administrative console, used to make separate environments -# easily identifiable. -pf.console.environment= - -# HTML page background image -# --------------- -# This property enables image background for administrative console -pf.console.show.background.images=true - -# PingOne unified admin settings -# ----------------------- -# These properties set the URL of the PingOne unified admin icon in the PingFederate administrative console. - -# This property should be set based on the region of your PingOne organization. -# Valid values are: -# com - indicates the North America region at console.pingone.com -# eu - indicates the Europe region at console.pingone.eu -# asia - indicates the Asia region at console.pingone.asia -# ca - indicates the Canada region at console.pingone.ca -pf.pingone.admin.url.region= - -# The ID of your PingOne organization's environment. -pf.pingone.admin.url.environment.id= - -# Admin Console UI Timeout -# ------------------------ -# -# This property defines the length of time (in minutes) until an inactive -# administrative console times out. The minimum setting is 1 minute; maximum is -# 8 hours (480 minutes). -# Default is 30 minutes. -pf.console.session.timeout=30 - -# Login Mode -# ---------- -# -# This property indicates whether more than one Admin user may access the -# administrative console at one time. -# Valid values are: -# single - Only one Admin user may log on at a time. -# multiple - More than one Admin user may log on simultaneously. -# Default is multiple. -pf.console.login.mode=multiple - -# Authentication Mechanism -# ------------------------ -# This property defines whether administrators log on to PingFederate using -# credentials managed internally, by PingFederate, or externally. Single sign-on -# via the PingOne admin console is also available, and is independent of the -# mechanism chosen here. -# Valid values are: -# none - No direct login method is available. -# native - Internal password file authentication. -# LDAP - External LDAP authentication. -# cert - X509 certificate-based authentication. -# RADIUS - External RADIUS authentication. -# OIDC - External or Internal OIDC authentication. -# Default is native. -pf.console.authentication= - -# Authentication methods for the Admin API. -# Valid values are: -# none - No direct login method is available. -# native - Internal password file authentication. -# LDAP - External LDAP authentication. -# cert - X509 certificate-based authentication. -# RADIUS - External RADIUS authentication. -# OAuth2 - External or Internal OAuth2 authorization. -# Default is native. -# -# Administrators may also configure OAuth2 authorization together with -# a basic authentication method by separating the values with a comma. -# Basic authentication methods include native, LDAP, and RADIUS. -# Example: -# pf.admin.api.authentication=OAuth2,LDAP -# Note: -# - The values are case-insensitive. -# - The order of the values is not important. PingFederate will use the HTTP -# Authorization request header to determine the AuthN/AuthZ scheme. Only one -# Authorization header is allowed in a request. -# - none and cert cannot be used with any other authentication methods. -# - If any invalid value or more than two authentication methods are defined, -# PingFederate will fail on startup. -# Please find the documentation for details about using multiple authentication -# sources. -pf.admin.api.authentication=native,OAuth2 - -# -# When LDAP administrative-console authentication is enabled, this property -# indicates the name of the file containing configuration properties. -ldap.properties.file=ldap.properties - -# -# When certificate-based authentication is enabled, this property indicates the -# name of the file containing configuration properties. -cert.properties.file=cert_auth.properties - -# -# When RADIUS-based authentication is enabled, this property indicates the -# name of the configuration properties file. -radius.properties.file=radius.properties - -# -# When OIDC administrative-console authentication is enabled, this property -# indicates the name of the file containing configuration properties. -oidc.properties.file=oidc.properties - -# -# When OAuth 2.0 administrative-API authentication is enabled, this property -# indicates the name of the file containing configuration properties. -oauth2.properties.file=oauth2.properties - - -# ------------------------- -# Runtime Server Properties -# ------------------------- -# -# To turn off an HTTP listener, set the port to a value of less than zero. -# You should always use SSL. Turning on "pf.http.port" is not recommended. -# If you do want to turn on "pf.http.port" for testing purposes, you will -# need to update data/config-store/session-cookie-config.xml -# to turn off the secure cookie. -pf.http.port=-1 - -# -# This property defines the port on which PingFederate listens for -# encrypted HTTPS (SSL/TLS) traffic. -# Default is 9031. -pf.https.port=9031 - -# This property defines a secondary HTTPS port that can be used for mutual SSL/TLS -# (client X.509 certificate) authentication for both end users and protocol -# requests (SAML, WS-Trust and OAuth). Set its value to the desired inbound -# listening TCP port. -# A value of -1 disables this feature. -pf.secondary.https.port=-1 - -# -# This property defines the IP address over which the PingFederate server -# communicates with partner federation gateways. Use for deployments where -# multiple network interfaces are installed on the machine running PingFederate. -# The bind addresses can be ipv6 compliant: use "::" as a replacement -# for "0.0.0.0". -pf.engine.bind.address=0.0.0.0 - -# -# This property defines the IP address over which JMX -# communicate with PingFederate. Use for deployments where multiple network -# interfaces are installed on the machine running PingFederate. -# The bind addresses can be ipv6 compliant: use "::" as a replacement -# for "0.0.0.0". -pf.monitor.bind.address=0.0.0.0 - -# -# This property defines the protocol to be used by PingFederate. -# Valid values are: -# true - Enables use of ipv_4 only. -# false - Enables use of both ipv_4 and ipv_6. -# Default is true. -pf.engine.prefer_ipv4=true - -# This property defines the context path used for the PingFederate -# runtime application. -# Note: If this property is changed, the path must also be added to -# the base URL for your PingFederate system protocol settings. -# The default is "/", which is the root of the server. -# Both, "/sso" and "/sso/" are valid values for this property. -pf.runtime.context.path=/ - -# -# This property defines the network path to the output location of log files. -# Default is: -# /pingfederate/log -#pf.log.dir= - -# -# This property enables detailed event logging where changes to the components are logged. -# Default is false -# -pf.log.eventdetail=false - -# -# This property enables detailed system monitoring information to be made available -# in the heartbeat endpoint -# -pf.heartbeat.system.monitoring=true - -# -# This property sets the maximum request body size for inbound runtime requests. -# Default is 200000 if one is not specified. Units are in bytes. -# -pf.runtime.http.maxRequestBodySize=200000 - -# --------------------- -# Deployment Properties -# --------------------- - -# Operational Mode -# ---------------- -# This property indicates the operational mode of the runtime server (protocol -# engine) from a clustering standpoint. -# Valid values are: -# STANDALONE - This server is a standalone instance that runs both -# the UI console and protocol engine (default). -# CLUSTERED_CONSOLE - This server is part of a cluster and runs only the -# administration console. -# CLUSTERED_ENGINE - This server is part of a cluster and runs only the -# protocol engine. -# Note: Only one node in a cluster can run the administrative console. -# Default is STANDALONE. -pf.operational.mode=STANDALONE - -# The following properties apply only if "pf.operational.mode" -# is *not* STANDALONE: -pf.cluster.node.index= -# A strong, randomly-generated key (22 or more alphanumerics) is recommended. -# In BCFIPS mode, if encryption is enabled, the minimum length of 22 -# characters is enforced. -pf.cluster.auth.pwd= -pf.cluster.encrypt=false - -# Specify the key size to use with the AES encryption algorithm that is used -# when encrypting communication among the cluster. The key sizes allowed -# are dependent on the cryptography provider enabled with the JVM. For -# example, Oracle's Java Cryptography Extension (JCE) Unlimited Strength -# provider supports 128, 192, and 256 bit key sizes. -# Default is 128. -pf.cluster.encryption.keysize=128 - -# Specify the IP address for cluster communication, or leave as NON_LOOPBACK to -# allow the system to choose an available non-loopback IP address. -pf.cluster.bind.address=NON_LOOPBACK -pf.cluster.bind.port=7600 -pf.cluster.failure.detection.bind.port=7700 - -# Allowed values for the following properties are: tcp/udp. Default is tcp. -# IMPORTANT: For UDP clustering with PingFederate running on Windows using ipv6. -# You must supply the interface identifier (for example: %11) in the -# "pf.cluster.bind.address" above. -pf.cluster.transport.protocol=tcp -pf.cluster.mcast.group.address=239.16.96.69 -pf.cluster.mcast.group.port=7601 - -# When TCP is used, this property specifies the list of hosts in the cluster. -# For example: "10.0.1.4[7600],server2.mydomain.com[7600]". -# If only a subset of hosts is included, then you must set -# pf.cluster.TCPPING.return_entire_cache in jgroups.properties to true. -# -# IMPORTANT: For ipv6, DO NOT use brackets ([]) to surround the IP addresses. -# -# For dynamic clusters using tcp as the transport protocol, alternate -# discovery mechanisms are available. See bin/jgroups.properties for -# further details. If a dynamic discovery mechanism is used, this property -# is ignored. -pf.cluster.tcp.discovery.initial.hosts=${DISCOVERY_INITIAL_HOST} - -# This property enables/disables adaptive clustering. Please see the -# PingFederate clustering guide for more information on this capability. -# Valid values are: -# true - enable adaptive clustering -# false - disable adaptive clustering -# Default is true. -pf.cluster.adaptive=true - -# This property enables/disables JGroups cluster diagnostics. -# Valid values are: -# true - enable diagnostics -# false - disable diagnostics -# Default is false -pf.cluster.diagnostics.enabled=false - -# These properties define the IP address and port over which PingFederate communicates -# JGroups diagnostic information. -pf.cluster.diagnostics.addr=224.0.75.75 -pf.cluster.diagnostics.port=7500 - -# This property defines the tags associated with this PingFederate node. -# Configuration is optional. When configured, PingFederate takes this property -# into consideration when processing requests. For example, tags may be used -# to determine the data store location that this PingFederate -# node communicates with. Administrators may also use tags in conjunction with -# authentication selectors and policies to define authentication requirements. -# -# Administrators may define one tag or a list of space-separated tags. -# Each tag cannot contain any spaces. Other characters are allowed. -# -# Example 1: node.tags=north -# Example 1 defines one tag: 'north' -# -# Example 2: node.tags=1 123 test -# Example 2 defines three tags: '1', '123' and 'test' -# -# Example 3: node.tags= -# Example 3 is also valid because the node.tags property is optional. -node.tags= - -# Hardware Security Module Mode -# ----------------------------- -# This property enables or disables a Hardware Security Module. -# -# Valid values are: -# AWSCLOUDHSM - Denotes an AWS CloudHSM (not classic) implementation. -# NCIPHER - Denotes a Thales nCipher implementation. -# LUNA - Denotes a SafeNet Luna implementation. -# BCFIPS - Denotes a Bouncy Castle FIPS implementation. -# OFF - Use the default Sun keystore/JCE implementation. -# Default is OFF. -pf.hsm.mode=OFF - -# Hardware Security Module Hybrid Mode -# ------------------------------------ -# This property enables or disables Hybrid mode for an HSM setup. -# -# When PF is in Hybrid mode, certs/keys can be created either on the local trust store or on the HSM. -# This can used as a migration strategy towards an HSM setup. -# -# Valid values are: -# true - enable Hybrid mode. -# false - disable Hybrid mode. -# Default is false. -pf.hsm.hybrid=false - -# Additional allowed security providers for BCFIPS mode. -# -# When operating in BCFIPS mode, PingFederate limits the provider list to the -# minimum required. Additional providers can be allowed by adding their class names -# to the following comma-delimited list. -pf.fips.additional.allowed.providers= - -# Outbound Provisioner Properties -# --------------------------- -# This property enables or disables Outbound Provisioning. -# The default is disabled. This property also enables provisioning failover -# (Separate licensing is required to activate the provisioner.). -# -# Valid values are: -# STANDALONE - Turns the provisioner module on, -# standalone mode (no failover). -# FAILOVER - Turns the provisioner module on, failover mode. -# OFF - Turns the provisioner module off. -# Default is OFF. -# When only one server is in use, set the value to STANDALONE. -# When more than one server is in use and failover is desired, -# set the value to FAILOVER for each server. -pf.provisioner.mode=OFF - -# -# In failover mode, each node must have a unique ID from 1 to n, where n is the -# number of nodes in the failover network. The lower the node ID, the higher the -# priority for that node (only one server can actively handle provisioning at -# one time). Set the initial active provisioning server node ID to 1. -provisioner.node.id=1 - -# Grace period, in seconds, after which a node is considered dead and failover -# occurs. This value should be larger than the provisioning-frequency cycle. -provisioner.failover.grace.period=600 - -# Jetty Customization Properties -# --------------------------- -# In order to be interoperable with a wide range of external systems PingFederate -# has been modified to handle special cases related to encoding cookies. -# -# When setting a cookie, PingFederate will first evaluate -# 'jetty51.encode.wildcard.session.cookies' and 'jetty51.encode.cookies' to see -# if the cookie values should be encoded. If the cookie value should be encoded, -# PingFederate will then encode the following characters (space included): ;, " -# -# If it's been determined that the cookie shouldn't be encoded, PingFederate will -# then check for the existence of special characters. If found, the cookie value -# will be wrapped in quotes. The following is a list of characters that would -# trigger wrapping the value in quotes (space included): \n\r\t\f\b%+ ;="\ -# -# If special characters are not detected or the cookie name is defined in -# 'cookies.skip.quoting' PingFederate will set the cookie value without wrapping -# or encoding it. -# -# -# When 'true', PingFederate will encode cookie values for all cookies with names -# that end with "SESSION" (e.g. SMSESSION). -jetty51.encode.wildcard.session.cookies=true - -# A comma separated list of cookie names whose values PingFederate will encode -# when the cookie is set. -jetty51.encode.cookies= - -# A comma separated list of cookie names whose values should *not* be wrapped -# in quotes when special characters are detected. -cookies.skip.quoting=_saml_idp - -# SSL Session Cache -# ----------------- -# Sets the size of the SSL session cache used for storing SSLSession objects. -# 0 means there is no limit. -javax.net.ssl.sessionCacheSize=5000 - -# HTTP Forward Proxy Settings -# --------------------------- -# Uncomment and set the following Java properties to have outbound HTTP and HTTPS traffic -# sent through a forward proxy. You can also flag additional hosts to bypass the proxy by -# configuring http.nonProxyHosts. -# If proxy authentication is required, specify values for http[s].proxyUser and -# http[s].proxyPassword. -# You should encrypt the http[s].proxyPassword value using the obfuscate.[sh|bat] -# utility. Alternatively, you can specify this property as a secret reference in the form -# OBF:MGR:{secretManagerId}:{secretId}. -# For more information, see the Oracle Java Networking Properties documentation. -#http.proxyHost= -#http.proxyPort= -#http.proxyUser= -#http.proxyPassword= -#https.proxyHost= -#https.proxyPort= -#https.proxyUser= -#https.proxyPassword= -#http.nonProxyHosts=*.internal.com|localhost - -# You should only use digest authentication with proxy servers. Basic authentication is -# not recommended because the proxy credentials are transmitted to the server without -# encryption. However, if you still want to enable basic authentication for an HTTP target site, -# you can remove 'Basic' from the following line. -jdk.http.auth.proxying.disabledSchemes=Basic - -# Basic authentication is not recommended because the proxy credentials are transmitted to the -# server without encryption. However, if you still want to enable basic authentication for an -# HTTPS target site, you can remove 'Basic' from the following line. -jdk.http.auth.tunneling.disabledSchemes=Basic - -# This property determines whether PingFederate omits line breaks in XML digital signatures. If omitted, this setting defaults to "false". -# It is recommended to set this as "true" for improved interoperability with Microsoft products. -org.apache.xml.security.ignoreLineBreaks=true - -# These properties determine the default timeouts for outbound java.net.URL connections (in milliseconds). -# These values may be overridden in certain contexts. -# When a more specific configuration option is not available, these defaults are used. -sun.net.client.defaultConnectTimeout=30000 -sun.net.client.defaultReadTimeout=30000 - -# TLS Protocol Settings -# --------------------- -# The following properties control the allowed TLS client and server protocols. -# Each property may contain a comma-separated list of allowed TLS protocols. -# -# "pf.tls.client.protocols" property is used by all PingFederate outbound HTTPS connections -# "pf.runtime.tls.server.protocols" property is used by PingFederate for all runtime inbound HTTPS connections -# "pf.admin.tls.server.protocols" property is used by PingFederate for all administrative console inbound HTTPS connections -# -# The default value of "TLSv1.2" will be used if any of these properties are not present -pf.tls.client.protocols=TLSv1.2,TLSv1.3 -pf.tls.runtime.server.protocols=TLSv1.2,TLSv1.3 -pf.tls.admin.server.protocols=TLSv1.2,TLSv1.3 - -# HTTP Server Thread Pool Settings -# -------------------------------- -# The following properties control the minimum and the maximum number of threads used to configure PingFederate thread pools. -# -# Please refer to the performance tuning guide for further tuning guidance. -pf.admin.threads.min=1 -pf.admin.threads.max=10 -pf.runtime.threads.min=200 -pf.runtime.threads.max=400 - -# HTTP Connector Queue Size Settings -# ---------------------------------- -# The following properties control the queue size of the HTTP connector. -# -# Please refer to the performance tuning guide for further tuning guidance. -pf.admin.acceptQueueSize=512 -pf.runtime.acceptQueueSize=512 - -# -# HTTP Server Request Handling Settings -# ------------------------------------- -# -# buffer size for output -pf.admin.output.buffer.size=32768 -pf.runtime.output.buffer.size=32768 - -# request header buffer size -pf.admin.request.header.size=16384 -pf.runtime.request.header.size=16384 -# response header buffer size -pf.admin.response.header.size=16384 -pf.runtime.response.header.size=16384 - -# Enable delayed dispatch optimisation -pf.admin.delayDispatchUntilContent=false -pf.runtime.delayDispatchUntilContent=false - -# HTTP Socket.soLingerTime in seconds. (-1 to disable) -# pf.admin.http.soLingerTime=-1 -# pf.runtime.http.soLingerTime=-1 - -# HTTP idle timeout in milliseconds -pf.admin.http.idleTimeout=30000 -pf.runtime.http.idleTimeout=30000 - -# Parameters to control the number and priority of acceptors and selectors -pf.admin.ssl.selectors=1 -pf.admin.ssl.acceptors=0 -pf.runtime.ssl.selectors=1 -pf.runtime.ssl.acceptors=0 -pf.runtime.http.selectors=1 -pf.runtime.http.acceptors=0 -# pf.admin.ssl.acceptorPriorityDelta=0 -# pf.runtime.ssl.acceptorPriorityDelta=0 -# pf.runtime.http.acceptorPriorityDelta=0 - -# Parameter to select HTTP compliance modes for Jetty HTTP parsing and handling -# pf.admin.http.compliance=RFC7230_LEGACY -# pf.runtime.http.compliance=RFC7230_LEGACY - - - - -pf.admin.hostname=localhost -# com.unboundid.ldap.sdk.debug.type=LDAP - diff --git a/server-profiles/shared-profile/instance/bulk-config/data.json b/server-profiles/shared-profile/instance/bulk-config/data.json deleted file mode 100755 index e69de29b..00000000 diff --git a/server-profiles/shared-profile/instance/server/default/data/pf.jwk b/server-profiles/shared-profile/instance/server/default/data/pf.jwk deleted file mode 100644 index 59f9b652..00000000 --- a/server-profiles/shared-profile/instance/server/default/data/pf.jwk +++ /dev/null @@ -1 +0,0 @@ -{"keys":[{"kty":"oct","kid":"Qes9Tyy5yZ","k":"FJwZazKdbYBi1zx520z-je4CnNhwc40EHUplpnClbvM"}]} \ No newline at end of file