From 929e67658e379fa676b9dfaefb52c4bff4c7472a Mon Sep 17 00:00:00 2001 From: wesleymccollam Date: Wed, 14 May 2025 11:49:24 -0400 Subject: [PATCH 1/2] add platform export support for pingone_administrator_security resource --- .../platform/pingone_platform_connector.go | 3 +- .../pingone_platform_connector_test.go | 5 ++ .../resources/administrator_security.go | 66 +++++++++++++++++++ .../resources/administrator_security_test.go | 28 ++++++++ .../administrator_security.go | 24 +++++++ 5 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 internal/connector/pingone/platform/resources/administrator_security.go create mode 100644 internal/connector/pingone/platform/resources/administrator_security_test.go create mode 100644 internal/testing/testutils_resource/pingone_platform_testable_resources/administrator_security.go diff --git a/internal/connector/pingone/platform/pingone_platform_connector.go b/internal/connector/pingone/platform/pingone_platform_connector.go index 0852c42b..4c53b17b 100644 --- a/internal/connector/pingone/platform/pingone_platform_connector.go +++ b/internal/connector/pingone/platform/pingone_platform_connector.go @@ -44,12 +44,13 @@ func (c *PingOnePlatformConnector) Export(format, outputDir string, overwriteExp l.Debug().Msgf("Exporting all PingOne Platform Resources...") exportableResources := []connector.ExportableResource{ - resources.AlertChannel(&c.clientInfo), + resources.AdministratorSecurity(&c.clientInfo), resources.Agreement(&c.clientInfo), resources.AgreementEnable(&c.clientInfo), resources.AgreementLocalization(&c.clientInfo), resources.AgreementLocalizationEnable(&c.clientInfo), resources.AgreementLocalizationRevision(&c.clientInfo), + resources.AlertChannel(&c.clientInfo), resources.BrandingSettings(&c.clientInfo), resources.BrandingTheme(&c.clientInfo), resources.BrandingThemeDefault(&c.clientInfo), diff --git a/internal/connector/pingone/platform/pingone_platform_connector_test.go b/internal/connector/pingone/platform/pingone_platform_connector_test.go index 29903b8e..48aabb2e 100644 --- a/internal/connector/pingone/platform/pingone_platform_connector_test.go +++ b/internal/connector/pingone/platform/pingone_platform_connector_test.go @@ -21,6 +21,11 @@ func TestPlatformTerraformPlan(t *testing.T) { testableResource *testutils_resource.TestableResource ignoredErrors []string }{ + { + name: "AdministratorSecurity", + testableResource: pingone_platform_testable_resources.AdministratorSecurity(t, clientInfo), + ignoredErrors: nil, + }, { name: "Agreement", testableResource: pingone_platform_testable_resources.Agreement(t, clientInfo), diff --git a/internal/connector/pingone/platform/resources/administrator_security.go b/internal/connector/pingone/platform/resources/administrator_security.go new file mode 100644 index 00000000..aeb56b6f --- /dev/null +++ b/internal/connector/pingone/platform/resources/administrator_security.go @@ -0,0 +1,66 @@ +// Copyright © 2025 Ping Identity Corporation +// Code generated by ping-cli-generator + +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 = &PingOneAdministratorSecurityResource{} +) + +type PingOneAdministratorSecurityResource struct { + clientInfo *connector.ClientInfo +} + +// Utility method for creating a PingOneAdministratorSecurityResource +func AdministratorSecurity(clientInfo *connector.ClientInfo) *PingOneAdministratorSecurityResource { + return &PingOneAdministratorSecurityResource{ + clientInfo: clientInfo, + } +} + +func (r *PingOneAdministratorSecurityResource) ResourceType() string { + return "pingone_administrator_security" +} + +func (r *PingOneAdministratorSecurityResource) ExportAll() (*[]connector.ImportBlock, error) { + l := logger.Get() + l.Debug().Msgf("Exporting all '%s' Resources...", r.ResourceType()) + + importBlocks := []connector.ImportBlock{} + + ok, err := r.checkAdministratorSecurityData() + if err != nil { + return nil, err + } + if !ok { + return &importBlocks, nil + } + + commentData := map[string]string{ + "Resource Type": r.ResourceType(), + "Export Environment ID": r.clientInfo.PingOneExportEnvironmentID, + } + + importBlock := connector.ImportBlock{ + ResourceType: r.ResourceType(), + ResourceName: r.ResourceType(), + ResourceID: r.clientInfo.PingOneExportEnvironmentID, + CommentInformation: common.GenerateCommentInformation(commentData), + } + + importBlocks = append(importBlocks, importBlock) + + return &importBlocks, nil +} + +func (r *PingOneAdministratorSecurityResource) checkAdministratorSecurityData() (bool, error) { + _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.AdministratorSecurityApi.ReadAdministratorSecurity(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadAdministratorSecurity", r.ResourceType()) +} diff --git a/internal/connector/pingone/platform/resources/administrator_security_test.go b/internal/connector/pingone/platform/resources/administrator_security_test.go new file mode 100644 index 00000000..ad534990 --- /dev/null +++ b/internal/connector/pingone/platform/resources/administrator_security_test.go @@ -0,0 +1,28 @@ +// Copyright © 2025 Ping Identity Corporation +// Code generated by ping-cli-generator + +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/pingone_platform_testable_resources" +) + +func Test_AdministratorSecurity(t *testing.T) { + clientInfo := testutils.GetClientInfo(t) + + tr := pingone_platform_testable_resources.AdministratorSecurity(t, clientInfo) + + expectedImportBlocks := []connector.ImportBlock{ + { + ResourceType: tr.ExportableResource.ResourceType(), + ResourceName: tr.ExportableResource.ResourceType(), + ResourceID: clientInfo.PingOneExportEnvironmentID, + }, + } + + testutils.ValidateImportBlocks(t, tr.ExportableResource, &expectedImportBlocks) +} diff --git a/internal/testing/testutils_resource/pingone_platform_testable_resources/administrator_security.go b/internal/testing/testutils_resource/pingone_platform_testable_resources/administrator_security.go new file mode 100644 index 00000000..7b20a47d --- /dev/null +++ b/internal/testing/testutils_resource/pingone_platform_testable_resources/administrator_security.go @@ -0,0 +1,24 @@ +// Copyright © 2025 Ping Identity Corporation +// Code generated by ping-cli-generator + +package pingone_platform_testable_resources + +import ( + "testing" + + "github.com/pingidentity/pingcli/internal/connector" + "github.com/pingidentity/pingcli/internal/connector/pingone/platform/resources" + "github.com/pingidentity/pingcli/internal/testing/testutils_resource" +) + +func AdministratorSecurity(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.AdministratorSecurity(clientInfo), + } +} From 5d7ec78d6533ae2b03926ed11fcd7621368fbb86 Mon Sep 17 00:00:00 2001 From: wesleymccollam Date: Wed, 14 May 2025 11:51:59 -0400 Subject: [PATCH 2/2] lint fix --- .../pingone/platform/resources/administrator_security.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/connector/pingone/platform/resources/administrator_security.go b/internal/connector/pingone/platform/resources/administrator_security.go index aeb56b6f..4ae80db4 100644 --- a/internal/connector/pingone/platform/resources/administrator_security.go +++ b/internal/connector/pingone/platform/resources/administrator_security.go @@ -62,5 +62,6 @@ func (r *PingOneAdministratorSecurityResource) ExportAll() (*[]connector.ImportB func (r *PingOneAdministratorSecurityResource) checkAdministratorSecurityData() (bool, error) { _, response, err := r.clientInfo.PingOneApiClient.ManagementAPIClient.AdministratorSecurityApi.ReadAdministratorSecurity(r.clientInfo.PingOneContext, r.clientInfo.PingOneExportEnvironmentID).Execute() + return common.CheckSingletonResource(response, err, "ReadAdministratorSecurity", r.ResourceType()) }