github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/aws/resource_aws_ses_domain_identity_test.go (about)

     1  package aws
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/aws/aws-sdk-go/aws"
     8  	"github.com/aws/aws-sdk-go/service/ses"
     9  	"github.com/hashicorp/terraform/helper/acctest"
    10  	"github.com/hashicorp/terraform/helper/resource"
    11  	"github.com/hashicorp/terraform/terraform"
    12  )
    13  
    14  func TestAccAwsSESDomainIdentity_basic(t *testing.T) {
    15  	domain := fmt.Sprintf(
    16  		"%s.terraformtesting.com",
    17  		acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
    18  
    19  	resource.Test(t, resource.TestCase{
    20  		PreCheck: func() {
    21  			testAccPreCheck(t)
    22  		},
    23  		Providers:    testAccProviders,
    24  		CheckDestroy: testAccCheckAwsSESDomainIdentityDestroy,
    25  		Steps: []resource.TestStep{
    26  			{
    27  				Config: fmt.Sprintf(testAccAwsSESDomainIdentityConfig, domain),
    28  				Check: resource.ComposeTestCheckFunc(
    29  					testAccCheckAwsSESDomainIdentityExists("aws_ses_domain_identity.test"),
    30  					testAccCheckAwsSESDomainIdentityArn("aws_ses_domain_identity.test", domain),
    31  				),
    32  			},
    33  		},
    34  	})
    35  }
    36  
    37  func testAccCheckAwsSESDomainIdentityDestroy(s *terraform.State) error {
    38  	conn := testAccProvider.Meta().(*AWSClient).sesConn
    39  
    40  	for _, rs := range s.RootModule().Resources {
    41  		if rs.Type != "aws_ses_domain_identity" {
    42  			continue
    43  		}
    44  
    45  		domain := rs.Primary.ID
    46  		params := &ses.GetIdentityVerificationAttributesInput{
    47  			Identities: []*string{
    48  				aws.String(domain),
    49  			},
    50  		}
    51  
    52  		response, err := conn.GetIdentityVerificationAttributes(params)
    53  		if err != nil {
    54  			return err
    55  		}
    56  
    57  		if response.VerificationAttributes[domain] != nil {
    58  			return fmt.Errorf("SES Domain Identity %s still exists. Failing!", domain)
    59  		}
    60  	}
    61  
    62  	return nil
    63  }
    64  
    65  func testAccCheckAwsSESDomainIdentityExists(n string) resource.TestCheckFunc {
    66  	return func(s *terraform.State) error {
    67  		rs, ok := s.RootModule().Resources[n]
    68  		if !ok {
    69  			return fmt.Errorf("SES Domain Identity not found: %s", n)
    70  		}
    71  
    72  		if rs.Primary.ID == "" {
    73  			return fmt.Errorf("SES Domain Identity name not set")
    74  		}
    75  
    76  		domain := rs.Primary.ID
    77  		conn := testAccProvider.Meta().(*AWSClient).sesConn
    78  
    79  		params := &ses.GetIdentityVerificationAttributesInput{
    80  			Identities: []*string{
    81  				aws.String(domain),
    82  			},
    83  		}
    84  
    85  		response, err := conn.GetIdentityVerificationAttributes(params)
    86  		if err != nil {
    87  			return err
    88  		}
    89  
    90  		if response.VerificationAttributes[domain] == nil {
    91  			return fmt.Errorf("SES Domain Identity %s not found in AWS", domain)
    92  		}
    93  
    94  		return nil
    95  	}
    96  }
    97  
    98  func testAccCheckAwsSESDomainIdentityArn(n string, domain string) resource.TestCheckFunc {
    99  	return func(s *terraform.State) error {
   100  		rs, _ := s.RootModule().Resources[n]
   101  
   102  		expected := fmt.Sprintf(
   103  			"arn:%s:ses:%s:%s:identity/%s",
   104  			testAccProvider.Meta().(*AWSClient).partition,
   105  			testAccProvider.Meta().(*AWSClient).region,
   106  			testAccProvider.Meta().(*AWSClient).accountid,
   107  			domain)
   108  
   109  		if rs.Primary.Attributes["arn"] != expected {
   110  			return fmt.Errorf("Incorrect ARN: expected %q, got %q", expected, rs.Primary.Attributes["arn"])
   111  		}
   112  
   113  		return nil
   114  	}
   115  }
   116  
   117  const testAccAwsSESDomainIdentityConfig = `
   118  resource "aws_ses_domain_identity" "test" {
   119  	domain = "%s"
   120  }
   121  `