github.com/ndarilek/terraform@v0.3.8-0.20150320140257-d3135c1b2bac/builtin/providers/aws/resource_aws_s3_bucket_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "math/rand" 6 "testing" 7 "time" 8 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 12 "github.com/hashicorp/aws-sdk-go/aws" 13 "github.com/hashicorp/aws-sdk-go/gen/s3" 14 ) 15 16 func TestAccAWSS3Bucket(t *testing.T) { 17 18 resource.Test(t, resource.TestCase{ 19 PreCheck: func() { testAccPreCheck(t) }, 20 Providers: testAccProviders, 21 CheckDestroy: testAccCheckAWSS3BucketDestroy, 22 Steps: []resource.TestStep{ 23 resource.TestStep{ 24 Config: testAccAWSS3BucketConfig, 25 Check: resource.ComposeTestCheckFunc( 26 testAccCheckAWSS3BucketExists("aws_s3_bucket.bar"), 27 ), 28 }, 29 }, 30 }) 31 } 32 33 func testAccCheckAWSS3BucketDestroy(s *terraform.State) error { 34 conn := testAccProvider.Meta().(*AWSClient).s3conn 35 36 for _, rs := range s.RootModule().Resources { 37 if rs.Type != "aws_s3_bucket" { 38 continue 39 } 40 err := conn.DeleteBucket(&s3.DeleteBucketRequest{ 41 Bucket: aws.String(rs.Primary.ID), 42 }) 43 if err != nil { 44 return err 45 } 46 } 47 return nil 48 } 49 50 func testAccCheckAWSS3BucketExists(n string) resource.TestCheckFunc { 51 return func(s *terraform.State) error { 52 rs, ok := s.RootModule().Resources[n] 53 if !ok { 54 return fmt.Errorf("Not found: %s", n) 55 } 56 57 if rs.Primary.ID == "" { 58 return fmt.Errorf("No S3 Bucket ID is set") 59 } 60 61 conn := testAccProvider.Meta().(*AWSClient).s3conn 62 err := conn.HeadBucket(&s3.HeadBucketRequest{ 63 Bucket: aws.String(rs.Primary.ID), 64 }) 65 66 if err != nil { 67 return fmt.Errorf("S3Bucket error: %v", err) 68 } 69 return nil 70 } 71 } 72 73 // This needs a bit of randoness as the name can only be 74 // used once globally within AWS 75 var testAccAWSS3BucketConfig = fmt.Sprintf(` 76 resource "aws_s3_bucket" "bar" { 77 bucket = "tf-test-bucket-%d" 78 acl = "public-read" 79 } 80 `, rand.New(rand.NewSource(time.Now().UnixNano())).Int())