From d57cd77ff10648fb2bd3409bec50ed6a975363e8 Mon Sep 17 00:00:00 2001 From: Brian Flad Date: Sun, 10 Mar 2019 11:05:20 -0400 Subject: [PATCH] resource/aws_s3_bucket: Continue supporting empty string bucket argument Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/7868 Output from acceptance testing before code change: ``` --- FAIL: TestAccAWSS3Bucket_Bucket_EmptyString (2.15s) testing.go:538: Step 0 error: config is invalid: aws_s3_bucket.test: expected length of bucket to be in the range (3 - 63), got ``` Output from acceptance testing: ``` --- PASS: TestAccAWSS3Bucket_Bucket_EmptyString (26.50s) ``` --- aws/resource_aws_s3_bucket.go | 2 +- aws/resource_aws_s3_bucket_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/aws/resource_aws_s3_bucket.go b/aws/resource_aws_s3_bucket.go index ae935d56baa3..22ac59867de5 100644 --- a/aws/resource_aws_s3_bucket.go +++ b/aws/resource_aws_s3_bucket.go @@ -39,7 +39,7 @@ func resourceAwsS3Bucket() *schema.Resource { Computed: true, ForceNew: true, ConflictsWith: []string{"bucket_prefix"}, - ValidateFunc: validation.StringLenBetween(3, 63), + ValidateFunc: validation.StringLenBetween(0, 63), }, "bucket_prefix": { Type: schema.TypeString, diff --git a/aws/resource_aws_s3_bucket_test.go b/aws/resource_aws_s3_bucket_test.go index 87fb0809e02f..2a101816fc20 100644 --- a/aws/resource_aws_s3_bucket_test.go +++ b/aws/resource_aws_s3_bucket_test.go @@ -207,6 +207,27 @@ func TestAccAWSS3Bucket_basic(t *testing.T) { }) } +// Support for common Terraform 0.11 pattern +// Reference: https://github.com/terraform-providers/terraform-provider-aws/issues/7868 +func TestAccAWSS3Bucket_Bucket_EmptyString(t *testing.T) { + resourceName := "aws_s3_bucket.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSS3BucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSS3BucketConfigBucketEmptyString, + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSS3BucketExists(resourceName), + resource.TestMatchResourceAttr(resourceName, "bucket", regexp.MustCompile("^terraform-")), + ), + }, + }, + }) +} + func TestAccAWSS3MultiBucket_withTags(t *testing.T) { rInt := acctest.RandInt() resource.ParallelTest(t, resource.TestCase{ @@ -3092,6 +3113,12 @@ resource "aws_s3_bucket" "arbitrary" { `, randInt) } +const testAccAWSS3BucketConfigBucketEmptyString = ` +resource "aws_s3_bucket" "test" { + bucket = "" +} +` + const testAccAWSS3BucketConfig_namePrefix = ` resource "aws_s3_bucket" "test" { bucket_prefix = "tf-test-"