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())