github.com/mohanarpit/terraform@v0.6.16-0.20160909104007-291f29853544/builtin/providers/aws/resource_aws_iam_account_password_policy_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws/awserr" 8 "github.com/aws/aws-sdk-go/service/iam" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAWSIAMAccountPasswordPolicy_basic(t *testing.T) { 14 var policy iam.GetAccountPasswordPolicyOutput 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckAWSIAMAccountPasswordPolicyDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccAWSIAMAccountPasswordPolicy, 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckAWSIAMAccountPasswordPolicyExists("aws_iam_account_password_policy.default", &policy), 25 resource.TestCheckResourceAttr("aws_iam_account_password_policy.default", "minimum_password_length", "8"), 26 ), 27 }, 28 resource.TestStep{ 29 Config: testAccAWSIAMAccountPasswordPolicy_modified, 30 Check: resource.ComposeTestCheckFunc( 31 testAccCheckAWSIAMAccountPasswordPolicyExists("aws_iam_account_password_policy.default", &policy), 32 resource.TestCheckResourceAttr("aws_iam_account_password_policy.default", "minimum_password_length", "7"), 33 ), 34 }, 35 }, 36 }) 37 } 38 39 func testAccCheckAWSIAMAccountPasswordPolicyDestroy(s *terraform.State) error { 40 iamconn := testAccProvider.Meta().(*AWSClient).iamconn 41 42 for _, rs := range s.RootModule().Resources { 43 if rs.Type != "aws_iam_account_password_policy" { 44 continue 45 } 46 47 // Try to get policy 48 _, err := iamconn.GetAccountPasswordPolicy(&iam.GetAccountPasswordPolicyInput{}) 49 if err == nil { 50 return fmt.Errorf("still exist.") 51 } 52 53 // Verify the error is what we want 54 awsErr, ok := err.(awserr.Error) 55 if !ok { 56 return err 57 } 58 if awsErr.Code() != "NoSuchEntity" { 59 return err 60 } 61 } 62 63 return nil 64 } 65 66 func testAccCheckAWSIAMAccountPasswordPolicyExists(n string, res *iam.GetAccountPasswordPolicyOutput) resource.TestCheckFunc { 67 return func(s *terraform.State) error { 68 rs, ok := s.RootModule().Resources[n] 69 if !ok { 70 return fmt.Errorf("Not found: %s", n) 71 } 72 73 if rs.Primary.ID == "" { 74 return fmt.Errorf("No policy ID is set") 75 } 76 77 iamconn := testAccProvider.Meta().(*AWSClient).iamconn 78 79 resp, err := iamconn.GetAccountPasswordPolicy(&iam.GetAccountPasswordPolicyInput{}) 80 if err != nil { 81 return err 82 } 83 84 *res = *resp 85 86 return nil 87 } 88 } 89 90 const testAccAWSIAMAccountPasswordPolicy = ` 91 resource "aws_iam_account_password_policy" "default" { 92 allow_users_to_change_password = true 93 minimum_password_length = 8 94 require_numbers = true 95 } 96 ` 97 const testAccAWSIAMAccountPasswordPolicy_modified = ` 98 resource "aws_iam_account_password_policy" "default" { 99 allow_users_to_change_password = true 100 minimum_password_length = 7 101 require_numbers = false 102 require_symbols = true 103 require_uppercase_characters = true 104 } 105 `