github.com/i0n/terraform@v0.4.3-0.20150506151324-010a39a58ec1/builtin/providers/aws/resource_aws_iam_access_key_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/awslabs/aws-sdk-go/aws" 8 "github.com/awslabs/aws-sdk-go/service/iam" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAWSAccessKey_normal(t *testing.T) { 14 var conf iam.AccessKeyMetadata 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckAWSAccessKeyDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccAWSAccessKeyConfig, 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckAWSAccessKeyExists("aws_iam_access_key.a_key", &conf), 25 testAccCheckAWSAccessKeyAttributes(&conf), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func testAccCheckAWSAccessKeyDestroy(s *terraform.State) error { 33 iamconn := testAccProvider.Meta().(*AWSClient).iamconn 34 35 for _, rs := range s.RootModule().Resources { 36 if rs.Type != "aws_access_key" { 37 continue 38 } 39 40 // Try to get access key 41 resp, err := iamconn.ListAccessKeys(&iam.ListAccessKeysInput{ 42 UserName: aws.String(rs.Primary.ID), 43 }) 44 if err == nil { 45 if len(resp.AccessKeyMetadata) > 0 { 46 return fmt.Errorf("still exist.") 47 } 48 return nil 49 } 50 51 // Verify the error is what we want 52 ec2err, ok := err.(aws.APIError) 53 if !ok { 54 return err 55 } 56 if ec2err.Code != "NoSuchEntity" { 57 return err 58 } 59 } 60 61 return nil 62 } 63 64 func testAccCheckAWSAccessKeyExists(n string, res *iam.AccessKeyMetadata) resource.TestCheckFunc { 65 return func(s *terraform.State) error { 66 rs, ok := s.RootModule().Resources[n] 67 if !ok { 68 return fmt.Errorf("Not found: %s", n) 69 } 70 71 if rs.Primary.ID == "" { 72 return fmt.Errorf("No Role name is set") 73 } 74 75 iamconn := testAccProvider.Meta().(*AWSClient).iamconn 76 77 resp, err := iamconn.ListAccessKeys(&iam.ListAccessKeysInput{ 78 UserName: aws.String("testuser"), 79 }) 80 if err != nil { 81 return err 82 } 83 84 if len(resp.AccessKeyMetadata) != 1 || 85 *resp.AccessKeyMetadata[0].UserName != "testuser" { 86 return fmt.Errorf("User not found not found") 87 } 88 89 *res = *resp.AccessKeyMetadata[0] 90 91 return nil 92 } 93 } 94 95 func testAccCheckAWSAccessKeyAttributes(accessKeyMetadata *iam.AccessKeyMetadata) resource.TestCheckFunc { 96 return func(s *terraform.State) error { 97 if *accessKeyMetadata.UserName != "testuser" { 98 return fmt.Errorf("Bad username: %s", *accessKeyMetadata.UserName) 99 } 100 101 if *accessKeyMetadata.Status != "Active" { 102 return fmt.Errorf("Bad status: %s", *accessKeyMetadata.Status) 103 } 104 105 return nil 106 } 107 } 108 109 const testAccAWSAccessKeyConfig = ` 110 resource "aws_iam_user" "a_user" { 111 name = "testuser" 112 } 113 114 resource "aws_iam_access_key" "a_key" { 115 user = "${aws_iam_user.a_user.name}" 116 } 117 `