From ba1e3969c812c6e6428cb1b1be13093b2db7b047 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 27 Nov 2023 15:11:02 -0500 Subject: [PATCH 1/6] ssoadmin: 'testAccPreCheckInstances' -> 'acctest.PreCheckSSOAdminInstances'. --- .../ssoadmin/account_assignment_test.go | 8 ++--- ...customer_managed_policy_attachment_test.go | 10 +++--- ...instance_access_control_attributes_test.go | 8 ++--- .../ssoadmin/instances_data_source_test.go | 31 +------------------ .../managed_policy_attachment_test.go | 10 +++--- .../permission_set_data_source_test.go | 6 ++-- .../permission_set_inline_policy_test.go | 8 ++--- .../service/ssoadmin/permission_set_test.go | 14 ++++----- .../permissions_boundary_attachment_test.go | 10 +++--- 9 files changed, 38 insertions(+), 67 deletions(-) diff --git a/internal/service/ssoadmin/account_assignment_test.go b/internal/service/ssoadmin/account_assignment_test.go index 94a6fbad6214..e3808c250649 100644 --- a/internal/service/ssoadmin/account_assignment_test.go +++ b/internal/service/ssoadmin/account_assignment_test.go @@ -29,7 +29,7 @@ func TestAccSSOAdminAccountAssignment_Basic_group(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheckIdentityStoreGroupName(t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), @@ -63,7 +63,7 @@ func TestAccSSOAdminAccountAssignment_Basic_user(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheckIdentityStoreUserName(t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), @@ -96,7 +96,7 @@ func TestAccSSOAdminAccountAssignment_MissingPolicy(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheckIdentityStoreUserName(t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), @@ -121,7 +121,7 @@ func TestAccSSOAdminAccountAssignment_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheckIdentityStoreGroupName(t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), diff --git a/internal/service/ssoadmin/customer_managed_policy_attachment_test.go b/internal/service/ssoadmin/customer_managed_policy_attachment_test.go index c37196eb6650..ef47903db41d 100644 --- a/internal/service/ssoadmin/customer_managed_policy_attachment_test.go +++ b/internal/service/ssoadmin/customer_managed_policy_attachment_test.go @@ -27,7 +27,7 @@ func TestAccSSOAdminCustomerManagedPolicyAttachment_basic(t *testing.T) { rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCustomerManagedPolicyAttachmentDestroy(ctx), @@ -59,7 +59,7 @@ func TestAccSSOAdminCustomerManagedPolicyAttachment_forceNew(t *testing.T) { rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCustomerManagedPolicyAttachmentDestroy(ctx), @@ -96,7 +96,7 @@ func TestAccSSOAdminCustomerManagedPolicyAttachment_disappears(t *testing.T) { rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCustomerManagedPolicyAttachmentDestroy(ctx), @@ -122,7 +122,7 @@ func TestAccSSOAdminCustomerManagedPolicyAttachment_Disappears_permissionSet(t * rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCustomerManagedPolicyAttachmentDestroy(ctx), @@ -150,7 +150,7 @@ func TestAccSSOAdminCustomerManagedPolicyAttachment_multipleManagedPolicies(t *t rNamePolicy3 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCustomerManagedPolicyAttachmentDestroy(ctx), diff --git a/internal/service/ssoadmin/instance_access_control_attributes_test.go b/internal/service/ssoadmin/instance_access_control_attributes_test.go index 9abc8f2cf118..60f8f56b0b17 100644 --- a/internal/service/ssoadmin/instance_access_control_attributes_test.go +++ b/internal/service/ssoadmin/instance_access_control_attributes_test.go @@ -37,7 +37,7 @@ func testAccInstanceAccessControlAttributes_basic(t *testing.T) { resourceName := "aws_ssoadmin_instance_access_control_attributes.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceAccessControlAttributesDestroy(ctx), @@ -64,7 +64,7 @@ func testAccInstanceAccessControlAttributes_disappears(t *testing.T) { resourceName := "aws_ssoadmin_instance_access_control_attributes.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetInlinePolicyDestroy(ctx), @@ -86,7 +86,7 @@ func testAccInstanceAccessControlAttributes_multiple(t *testing.T) { resourceName := "aws_ssoadmin_instance_access_control_attributes.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceAccessControlAttributesDestroy(ctx), @@ -113,7 +113,7 @@ func testAccInstanceAccessControlAttributes_update(t *testing.T) { resourceName := "aws_ssoadmin_instance_access_control_attributes.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceAccessControlAttributesDestroy(ctx), diff --git a/internal/service/ssoadmin/instances_data_source_test.go b/internal/service/ssoadmin/instances_data_source_test.go index bb91a53c6a1f..9b2b2a7f3326 100644 --- a/internal/service/ssoadmin/instances_data_source_test.go +++ b/internal/service/ssoadmin/instances_data_source_test.go @@ -4,49 +4,20 @@ package ssoadmin_test import ( - "context" "testing" "github.com/YakDriver/regexache" "github.com/aws/aws-sdk-go/service/ssoadmin" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" - "github.com/hashicorp/terraform-provider-aws/internal/conns" ) -func testAccPreCheckInstances(ctx context.Context, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).SSOAdminConn(ctx) - - var instances []*ssoadmin.InstanceMetadata - err := conn.ListInstancesPagesWithContext(ctx, &ssoadmin.ListInstancesInput{}, func(page *ssoadmin.ListInstancesOutput, lastPage bool) bool { - if page == nil { - return !lastPage - } - - instances = append(instances, page.Instances...) - - return !lastPage - }) - - if acctest.PreCheckSkipError(err) { - t.Skipf("skipping acceptance testing: %s", err) - } - - if len(instances) == 0 { - t.Skip("skipping acceptance testing: No SSO Instance found.") - } - - if err != nil { - t.Fatalf("unexpected PreCheck error: %s", err) - } -} - func TestAccSSOAdminInstancesDataSource_basic(t *testing.T) { ctx := acctest.Context(t) dataSourceName := "data.aws_ssoadmin_instances.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ diff --git a/internal/service/ssoadmin/managed_policy_attachment_test.go b/internal/service/ssoadmin/managed_policy_attachment_test.go index d4037de204fc..d5fb00c717c4 100644 --- a/internal/service/ssoadmin/managed_policy_attachment_test.go +++ b/internal/service/ssoadmin/managed_policy_attachment_test.go @@ -26,7 +26,7 @@ func TestAccSSOAdminManagedPolicyAttachment_basic(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckManagedPolicyAttachmentDestroy(ctx), @@ -58,7 +58,7 @@ func TestAccSSOAdminManagedPolicyAttachment_forceNew(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckManagedPolicyAttachmentDestroy(ctx), @@ -95,7 +95,7 @@ func TestAccSSOAdminManagedPolicyAttachment_disappears(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckManagedPolicyAttachmentDestroy(ctx), @@ -119,7 +119,7 @@ func TestAccSSOAdminManagedPolicyAttachment_Disappears_permissionSet(t *testing. rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckManagedPolicyAttachmentDestroy(ctx), @@ -144,7 +144,7 @@ func TestAccSSOAdminManagedPolicyAttachment_multipleManagedPolicies(t *testing.T rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckManagedPolicyAttachmentDestroy(ctx), diff --git a/internal/service/ssoadmin/permission_set_data_source_test.go b/internal/service/ssoadmin/permission_set_data_source_test.go index f584802de3ca..9f4bb8626610 100644 --- a/internal/service/ssoadmin/permission_set_data_source_test.go +++ b/internal/service/ssoadmin/permission_set_data_source_test.go @@ -21,7 +21,7 @@ func TestAccSSOAdminPermissionSetDataSource_arn(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ @@ -47,7 +47,7 @@ func TestAccSSOAdminPermissionSetDataSource_name(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ @@ -69,7 +69,7 @@ func TestAccSSOAdminPermissionSetDataSource_name(t *testing.T) { func TestAccSSOAdminPermissionSetDataSource_nonExistent(t *testing.T) { ctx := acctest.Context(t) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ diff --git a/internal/service/ssoadmin/permission_set_inline_policy_test.go b/internal/service/ssoadmin/permission_set_inline_policy_test.go index 2d5b61aa41de..cd75e71014b1 100644 --- a/internal/service/ssoadmin/permission_set_inline_policy_test.go +++ b/internal/service/ssoadmin/permission_set_inline_policy_test.go @@ -26,7 +26,7 @@ func TestAccSSOAdminPermissionSetInlinePolicy_basic(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetInlinePolicyDestroy(ctx), @@ -56,7 +56,7 @@ func TestAccSSOAdminPermissionSetInlinePolicy_update(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetInlinePolicyDestroy(ctx), @@ -89,7 +89,7 @@ func TestAccSSOAdminPermissionSetInlinePolicy_disappears(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetInlinePolicyDestroy(ctx), @@ -113,7 +113,7 @@ func TestAccSSOAdminPermissionSetInlinePolicy_Disappears_permissionSet(t *testin rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetInlinePolicyDestroy(ctx), diff --git a/internal/service/ssoadmin/permission_set_test.go b/internal/service/ssoadmin/permission_set_test.go index 3de22399db58..67df100fc7ca 100644 --- a/internal/service/ssoadmin/permission_set_test.go +++ b/internal/service/ssoadmin/permission_set_test.go @@ -24,7 +24,7 @@ func TestAccSSOAdminPermissionSet_basic(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), @@ -52,7 +52,7 @@ func TestAccSSOAdminPermissionSet_tags(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), @@ -107,7 +107,7 @@ func TestAccSSOAdminPermissionSet_updateDescription(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), @@ -141,7 +141,7 @@ func TestAccSSOAdminPermissionSet_updateRelayState(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), @@ -175,7 +175,7 @@ func TestAccSSOAdminPermissionSet_updateSessionDuration(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), @@ -211,7 +211,7 @@ func TestAccSSOAdminPermissionSet_RelayState_updateSessionDuration(t *testing.T) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), @@ -251,7 +251,7 @@ func TestAccSSOAdminPermissionSet_mixedPolicyAttachments(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionSetDestroy(ctx), diff --git a/internal/service/ssoadmin/permissions_boundary_attachment_test.go b/internal/service/ssoadmin/permissions_boundary_attachment_test.go index cd6e9c1d52e9..f0cd39a70494 100644 --- a/internal/service/ssoadmin/permissions_boundary_attachment_test.go +++ b/internal/service/ssoadmin/permissions_boundary_attachment_test.go @@ -28,7 +28,7 @@ func TestAccSSOAdminPermissionsBoundaryAttachment_basic(t *testing.T) { rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionsBoundaryAttachmentDestroy(ctx), @@ -60,7 +60,7 @@ func TestAccSSOAdminPermissionsBoundaryAttachment_forceNew(t *testing.T) { rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionsBoundaryAttachmentDestroy(ctx), @@ -97,7 +97,7 @@ func TestAccSSOAdminPermissionsBoundaryAttachment_disappears(t *testing.T) { rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionsBoundaryAttachmentDestroy(ctx), @@ -123,7 +123,7 @@ func TestAccSSOAdminPermissionsBoundaryAttachment_Disappears_permissionSet(t *te rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionsBoundaryAttachmentDestroy(ctx), @@ -147,7 +147,7 @@ func TestAccSSOAdminPermissionsBoundaryAttachment_managedPolicyAndCustomerManage rNamePolicy2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheckInstances(ctx, t) }, + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, ssoadmin.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckPermissionsBoundaryAttachmentDestroy(ctx), From bf287137aff0c581b2e4c54097cefb1908c51863 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 27 Nov 2023 15:13:25 -0500 Subject: [PATCH 2/6] identitystore: 'testAccPreCheckSSOAdminInstances' -> 'acctest.PreCheckSSOAdminInstances'. --- .../identitystore/group_data_source_test.go | 36 ++----------------- .../identitystore/group_membership_test.go | 2 +- internal/service/identitystore/group_test.go | 4 +-- .../identitystore/user_data_source_test.go | 10 +++--- internal/service/identitystore/user_test.go | 2 +- 5 files changed, 12 insertions(+), 42 deletions(-) diff --git a/internal/service/identitystore/group_data_source_test.go b/internal/service/identitystore/group_data_source_test.go index e18a683f52f8..45270b335fb2 100644 --- a/internal/service/identitystore/group_data_source_test.go +++ b/internal/service/identitystore/group_data_source_test.go @@ -4,16 +4,13 @@ package identitystore_test import ( - "context" "fmt" "testing" "github.com/aws/aws-sdk-go/service/identitystore" - "github.com/aws/aws-sdk-go/service/ssoadmin" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" - "github.com/hashicorp/terraform-provider-aws/internal/conns" ) func TestAccIdentityStoreGroupDataSource_filterDisplayName(t *testing.T) { @@ -25,7 +22,7 @@ func TestAccIdentityStoreGroupDataSource_filterDisplayName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -53,7 +50,7 @@ func TestAccIdentityStoreGroupDataSource_uniqueAttributeDisplayName(t *testing.T resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -81,7 +78,7 @@ func TestAccIdentityStoreGroupDataSource_filterDisplayNameAndGroupID(t *testing. resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -100,33 +97,6 @@ func TestAccIdentityStoreGroupDataSource_filterDisplayNameAndGroupID(t *testing. }) } -func testAccPreCheckSSOAdminInstances(ctx context.Context, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).SSOAdminConn(ctx) - - var instances []*ssoadmin.InstanceMetadata - err := conn.ListInstancesPagesWithContext(ctx, &ssoadmin.ListInstancesInput{}, func(page *ssoadmin.ListInstancesOutput, lastPage bool) bool { - if page == nil { - return !lastPage - } - - instances = append(instances, page.Instances...) - - return !lastPage - }) - - if acctest.PreCheckSkipError(err) { - t.Skipf("skipping acceptance testing: %s", err) - } - - if len(instances) == 0 { - t.Skip("skipping acceptance testing: No SSO Instance found.") - } - - if err != nil { - t.Fatalf("unexpected PreCheck error: %s", err) - } -} - func testAccGroupDataSourceConfig_base(name string) string { return fmt.Sprintf(` data "aws_ssoadmin_instances" "test" {} diff --git a/internal/service/identitystore/group_membership_test.go b/internal/service/identitystore/group_membership_test.go index ccb7176e3408..6449ddf475bb 100644 --- a/internal/service/identitystore/group_membership_test.go +++ b/internal/service/identitystore/group_membership_test.go @@ -75,7 +75,7 @@ func TestAccIdentityStoreGroupMembership_disappears(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), diff --git a/internal/service/identitystore/group_test.go b/internal/service/identitystore/group_test.go index 019928c38ed2..e0a97166cd38 100644 --- a/internal/service/identitystore/group_test.go +++ b/internal/service/identitystore/group_test.go @@ -64,7 +64,7 @@ func TestAccIdentityStoreGroup_disappears(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), @@ -94,7 +94,7 @@ func TestAccIdentityStoreGroup_descriptionChange(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), diff --git a/internal/service/identitystore/user_data_source_test.go b/internal/service/identitystore/user_data_source_test.go index 833f8acc3bec..644d4227542d 100644 --- a/internal/service/identitystore/user_data_source_test.go +++ b/internal/service/identitystore/user_data_source_test.go @@ -23,7 +23,7 @@ func TestAccIdentityStoreUserDataSource_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -65,7 +65,7 @@ func TestAccIdentityStoreUserDataSource_filterUserName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -92,7 +92,7 @@ func TestAccIdentityStoreUserDataSource_uniqueAttributeUserName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -119,7 +119,7 @@ func TestAccIdentityStoreUserDataSource_email(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -146,7 +146,7 @@ func TestAccIdentityStoreUserDataSource_userID(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, identitystore.EndpointsID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/identitystore/user_test.go b/internal/service/identitystore/user_test.go index 6560b3933f52..ac1161e6606d 100644 --- a/internal/service/identitystore/user_test.go +++ b/internal/service/identitystore/user_test.go @@ -86,7 +86,7 @@ func TestAccIdentityStoreUser_disappears(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheckSSOAdminInstances(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), From 96c5926e20e34f1b478a297bfa630c0f56a19c0f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 27 Nov 2023 15:19:15 -0500 Subject: [PATCH 3/6] identitystore: 'testAccPreCheck' -> 'acctest.PreCheckSSOAdminInstances'. --- .../identitystore/group_membership_test.go | 7 +- internal/service/identitystore/group_test.go | 4 +- internal/service/identitystore/user_test.go | 69 +++++-------------- 3 files changed, 21 insertions(+), 59 deletions(-) diff --git a/internal/service/identitystore/group_membership_test.go b/internal/service/identitystore/group_membership_test.go index 6449ddf475bb..73422825f90b 100644 --- a/internal/service/identitystore/group_membership_test.go +++ b/internal/service/identitystore/group_membership_test.go @@ -37,7 +37,7 @@ func TestAccIdentityStoreGroupMembership_basic(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -76,7 +76,6 @@ func TestAccIdentityStoreGroupMembership_disappears(t *testing.T) { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) acctest.PreCheckSSOAdminInstances(ctx, t) - testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -109,7 +108,7 @@ func TestAccIdentityStoreGroupMembership_GroupId(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -153,7 +152,7 @@ func TestAccIdentityStoreGroupMembership_MemberId(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/identitystore/group_test.go b/internal/service/identitystore/group_test.go index e0a97166cd38..b97006084642 100644 --- a/internal/service/identitystore/group_test.go +++ b/internal/service/identitystore/group_test.go @@ -30,7 +30,7 @@ func TestAccIdentityStoreGroup_basic(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -65,7 +65,6 @@ func TestAccIdentityStoreGroup_disappears(t *testing.T) { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) acctest.PreCheckSSOAdminInstances(ctx, t) - testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -95,7 +94,6 @@ func TestAccIdentityStoreGroup_descriptionChange(t *testing.T) { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) acctest.PreCheckSSOAdminInstances(ctx, t) - testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, diff --git a/internal/service/identitystore/user_test.go b/internal/service/identitystore/user_test.go index ac1161e6606d..d3bd83b26948 100644 --- a/internal/service/identitystore/user_test.go +++ b/internal/service/identitystore/user_test.go @@ -9,10 +9,7 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/identitystore" - "github.com/aws/aws-sdk-go/service/ssoadmin" - "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -34,7 +31,7 @@ func TestAccIdentityStoreUser_basic(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -87,7 +84,6 @@ func TestAccIdentityStoreUser_disappears(t *testing.T) { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) acctest.PreCheckSSOAdminInstances(ctx, t) - testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -115,7 +111,7 @@ func TestAccIdentityStoreUser_Addresses(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -210,7 +206,7 @@ func TestAccIdentityStoreUser_Emails(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -287,7 +283,7 @@ func TestAccIdentityStoreUser_Locale(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -338,7 +334,7 @@ func TestAccIdentityStoreUser_NameFamilyName(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -377,7 +373,7 @@ func TestAccIdentityStoreUser_NameFormatted(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -428,7 +424,7 @@ func TestAccIdentityStoreUser_NameGivenName(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -467,7 +463,7 @@ func TestAccIdentityStoreUser_NameHonorificPrefix(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -506,7 +502,7 @@ func TestAccIdentityStoreUser_NameHonorificSuffix(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -557,7 +553,7 @@ func TestAccIdentityStoreUser_NameMiddleName(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -608,7 +604,7 @@ func TestAccIdentityStoreUser_NickName(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -659,7 +655,7 @@ func TestAccIdentityStoreUser_PhoneNumbers(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -736,7 +732,7 @@ func TestAccIdentityStoreUser_PreferredLanguage(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -787,7 +783,7 @@ func TestAccIdentityStoreUser_ProfileURL(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -838,7 +834,7 @@ func TestAccIdentityStoreUser_Timezone(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -889,7 +885,7 @@ func TestAccIdentityStoreUser_Title(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -940,7 +936,7 @@ func TestAccIdentityStoreUser_UserType(t *testing.T) { PreCheck: func() { acctest.PreCheck(ctx, t) acctest.PreCheckPartitionHasService(t, names.IdentityStoreEndpointID) - testAccPreCheck(ctx, t) + acctest.PreCheckSSOAdminInstances(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, names.IdentityStoreEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, @@ -1031,37 +1027,6 @@ func testAccCheckUserExists(ctx context.Context, n string, v *identitystore.Desc } } -func testAccPreCheck(ctx context.Context, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).IdentityStoreClient(ctx) - ssoadminConn := acctest.Provider.Meta().(*conns.AWSClient).SSOAdminConn(ctx) - - instances, err := ssoadminConn.ListInstancesWithContext(ctx, &ssoadmin.ListInstancesInput{MaxResults: aws.Int64(1)}) - - if acctest.PreCheckSkipError(err) || tfawserr.ErrMessageContains(err, ssoadmin.ErrCodeAccessDeniedException, "is not authorized to perform: sso:ListInstances") { - t.Skipf("skipping acceptance testing: %s", err) - } - - if err != nil { - t.Fatalf("unexpected PreCheck error: %s", err) - } - - if len(instances.Instances) != 1 { - t.Fatalf("expected to find at least one SSO instance") - } - - _, err = conn.ListUsers(ctx, &identitystore.ListUsersInput{ - IdentityStoreId: instances.Instances[0].IdentityStoreId, - }) - - if acctest.PreCheckSkipError(err) { - t.Skipf("skipping acceptance testing: %s", err) - } - - if err != nil { - t.Fatalf("unexpected PreCheck error: %s", err) - } -} - func testAccUserConfig_basic(rName string) string { return fmt.Sprintf(` data "aws_ssoadmin_instances" "test" {} From acda1b62adb89ac9913ca84494e8eaff4ccd10d7 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 27 Nov 2023 17:15:20 -0500 Subject: [PATCH 4/6] r/aws_s3control_access_grants_instance: Add `identity_center_arn` argument. --- .changelog/#####.txt | 3 + .../s3control/access_grants_instance.go | 65 ++++++++++++++++++- .../s3control/access_grants_instance_test.go | 51 +++++++++++++++ .../service/s3control/access_grants_test.go | 7 +- ...ntrol_access_grants_instance.html.markdown | 1 + 5 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 .changelog/#####.txt diff --git a/.changelog/#####.txt b/.changelog/#####.txt new file mode 100644 index 000000000000..2771a3a8d6f3 --- /dev/null +++ b/.changelog/#####.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_s3control_access_grants_instance: Add `identity_center_arn` argument +``` diff --git a/internal/service/s3control/access_grants_instance.go b/internal/service/s3control/access_grants_instance.go index a7e5f9f983cb..e94f9f32e76a 100644 --- a/internal/service/s3control/access_grants_instance.go +++ b/internal/service/s3control/access_grants_instance.go @@ -21,6 +21,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/errs/fwdiag" "github.com/hashicorp/terraform-provider-aws/internal/framework" "github.com/hashicorp/terraform-provider-aws/internal/framework/flex" + fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types" fwvalidators "github.com/hashicorp/terraform-provider-aws/internal/framework/validators" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" @@ -69,7 +70,11 @@ func (r *accessGrantsInstanceResource) Schema(ctx context.Context, request resou fwvalidators.AWSAccountID(), }, }, - names.AttrID: framework.IDAttribute(), + names.AttrID: framework.IDAttribute(), + "identity_center_arn": schema.StringAttribute{ + CustomType: fwtypes.ARNType, + Optional: true, + }, names.AttrTags: tftags.TagsAttribute(), names.AttrTagsAll: tftags.TagsAttributeComputedOnly(), }, @@ -91,8 +96,9 @@ func (r *accessGrantsInstanceResource) Create(ctx context.Context, request resou data.AccountID = types.StringValue(r.Meta().AccountID) } input := &s3control.CreateAccessGrantsInstanceInput{ - AccountId: flex.StringFromFramework(ctx, data.AccountID), - Tags: getTagsIn(ctx), + AccountId: flex.StringFromFramework(ctx, data.AccountID), + IdentityCenterArn: flex.StringFromFramework(ctx, data.IdentityCenterARN), + Tags: getTagsIn(ctx), } output, err := conn.CreateAccessGrantsInstance(ctx, input) @@ -146,6 +152,11 @@ func (r *accessGrantsInstanceResource) Read(ctx context.Context, request resourc // Set attributes for import. data.AccessGrantsInstanceARN = flex.StringToFramework(ctx, output.AccessGrantsInstanceArn) data.AccessGrantsInstanceID = flex.StringToFramework(ctx, output.AccessGrantsInstanceId) + if output.IdentityCenterArn == nil { + data.IdentityCenterARN = fwtypes.ARNNull() + } else { + data.IdentityCenterARN = fwtypes.ARNValue(aws.ToString(output.IdentityCenterArn)) + } tags, err := listTags(ctx, conn, data.AccessGrantsInstanceARN.ValueString(), data.AccountID.ValueString()) @@ -177,6 +188,24 @@ func (r *accessGrantsInstanceResource) Update(ctx context.Context, request resou conn := r.Meta().S3ControlClient(ctx) + if oldARN, newARN := old.IdentityCenterARN, new.IdentityCenterARN; !newARN.Equal(oldARN) { + if !oldARN.IsNull() { + if err := disassociateAccessGrantsInstanceIdentityCenterInstance(ctx, conn, old.ID.ValueString()); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("dissociating S3 Access Grants Instance (%s) IAM Identity Center instance", old.ID.ValueString()), err.Error()) + + return + } + } + + if !newARN.IsNull() { + if err := associateAccessGrantsInstanceIdentityCenterInstance(ctx, conn, new.ID.ValueString(), newARN.ValueString()); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("associating S3 Access Grants Instance (%s) IAM Identity Center instance (%s)", new.ID.ValueString(), newARN.ValueString()), err.Error()) + + return + } + } + } + if oldTagsAll, newTagsAll := old.TagsAll, new.TagsAll; !newTagsAll.Equal(oldTagsAll) { if err := updateTags(ctx, conn, new.AccessGrantsInstanceARN.ValueString(), new.AccountID.ValueString(), oldTagsAll, newTagsAll); err != nil { response.Diagnostics.AddError(fmt.Sprintf("updating tags for S3 Access Grants Instance (%s)", new.ID.ValueString()), err.Error()) @@ -199,6 +228,14 @@ func (r *accessGrantsInstanceResource) Delete(ctx context.Context, request resou conn := r.Meta().S3ControlClient(ctx) + if !data.IdentityCenterARN.IsNull() { + if err := disassociateAccessGrantsInstanceIdentityCenterInstance(ctx, conn, data.ID.ValueString()); err != nil { + response.Diagnostics.AddError(fmt.Sprintf("dissociating S3 Access Grants Instance (%s) IAM Identity Center instance", data.ID.ValueString()), err.Error()) + + return + } + } + _, err := conn.DeleteAccessGrantsInstance(ctx, &s3control.DeleteAccessGrantsInstanceInput{ AccountId: flex.StringFromFramework(ctx, data.AccountID), }) @@ -218,6 +255,27 @@ func (r *accessGrantsInstanceResource) ModifyPlan(ctx context.Context, request r r.SetTagsAll(ctx, request, response) } +func associateAccessGrantsInstanceIdentityCenterInstance(ctx context.Context, conn *s3control.Client, accountID, identityCenterARN string) error { + input := &s3control.AssociateAccessGrantsIdentityCenterInput{ + AccountId: aws.String(accountID), + IdentityCenterArn: aws.String(identityCenterARN), + } + + _, err := conn.AssociateAccessGrantsIdentityCenter(ctx, input) + + return err +} + +func disassociateAccessGrantsInstanceIdentityCenterInstance(ctx context.Context, conn *s3control.Client, accountID string) error { + input := &s3control.DissociateAccessGrantsIdentityCenterInput{ + AccountId: aws.String(accountID), + } + + _, err := conn.DissociateAccessGrantsIdentityCenter(ctx, input) + + return err +} + func findAccessGrantsInstance(ctx context.Context, conn *s3control.Client, accountID string) (*s3control.GetAccessGrantsInstanceOutput, error) { input := &s3control.GetAccessGrantsInstanceInput{ AccountId: aws.String(accountID), @@ -248,6 +306,7 @@ type accessGrantsInstanceResourceModel struct { AccessGrantsInstanceID types.String `tfsdk:"access_grants_instance_id"` AccountID types.String `tfsdk:"account_id"` ID types.String `tfsdk:"id"` + IdentityCenterARN fwtypes.ARN `tfsdk:"identity_center_arn"` Tags types.Map `tfsdk:"tags"` TagsAll types.Map `tfsdk:"tags_all"` } diff --git a/internal/service/s3control/access_grants_instance_test.go b/internal/service/s3control/access_grants_instance_test.go index 33fc46a6ca9a..81f8d040a56b 100644 --- a/internal/service/s3control/access_grants_instance_test.go +++ b/internal/service/s3control/access_grants_instance_test.go @@ -34,6 +34,7 @@ func testAccAccessGrantsInstance_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "access_grants_instance_arn"), resource.TestCheckResourceAttrSet(resourceName, "access_grants_instance_id"), acctest.CheckResourceAttrAccountID(resourceName, "account_id"), + resource.TestCheckNoResourceAttr(resourceName, "identity_center_arn"), resource.TestCheckResourceAttr(resourceName, "tags.%", "0"), ), }, @@ -112,6 +113,46 @@ func testAccAccessGrantsInstance_tags(t *testing.T) { }) } +func testAccAccessGrantsInstance_identityCenter(t *testing.T) { + ctx := acctest.Context(t) + resourceName := "aws_s3control_access_grants_instance.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckSSOAdminInstances(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, names.S3ControlEndpointID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckAccessGrantsInstanceDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccAccessGrantsInstanceConfig_identityCenter(), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAccessGrantsInstanceExists(ctx, resourceName), + resource.TestCheckResourceAttrSet(resourceName, "identity_center_arn"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAccessGrantsInstanceConfig_basic(), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAccessGrantsInstanceExists(ctx, resourceName), + resource.TestCheckNoResourceAttr(resourceName, "identity_center_arn"), + ), + }, + { + Config: testAccAccessGrantsInstanceConfig_identityCenter(), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAccessGrantsInstanceExists(ctx, resourceName), + resource.TestCheckResourceAttrSet(resourceName, "identity_center_arn"), + ), + }, + }, + }) +} + func testAccCheckAccessGrantsInstanceDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { conn := acctest.Provider.Meta().(*conns.AWSClient).S3ControlClient(ctx) @@ -179,3 +220,13 @@ resource "aws_s3control_access_grants_instance" "test" { } `, tagKey1, tagValue1, tagKey2, tagValue2) } + +func testAccAccessGrantsInstanceConfig_identityCenter() string { + return ` +data "aws_ssoadmin_instances" "test" {} + +resource "aws_s3control_access_grants_instance" "test" { + identity_center_arn = tolist(data.aws_ssoadmin_instances.test.arns)[0] +} +` +} diff --git a/internal/service/s3control/access_grants_test.go b/internal/service/s3control/access_grants_test.go index 47697e72f050..796eaa31b5de 100644 --- a/internal/service/s3control/access_grants_test.go +++ b/internal/service/s3control/access_grants_test.go @@ -14,9 +14,10 @@ func TestAccS3ControlAccessGrants_serial(t *testing.T) { testCases := map[string]map[string]func(t *testing.T){ "Instance": { - "basic": testAccAccessGrantsInstance_basic, - "disappears": testAccAccessGrantsInstance_disappears, - "tags": testAccAccessGrantsInstance_tags, + "basic": testAccAccessGrantsInstance_basic, + "disappears": testAccAccessGrantsInstance_disappears, + "tags": testAccAccessGrantsInstance_tags, + "identityCenter": testAccAccessGrantsInstance_identityCenter, }, "Location": { "basic": testAccAccessGrantsLocation_basic, diff --git a/website/docs/r/s3control_access_grants_instance.html.markdown b/website/docs/r/s3control_access_grants_instance.html.markdown index bab11e3cd43e..fe02319d2b72 100644 --- a/website/docs/r/s3control_access_grants_instance.html.markdown +++ b/website/docs/r/s3control_access_grants_instance.html.markdown @@ -22,6 +22,7 @@ resource "aws_s3control_access_grants_instance" "example" {} This resource supports the following arguments: * `account_id` - (Optional) The AWS account ID for the S3 Access Grants instance. Defaults to automatically determined account ID of the Terraform AWS provider. +* `identity_center_arn` - (Optional) The ARN of the AWS IAM Identity Center instance associated with the S3 Access Grants instance. * `tags` - (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. ## Attribute Reference From d9f34c0f521d54a2690b179cc0c9738a0565cfdb Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 27 Nov 2023 17:38:20 -0500 Subject: [PATCH 5/6] r/aws_s3control_access_grants_instance: Add 'identity_center_application_arn' attribute. --- .changelog/#####.txt | 2 +- .../s3control/access_grants_instance.go | 28 +++++++++++-------- .../s3control/access_grants_instance_test.go | 11 ++++++-- ...ntrol_access_grants_instance.html.markdown | 11 ++++++++ 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/.changelog/#####.txt b/.changelog/#####.txt index 2771a3a8d6f3..f9d16c156257 100644 --- a/.changelog/#####.txt +++ b/.changelog/#####.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/aws_s3control_access_grants_instance: Add `identity_center_arn` argument +resource/aws_s3control_access_grants_instance: Add `identity_center_arn` argument and `identity_center_application_arn` attribute ``` diff --git a/internal/service/s3control/access_grants_instance.go b/internal/service/s3control/access_grants_instance.go index e94f9f32e76a..8adcc8ce6726 100644 --- a/internal/service/s3control/access_grants_instance.go +++ b/internal/service/s3control/access_grants_instance.go @@ -71,6 +71,12 @@ func (r *accessGrantsInstanceResource) Schema(ctx context.Context, request resou }, }, names.AttrID: framework.IDAttribute(), + "identity_center_application_arn": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, "identity_center_arn": schema.StringAttribute{ CustomType: fwtypes.ARNType, Optional: true, @@ -112,6 +118,7 @@ func (r *accessGrantsInstanceResource) Create(ctx context.Context, request resou // Set values for unknowns. data.AccessGrantsInstanceARN = flex.StringToFramework(ctx, output.AccessGrantsInstanceArn) data.AccessGrantsInstanceID = flex.StringToFramework(ctx, output.AccessGrantsInstanceId) + data.IdentityCenterApplicationARN = flex.StringToFramework(ctx, output.IdentityCenterArn) data.setID() response.Diagnostics.Append(response.State.Set(ctx, &data)...) @@ -152,11 +159,7 @@ func (r *accessGrantsInstanceResource) Read(ctx context.Context, request resourc // Set attributes for import. data.AccessGrantsInstanceARN = flex.StringToFramework(ctx, output.AccessGrantsInstanceArn) data.AccessGrantsInstanceID = flex.StringToFramework(ctx, output.AccessGrantsInstanceId) - if output.IdentityCenterArn == nil { - data.IdentityCenterARN = fwtypes.ARNNull() - } else { - data.IdentityCenterARN = fwtypes.ARNValue(aws.ToString(output.IdentityCenterArn)) - } + data.IdentityCenterApplicationARN = flex.StringToFramework(ctx, output.IdentityCenterArn) tags, err := listTags(ctx, conn, data.AccessGrantsInstanceARN.ValueString(), data.AccountID.ValueString()) @@ -302,13 +305,14 @@ func findAccessGrantsInstance(ctx context.Context, conn *s3control.Client, accou } type accessGrantsInstanceResourceModel struct { - AccessGrantsInstanceARN types.String `tfsdk:"access_grants_instance_arn"` - AccessGrantsInstanceID types.String `tfsdk:"access_grants_instance_id"` - AccountID types.String `tfsdk:"account_id"` - ID types.String `tfsdk:"id"` - IdentityCenterARN fwtypes.ARN `tfsdk:"identity_center_arn"` - Tags types.Map `tfsdk:"tags"` - TagsAll types.Map `tfsdk:"tags_all"` + AccessGrantsInstanceARN types.String `tfsdk:"access_grants_instance_arn"` + AccessGrantsInstanceID types.String `tfsdk:"access_grants_instance_id"` + AccountID types.String `tfsdk:"account_id"` + ID types.String `tfsdk:"id"` + IdentityCenterApplicationARN types.String `tfsdk:"identity_center_application_arn"` + IdentityCenterARN fwtypes.ARN `tfsdk:"identity_center_arn"` + Tags types.Map `tfsdk:"tags"` + TagsAll types.Map `tfsdk:"tags_all"` } func (data *accessGrantsInstanceResourceModel) InitFromID() error { diff --git a/internal/service/s3control/access_grants_instance_test.go b/internal/service/s3control/access_grants_instance_test.go index 81f8d040a56b..d4153202fbf3 100644 --- a/internal/service/s3control/access_grants_instance_test.go +++ b/internal/service/s3control/access_grants_instance_test.go @@ -34,6 +34,7 @@ func testAccAccessGrantsInstance_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "access_grants_instance_arn"), resource.TestCheckResourceAttrSet(resourceName, "access_grants_instance_id"), acctest.CheckResourceAttrAccountID(resourceName, "account_id"), + resource.TestCheckNoResourceAttr(resourceName, "identity_center_application_arn"), resource.TestCheckNoResourceAttr(resourceName, "identity_center_arn"), resource.TestCheckResourceAttr(resourceName, "tags.%", "0"), ), @@ -127,18 +128,21 @@ func testAccAccessGrantsInstance_identityCenter(t *testing.T) { Config: testAccAccessGrantsInstanceConfig_identityCenter(), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAccessGrantsInstanceExists(ctx, resourceName), + resource.TestCheckResourceAttrSet(resourceName, "identity_center_application_arn"), resource.TestCheckResourceAttrSet(resourceName, "identity_center_arn"), ), }, { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"identity_center_arn"}, }, { Config: testAccAccessGrantsInstanceConfig_basic(), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAccessGrantsInstanceExists(ctx, resourceName), + resource.TestCheckNoResourceAttr(resourceName, "identity_center_application_arn"), resource.TestCheckNoResourceAttr(resourceName, "identity_center_arn"), ), }, @@ -146,6 +150,7 @@ func testAccAccessGrantsInstance_identityCenter(t *testing.T) { Config: testAccAccessGrantsInstanceConfig_identityCenter(), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAccessGrantsInstanceExists(ctx, resourceName), + resource.TestCheckResourceAttrSet(resourceName, "identity_center_application_arn"), resource.TestCheckResourceAttrSet(resourceName, "identity_center_arn"), ), }, diff --git a/website/docs/r/s3control_access_grants_instance.html.markdown b/website/docs/r/s3control_access_grants_instance.html.markdown index fe02319d2b72..9deb4d25a55d 100644 --- a/website/docs/r/s3control_access_grants_instance.html.markdown +++ b/website/docs/r/s3control_access_grants_instance.html.markdown @@ -13,10 +13,20 @@ You can have one S3 Access Grants instance per Region in your account. ## Example Usage +### Basic Usage + ```terraform resource "aws_s3control_access_grants_instance" "example" {} ``` +### AWS IAM Identity Center + +```terraform +resource "aws_s3control_access_grants_instance" "example" { + identity_center_arn = "arn:aws:sso:::instance/ssoins-890759e9c7bfdc1d" +} +``` + ## Argument Reference This resource supports the following arguments: @@ -31,6 +41,7 @@ This resource exports the following attributes in addition to the arguments abov * `access_grants_instance_arn` - Amazon Resource Name (ARN) of the S3 Access Grants instance. * `access_grants_instance_id` - Unique ID of the S3 Access Grants instance. +* `identity_center_application_arn` - The ARN of the AWS IAM Identity Center instance application; a subresource of the original Identity Center instance. * `tags_all` - A map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block). ## Import From c6ff09d0801625990b3c2bd810fc2508447a5366 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 27 Nov 2023 17:42:07 -0500 Subject: [PATCH 6/6] Correct CHANGELOG entry file name. --- .changelog/{#####.txt => 34582.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changelog/{#####.txt => 34582.txt} (100%) diff --git a/.changelog/#####.txt b/.changelog/34582.txt similarity index 100% rename from .changelog/#####.txt rename to .changelog/34582.txt