github.com/anuaimi/terraform@v0.6.4-0.20150904235404-2bf9aec61da8/builtin/providers/aws/resource_aws_s3_bucket_object_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "testing" 8 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 12 "github.com/aws/aws-sdk-go/aws" 13 "github.com/aws/aws-sdk-go/service/s3" 14 ) 15 16 var tf, err = ioutil.TempFile("", "tf") 17 18 func TestAccAWSS3BucketObject_basic(t *testing.T) { 19 // first write some data to the tempfile just so it's not 0 bytes. 20 ioutil.WriteFile(tf.Name(), []byte("{anything will do }"), 0644) 21 resource.Test(t, resource.TestCase{ 22 PreCheck: func() { 23 if err != nil { 24 panic(err) 25 } 26 testAccPreCheck(t) 27 }, 28 Providers: testAccProviders, 29 CheckDestroy: testAccCheckAWSS3BucketObjectDestroy, 30 Steps: []resource.TestStep{ 31 resource.TestStep{ 32 Config: testAccAWSS3BucketObjectConfig, 33 Check: testAccCheckAWSS3BucketObjectExists("aws_s3_bucket_object.object"), 34 }, 35 }, 36 }) 37 } 38 39 func testAccCheckAWSS3BucketObjectDestroy(s *terraform.State) error { 40 s3conn := testAccProvider.Meta().(*AWSClient).s3conn 41 42 for _, rs := range s.RootModule().Resources { 43 if rs.Type != "aws_s3_bucket_object" { 44 continue 45 } 46 47 _, err := s3conn.HeadObject( 48 &s3.HeadObjectInput{ 49 Bucket: aws.String(rs.Primary.Attributes["bucket"]), 50 Key: aws.String(rs.Primary.Attributes["key"]), 51 IfMatch: aws.String(rs.Primary.Attributes["etag"]), 52 }) 53 if err == nil { 54 return fmt.Errorf("AWS S3 Object still exists: %s", rs.Primary.ID) 55 } 56 } 57 return nil 58 } 59 60 func testAccCheckAWSS3BucketObjectExists(n string) resource.TestCheckFunc { 61 return func(s *terraform.State) error { 62 63 defer os.Remove(tf.Name()) 64 65 rs, ok := s.RootModule().Resources[n] 66 if !ok { 67 return fmt.Errorf("Not Found: %s", n) 68 } 69 70 if rs.Primary.ID == "" { 71 return fmt.Errorf("No S3 Bucket Object ID is set") 72 } 73 74 s3conn := testAccProvider.Meta().(*AWSClient).s3conn 75 _, err := s3conn.GetObject( 76 &s3.GetObjectInput{ 77 Bucket: aws.String(rs.Primary.Attributes["bucket"]), 78 Key: aws.String(rs.Primary.Attributes["key"]), 79 IfMatch: aws.String(rs.Primary.Attributes["etag"]), 80 }) 81 if err != nil { 82 return fmt.Errorf("S3Bucket Object error: %s", err) 83 } 84 return nil 85 } 86 } 87 88 var randomBucket = randInt 89 var testAccAWSS3BucketObjectConfig = fmt.Sprintf(` 90 resource "aws_s3_bucket" "object_bucket" { 91 bucket = "tf-object-test-bucket-%d" 92 } 93 94 resource "aws_s3_bucket_object" "object" { 95 bucket = "${aws_s3_bucket.object_bucket.bucket}" 96 key = "test-key" 97 source = "%s" 98 } 99 `, randomBucket, tf.Name())