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 `