github.com/erriapo/terraform@v0.6.12-0.20160203182612-0340ea72354f/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  `