Skip to content

Commit

Permalink
resource/aws_ram_resource_share: Address #6528 PR feedback
Browse files Browse the repository at this point in the history
Changes:
* Remove incomplete implementation for provider-level RAM endpoint configuration
* Add covering acceptance testing for updates of all attributes

Output from acceptance testing:

```
--- PASS: TestAccAwsRamResourceShare_basic (13.39s)
--- PASS: TestAccAwsRamResourceShare_Name (20.76s)
--- PASS: TestAccAwsRamResourceShare_AllowExternalPrincipals (21.53s)
--- PASS: TestAccAwsRamResourceShare_Tags (29.14s)
```
  • Loading branch information
bflad committed Jan 15, 2019
1 parent 0983f7d commit 1070d83
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 11 deletions.
4 changes: 1 addition & 3 deletions aws/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,6 @@ type Config struct {
KinesisAnalyticsEndpoint string
KmsEndpoint string
LambdaEndpoint string
RamEndpoint string
RdsEndpoint string
R53Endpoint string
S3Endpoint string
Expand Down Expand Up @@ -445,7 +444,6 @@ func (c *Config) Client() (interface{}, error) {
awsKinesisSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.KinesisEndpoint)})
awsKinesisAnalyticsSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.KinesisAnalyticsEndpoint)})
awsKmsSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.KmsEndpoint)})
awsRamSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.RamEndpoint)})
awsRdsSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.RdsEndpoint)})
awsS3Sess := sess.Copy(&aws.Config{Endpoint: aws.String(c.S3Endpoint)})
awsS3ControlSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.S3ControlEndpoint)})
Expand Down Expand Up @@ -580,7 +578,7 @@ func (c *Config) Client() (interface{}, error) {
client.opsworksconn = opsworks.New(sess)
client.organizationsconn = organizations.New(sess)
client.r53conn = route53.New(r53Sess)
client.ramconn = ram.New(awsRamSess)
client.ramconn = ram.New(sess)
client.rdsconn = rds.New(awsRdsSess)
client.redshiftconn = redshift.New(sess)
client.resourcegroupsconn = resourcegroups.New(sess)
Expand Down
155 changes: 147 additions & 8 deletions aws/resource_aws_ram_resource_share_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,130 @@ func TestAccAwsRamResourceShare_basic(t *testing.T) {
CheckDestroy: testAccCheckAwsRamResourceShareDestroy,
Steps: []resource.TestStep{
{
Config: testAccAwsRamResourceShareConfig_basic(shareName),
Config: testAccAwsRamResourceShareConfigName(shareName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare),
resource.TestCheckResourceAttr(resourceName, "allow_external_principals", "false"),
resource.TestCheckResourceAttr(resourceName, "name", shareName),
resource.TestCheckResourceAttr(resourceName, "tags.%", "0"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestAccAwsRamResourceShare_AllowExternalPrincipals(t *testing.T) {
var resourceShare1, resourceShare2 ram.ResourceShare
resourceName := "aws_ram_resource_share.example"
shareName := fmt.Sprintf("tf-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAwsRamResourceShareDestroy,
Steps: []resource.TestStep{
{
Config: testAccAwsRamResourceShareConfigAllowExternalPrincipals(shareName, false),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare1),
resource.TestCheckResourceAttr(resourceName, "allow_external_principals", "false"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAwsRamResourceShareConfigAllowExternalPrincipals(shareName, true),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare2),
resource.TestCheckResourceAttr(resourceName, "allow_external_principals", "true"),
),
},
},
})
}

func TestAccAwsRamResourceShare_Name(t *testing.T) {
var resourceShare1, resourceShare2 ram.ResourceShare
resourceName := "aws_ram_resource_share.example"
shareName1 := fmt.Sprintf("tf-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
shareName2 := fmt.Sprintf("tf-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAwsRamResourceShareDestroy,
Steps: []resource.TestStep{
{
Config: testAccAwsRamResourceShareConfigName(shareName1),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare1),
resource.TestCheckResourceAttr(resourceName, "name", shareName1),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAwsRamResourceShareConfigName(shareName2),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare2),
resource.TestCheckResourceAttr(resourceName, "name", shareName2),
),
},
},
})
}

func TestAccAwsRamResourceShare_Tags(t *testing.T) {
var resourceShare1, resourceShare2, resourceShare3 ram.ResourceShare
resourceName := "aws_ram_resource_share.example"
shareName := fmt.Sprintf("tf-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAwsRamResourceShareDestroy,
Steps: []resource.TestStep{
{
Config: testAccAwsRamResourceShareConfigTags1(shareName, "key1", "value1"),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare1),
resource.TestCheckResourceAttr(resourceName, "tags.%", "1"),
resource.TestCheckResourceAttr(resourceName, "tags.Environment", "Production"),
resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccAwsRamResourceShareConfigTags2(shareName, "key1", "value1updated", "key2", "value2"),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare2),
resource.TestCheckResourceAttr(resourceName, "tags.%", "2"),
resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"),
resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"),
),
},
{
Config: testAccAwsRamResourceShareConfigTags1(shareName, "key2", "value2"),
Check: resource.ComposeTestCheckFunc(
testAccCheckAwsRamResourceShareExists(resourceName, &resourceShare3),
resource.TestCheckResourceAttr(resourceName, "tags.%", "1"),
resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"),
),
},
},
})
}
Expand Down Expand Up @@ -107,15 +217,44 @@ func testAccCheckAwsRamResourceShareDestroy(s *terraform.State) error {
return nil
}

func testAccAwsRamResourceShareConfig_basic(shareName string) string {
func testAccAwsRamResourceShareConfigAllowExternalPrincipals(shareName string, allowExternalPrincipals bool) string {
return fmt.Sprintf(`
resource "aws_ram_resource_share" "example" {
name = "%s"
allow_external_principals = true
allow_external_principals = %t
name = %q
}
`, allowExternalPrincipals, shareName)
}

tags {
Environment = "Production"
}
func testAccAwsRamResourceShareConfigName(shareName string) string {
return fmt.Sprintf(`
resource "aws_ram_resource_share" "example" {
name = %q
}
`, shareName)
}

func testAccAwsRamResourceShareConfigTags1(shareName, tagKey1, tagValue1 string) string {
return fmt.Sprintf(`
resource "aws_ram_resource_share" "example" {
name = %q
tags = {
%q = %q
}
}
`, shareName, tagKey1, tagValue1)
}

func testAccAwsRamResourceShareConfigTags2(shareName, tagKey1, tagValue1, tagKey2, tagValue2 string) string {
return fmt.Sprintf(`
resource "aws_ram_resource_share" "example" {
name = %q
tags = {
%q = %q
%q = %q
}
}
`, shareName, tagKey1, tagValue1, tagKey2, tagValue2)
}

0 comments on commit 1070d83

Please sign in to comment.