From 2d8f9ace4a3c1aa8edd80634efd1da9fccf89dce Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Mon, 6 Jan 2020 14:12:35 +0100 Subject: [PATCH 1/7] Adds tag policy as allowed value --- aws/resource_aws_organizations_organization.go | 1 + 1 file changed, 1 insertion(+) diff --git a/aws/resource_aws_organizations_organization.go b/aws/resource_aws_organizations_organization.go index 6aeff3177d80..653c5e4ebd3d 100644 --- a/aws/resource_aws_organizations_organization.go +++ b/aws/resource_aws_organizations_organization.go @@ -137,6 +137,7 @@ func resourceAwsOrganizationsOrganization() *schema.Resource { Type: schema.TypeString, ValidateFunc: validation.StringInSlice([]string{ organizations.PolicyTypeServiceControlPolicy, + organizations.PolicyTypeTagPolicy, }, false), }, }, From c84c05cca7400d663d0d7d089f07ee515f11301a Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Mon, 6 Jan 2020 14:40:16 +0100 Subject: [PATCH 2/7] Adds tests for tag policy --- ...rce_aws_organizations_organization_test.go | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/aws/resource_aws_organizations_organization_test.go b/aws/resource_aws_organizations_organization_test.go index b2321ad613b2..dba26438f60d 100644 --- a/aws/resource_aws_organizations_organization_test.go +++ b/aws/resource_aws_organizations_organization_test.go @@ -129,6 +129,32 @@ func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), ), }, + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeTagPolicy), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAwsOrganizationsOrganizationConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), + ), + }, + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeTagPolicy), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, }, }) } From cfbb7aa0577b48921e2932cce2cd19901d111db2 Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Mon, 6 Jan 2020 15:47:40 +0100 Subject: [PATCH 3/7] More flexible way of handling different policy types --- ...rce_aws_organizations_organization_test.go | 96 ++++++++----------- 1 file changed, 40 insertions(+), 56 deletions(-) diff --git a/aws/resource_aws_organizations_organization_test.go b/aws/resource_aws_organizations_organization_test.go index dba26438f60d..40d55d8c72d9 100644 --- a/aws/resource_aws_organizations_organization_test.go +++ b/aws/resource_aws_organizations_organization_test.go @@ -94,68 +94,52 @@ func testAccAwsOrganizationsOrganization_AwsServiceAccessPrincipals(t *testing.T }) } -func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { - var organization organizations.Organization +func addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(policyType string, testSteps *[]resource.TestStep) { resourceName := "aws_organizations_organization.test" + var organization organizations.Organization + newSteps := *testSteps + + *testSteps = append(newSteps, []resource.TestStep{ + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(policyType), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAwsOrganizationsOrganizationConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), + ), + }, + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(policyType), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, + }) +} + +func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { + var testSteps []resource.TestStep + addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(organizations.PolicyTypeServiceControlPolicy, &testSteps) + addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(organizations.PolicyTypeTagPolicy, &testSteps) + resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccOrganizationsAccountPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckAwsOrganizationsOrganizationDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeServiceControlPolicy), - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccAwsOrganizationsOrganizationConfig, - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), - ), - }, - { - Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeServiceControlPolicy), - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), - ), - }, - { - Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeTagPolicy), - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccAwsOrganizationsOrganizationConfig, - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), - ), - }, - { - Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeTagPolicy), - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), - ), - }, - }, + Steps: testSteps, }) } From 7d946a1f74b58f672f1baa8d0ddff1f9cf8fc118 Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Tue, 7 Jan 2020 13:09:14 +0100 Subject: [PATCH 4/7] More efficient structure --- ...rce_aws_organizations_organization_test.go | 73 ++++++++++--------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/aws/resource_aws_organizations_organization_test.go b/aws/resource_aws_organizations_organization_test.go index 40d55d8c72d9..a312fec6852d 100644 --- a/aws/resource_aws_organizations_organization_test.go +++ b/aws/resource_aws_organizations_organization_test.go @@ -94,47 +94,48 @@ func testAccAwsOrganizationsOrganization_AwsServiceAccessPrincipals(t *testing.T }) } -func addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(policyType string, testSteps *[]resource.TestStep) { +func addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(policyTypes *[]string) *[]resource.TestStep { resourceName := "aws_organizations_organization.test" var organization organizations.Organization - newSteps := *testSteps - - *testSteps = append(newSteps, []resource.TestStep{ - { - Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(policyType), - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), - ), - }, - { - ResourceName: resourceName, - ImportState: true, - ImportStateVerify: true, - }, - { - Config: testAccAwsOrganizationsOrganizationConfig, - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), - ), - }, - { - Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(policyType), - Check: resource.ComposeTestCheckFunc( - testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), - resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), - ), - }, - }) + var testSteps []resource.TestStep + + for _, policyType := range *policyTypes { + testSteps = append(testSteps, []resource.TestStep{ + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(policyType), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAwsOrganizationsOrganizationConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), + ), + }, + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(policyType), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, + }...) + } + return &testSteps } -func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { - var testSteps []resource.TestStep +func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { + policyTypes := []string{organizations.PolicyTypeServiceControlPolicy, organizations.PolicyTypeTagPolicy} + testSteps := *addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(&policyTypes) - addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(organizations.PolicyTypeServiceControlPolicy, &testSteps) - addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(organizations.PolicyTypeTagPolicy, &testSteps) - resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccOrganizationsAccountPreCheck(t) }, Providers: testAccProviders, From 7eecce2e3e367cf55aea0889f072dfa61db44caa Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Tue, 7 Jan 2020 14:27:01 +0100 Subject: [PATCH 5/7] formatting --- aws/resource_aws_organizations_organization_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aws/resource_aws_organizations_organization_test.go b/aws/resource_aws_organizations_organization_test.go index a312fec6852d..da6c6930b602 100644 --- a/aws/resource_aws_organizations_organization_test.go +++ b/aws/resource_aws_organizations_organization_test.go @@ -132,7 +132,7 @@ func addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(policyTypes *[] return &testSteps } -func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { +func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { policyTypes := []string{organizations.PolicyTypeServiceControlPolicy, organizations.PolicyTypeTagPolicy} testSteps := *addTestStepsAwsOrganizationsOrganization_EnabledPolicyTypes(&policyTypes) @@ -140,7 +140,7 @@ func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { PreCheck: func() { testAccPreCheck(t); testAccOrganizationsAccountPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckAwsOrganizationsOrganizationDestroy, - Steps: testSteps, + Steps: testSteps, }) } From 88106186943c3e6e81da758d5ccc45b3d0e1cdc0 Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Mon, 13 Jan 2020 10:05:04 +0100 Subject: [PATCH 6/7] Uses standard method for testing multiple values --- ...rce_aws_organizations_organization_test.go | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/aws/resource_aws_organizations_organization_test.go b/aws/resource_aws_organizations_organization_test.go index b2321ad613b2..5c6228033b13 100644 --- a/aws/resource_aws_organizations_organization_test.go +++ b/aws/resource_aws_organizations_organization_test.go @@ -122,6 +122,7 @@ func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), ), }, + { Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeServiceControlPolicy), Check: resource.ComposeTestCheckFunc( @@ -129,6 +130,32 @@ func testAccAwsOrganizationsOrganization_EnabledPolicyTypes(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), ), }, + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeTagPolicy), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAwsOrganizationsOrganizationConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "0"), + ), + }, + { + Config: testAccAwsOrganizationsOrganizationConfigEnabledPolicyTypes1(organizations.PolicyTypeTagPolicy), + Check: resource.ComposeTestCheckFunc( + testAccCheckAwsOrganizationsOrganizationExists(resourceName, &organization), + resource.TestCheckResourceAttr(resourceName, "enabled_policy_types.#", "1"), + ), + }, }, }) } From 017695bf3c7c876fc5e2e61d0889c6468057e522 Mon Sep 17 00:00:00 2001 From: Nikolai fauskrud Date: Mon, 13 Jan 2020 10:19:34 +0100 Subject: [PATCH 7/7] Adds an example for new value --- website/docs/r/organizations_organization.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/r/organizations_organization.html.markdown b/website/docs/r/organizations_organization.html.markdown index 91bf2c7de4b0..12508e810d5c 100644 --- a/website/docs/r/organizations_organization.html.markdown +++ b/website/docs/r/organizations_organization.html.markdown @@ -28,7 +28,7 @@ resource "aws_organizations_organization" "org" { The following arguments are supported: * `aws_service_access_principals` - (Optional) List of AWS service principal names for which you want to enable integration with your organization. This is typically in the form of a URL, such as service-abbreviation.amazonaws.com. Organization must have `feature_set` set to `ALL`. For additional information, see the [AWS Organizations User Guide](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.html). -* `enabled_policy_types` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `feature_set` set to `ALL`. For additional information about valid policy types (e.g. `SERVICE_CONTROL_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). +* `enabled_policy_types` - (Optional) List of Organizations policy types to enable in the Organization Root. Organization must have `feature_set` set to `ALL`. For additional information about valid policy types (e.g. `SERVICE_CONTROL_POLICY` and `SERVICE_CONTROL_POLICY`), see the [AWS Organizations API Reference](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnablePolicyType.html). * `feature_set` - (Optional) Specify "ALL" (default) or "CONSOLIDATED_BILLING". ## Attributes Reference