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  `