github.com/subuk/terraform@v0.6.14-0.20160317140351-de1567c2e732/builtin/providers/aws/resource_aws_kms_alias_test.go (about)

     1  package aws
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccAWSKmsAlias_basic(t *testing.T) {
    13  	resource.Test(t, resource.TestCase{
    14  		PreCheck:     func() { testAccPreCheck(t) },
    15  		Providers:    testAccProviders,
    16  		CheckDestroy: testAccCheckAWSKmsAliasDestroy,
    17  		Steps: []resource.TestStep{
    18  			resource.TestStep{
    19  				Config: testAccAWSKmsSingleAlias,
    20  				Check: resource.ComposeTestCheckFunc(
    21  					testAccCheckAWSKmsAliasExists("aws_kms_alias.single"),
    22  				),
    23  			},
    24  			resource.TestStep{
    25  				Config: testAccAWSKmsSingleAlias_modified,
    26  				Check: resource.ComposeTestCheckFunc(
    27  					testAccCheckAWSKmsAliasExists("aws_kms_alias.single"),
    28  				),
    29  			},
    30  		},
    31  	})
    32  }
    33  
    34  func TestAccAWSKmsAlias_multiple(t *testing.T) {
    35  	resource.Test(t, resource.TestCase{
    36  		PreCheck:     func() { testAccPreCheck(t) },
    37  		Providers:    testAccProviders,
    38  		CheckDestroy: testAccCheckAWSKmsAliasDestroy,
    39  		Steps: []resource.TestStep{
    40  			resource.TestStep{
    41  				Config: testAccAWSKmsMultipleAliases,
    42  				Check: resource.ComposeTestCheckFunc(
    43  					testAccCheckAWSKmsAliasExists("aws_kms_alias.one"),
    44  					testAccCheckAWSKmsAliasExists("aws_kms_alias.two"),
    45  				),
    46  			},
    47  		},
    48  	})
    49  }
    50  
    51  func testAccCheckAWSKmsAliasDestroy(s *terraform.State) error {
    52  	conn := testAccProvider.Meta().(*AWSClient).kmsconn
    53  
    54  	for _, rs := range s.RootModule().Resources {
    55  		if rs.Type != "aws_kms_alias" {
    56  			continue
    57  		}
    58  
    59  		entry, err := findKmsAliasByName(conn, rs.Primary.ID, nil)
    60  		if err != nil {
    61  			return err
    62  		}
    63  		if entry != nil {
    64  			return fmt.Errorf("KMS alias still exists:\n%#v", entry)
    65  		}
    66  
    67  		return nil
    68  	}
    69  
    70  	return nil
    71  }
    72  
    73  func testAccCheckAWSKmsAliasExists(name string) resource.TestCheckFunc {
    74  	return func(s *terraform.State) error {
    75  		_, ok := s.RootModule().Resources[name]
    76  		if !ok {
    77  			return fmt.Errorf("Not found: %s", name)
    78  		}
    79  
    80  		return nil
    81  	}
    82  }
    83  
    84  var kmsAliasTimestamp = time.Now().Format(time.RFC1123)
    85  var testAccAWSKmsSingleAlias = fmt.Sprintf(`
    86  resource "aws_kms_key" "one" {
    87      description = "Terraform acc test One %s"
    88      deletion_window_in_days = 7
    89  }
    90  resource "aws_kms_key" "two" {
    91      description = "Terraform acc test Two %s"
    92      deletion_window_in_days = 7
    93  }
    94  
    95  resource "aws_kms_alias" "single" {
    96      name = "alias/tf-acc-key-alias"
    97      target_key_id = "${aws_kms_key.one.key_id}"
    98  }`, kmsAliasTimestamp, kmsAliasTimestamp)
    99  
   100  var testAccAWSKmsSingleAlias_modified = fmt.Sprintf(`
   101  resource "aws_kms_key" "one" {
   102      description = "Terraform acc test One %s"
   103      deletion_window_in_days = 7
   104  }
   105  resource "aws_kms_key" "two" {
   106      description = "Terraform acc test Two %s"
   107      deletion_window_in_days = 7
   108  }
   109  
   110  resource "aws_kms_alias" "single" {
   111      name = "alias/tf-acc-key-alias"
   112      target_key_id = "${aws_kms_key.two.key_id}"
   113  }`, kmsAliasTimestamp, kmsAliasTimestamp)
   114  
   115  var testAccAWSKmsMultipleAliases = fmt.Sprintf(`
   116  resource "aws_kms_key" "single" {
   117      description = "Terraform acc test One %s"
   118      deletion_window_in_days = 7
   119  }
   120  
   121  resource "aws_kms_alias" "one" {
   122      name = "alias/tf-acc-key-alias-one"
   123      target_key_id = "${aws_kms_key.single.key_id}"
   124  }
   125  resource "aws_kms_alias" "two" {
   126      name = "alias/tf-acc-key-alias-two"
   127      target_key_id = "${aws_kms_key.single.key_id}"
   128  }`, kmsAliasTimestamp)