github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/aws/resource_aws_elasticsearch_domain_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/aws/awserr" 9 elasticsearch "github.com/aws/aws-sdk-go/service/elasticsearchservice" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAWSElasticSearchDomain_basic(t *testing.T) { 15 var domain elasticsearch.ElasticsearchDomainStatus 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckESDomainDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: testAccESDomainConfig_basic, 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckESDomainExists("aws_elasticsearch_domain.example", &domain), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func TestAccAWSElasticSearchDomain_complex(t *testing.T) { 33 var domain elasticsearch.ElasticsearchDomainStatus 34 35 resource.Test(t, resource.TestCase{ 36 PreCheck: func() { testAccPreCheck(t) }, 37 Providers: testAccProviders, 38 CheckDestroy: testAccCheckESDomainDestroy, 39 Steps: []resource.TestStep{ 40 resource.TestStep{ 41 Config: testAccESDomainConfig_complex, 42 Check: resource.ComposeTestCheckFunc( 43 testAccCheckESDomainExists("aws_elasticsearch_domain.example", &domain), 44 ), 45 }, 46 }, 47 }) 48 } 49 50 func testAccCheckESDomainExists(n string, domain *elasticsearch.ElasticsearchDomainStatus) resource.TestCheckFunc { 51 return func(s *terraform.State) error { 52 rs, ok := s.RootModule().Resources[n] 53 if !ok { 54 return fmt.Errorf("Not found: %s", n) 55 } 56 57 if rs.Primary.ID == "" { 58 return fmt.Errorf("No ES Domain ID is set") 59 } 60 61 conn := testAccProvider.Meta().(*AWSClient).esconn 62 opts := &elasticsearch.DescribeElasticsearchDomainInput{ 63 DomainName: aws.String(rs.Primary.Attributes["domain_name"]), 64 } 65 66 resp, err := conn.DescribeElasticsearchDomain(opts) 67 if err != nil { 68 return fmt.Errorf("Error describing domain: %s", err.Error()) 69 } 70 71 *domain = *resp.DomainStatus 72 73 return nil 74 } 75 } 76 77 func testAccCheckESDomainDestroy(s *terraform.State) error { 78 for _, rs := range s.RootModule().Resources { 79 if rs.Type != "aws_elasticsearch_domain" { 80 continue 81 } 82 83 conn := testAccProvider.Meta().(*AWSClient).esconn 84 opts := &elasticsearch.DescribeElasticsearchDomainInput{ 85 DomainName: aws.String(rs.Primary.Attributes["domain_name"]), 86 } 87 88 _, err := conn.DescribeElasticsearchDomain(opts) 89 // Verify the error is what we want 90 if err != nil { 91 if awsErr, ok := err.(awserr.Error); ok && awsErr.Code() == "ResourceNotFoundException" { 92 continue 93 } 94 return err 95 } 96 } 97 return nil 98 } 99 100 const testAccESDomainConfig_basic = ` 101 resource "aws_elasticsearch_domain" "example" { 102 domain_name = "tf-test-1" 103 } 104 ` 105 106 const testAccESDomainConfig_complex = ` 107 resource "aws_elasticsearch_domain" "example" { 108 domain_name = "tf-test-2" 109 110 advanced_options { 111 "indices.fielddata.cache.size" = 80 112 } 113 114 ebs_options { 115 ebs_enabled = false 116 } 117 118 cluster_config { 119 instance_count = 2 120 zone_awareness_enabled = true 121 } 122 123 snapshot_options { 124 automated_snapshot_start_hour = 23 125 } 126 } 127 `