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..4ae80db4 --- /dev/null +++ b/internal/connector/pingone/platform/resources/administrator_security.go @@ -0,0 +1,67 @@ +// 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), + } +}