github.com/armen/terraform@v0.5.2-0.20150529052519-caa8117a08f1/builtin/providers/aws/resource_aws_iam_user_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/aws/awserr" 9 "github.com/awslabs/aws-sdk-go/service/iam" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAWSUser_normal(t *testing.T) { 15 var conf iam.GetUserOutput 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckAWSUserDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: testAccAWSUserConfig, 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckAWSUserExists("aws_iam_user.user", &conf), 26 testAccCheckAWSUserAttributes(&conf), 27 ), 28 }, 29 }, 30 }) 31 } 32 33 func testAccCheckAWSUserDestroy(s *terraform.State) error { 34 iamconn := testAccProvider.Meta().(*AWSClient).iamconn 35 36 for _, rs := range s.RootModule().Resources { 37 if rs.Type != "aws_iam_user" { 38 continue 39 } 40 41 // Try to get user 42 _, err := iamconn.GetUser(&iam.GetUserInput{ 43 UserName: aws.String(rs.Primary.ID), 44 }) 45 if err == nil { 46 return fmt.Errorf("still exist.") 47 } 48 49 // Verify the error is what we want 50 ec2err, ok := err.(awserr.Error) 51 if !ok { 52 return err 53 } 54 if ec2err.Code() != "NoSuchEntity" { 55 return err 56 } 57 } 58 59 return nil 60 } 61 62 func testAccCheckAWSUserExists(n string, res *iam.GetUserOutput) resource.TestCheckFunc { 63 return func(s *terraform.State) error { 64 rs, ok := s.RootModule().Resources[n] 65 if !ok { 66 return fmt.Errorf("Not found: %s", n) 67 } 68 69 if rs.Primary.ID == "" { 70 return fmt.Errorf("No User name is set") 71 } 72 73 iamconn := testAccProvider.Meta().(*AWSClient).iamconn 74 75 resp, err := iamconn.GetUser(&iam.GetUserInput{ 76 UserName: aws.String(rs.Primary.ID), 77 }) 78 if err != nil { 79 return err 80 } 81 82 *res = *resp 83 84 return nil 85 } 86 } 87 88 func testAccCheckAWSUserAttributes(user *iam.GetUserOutput) resource.TestCheckFunc { 89 return func(s *terraform.State) error { 90 if *user.User.UserName != "test-user" { 91 return fmt.Errorf("Bad name: %s", *user.User.UserName) 92 } 93 94 if *user.User.Path != "/" { 95 return fmt.Errorf("Bad path: %s", *user.User.Path) 96 } 97 98 return nil 99 } 100 } 101 102 const testAccAWSUserConfig = ` 103 resource "aws_iam_user" "user" { 104 name = "test-user" 105 path = "/" 106 } 107 `