github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/aws/resource_aws_efs_file_system_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "reflect" 6 "testing" 7 8 "github.com/aws/aws-sdk-go/aws" 9 "github.com/aws/aws-sdk-go/aws/awserr" 10 "github.com/aws/aws-sdk-go/service/efs" 11 12 "github.com/hashicorp/terraform/helper/resource" 13 "github.com/hashicorp/terraform/terraform" 14 ) 15 16 func TestAccAWSEFSFileSystem_basic(t *testing.T) { 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckEfsFileSystemDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: testAccAWSEFSFileSystemConfig, 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckEfsFileSystem( 26 "aws_efs_file_system.foo", 27 ), 28 ), 29 }, 30 resource.TestStep{ 31 Config: testAccAWSEFSFileSystemConfigWithTags, 32 Check: resource.ComposeTestCheckFunc( 33 testAccCheckEfsFileSystem( 34 "aws_efs_file_system.foo-with-tags", 35 ), 36 testAccCheckEfsFileSystemTags( 37 "aws_efs_file_system.foo-with-tags", 38 map[string]string{ 39 "Name": "foo-efs", 40 "Another": "tag", 41 }, 42 ), 43 ), 44 }, 45 }, 46 }) 47 } 48 49 func testAccCheckEfsFileSystemDestroy(s *terraform.State) error { 50 conn := testAccProvider.Meta().(*AWSClient).efsconn 51 for _, rs := range s.RootModule().Resources { 52 if rs.Type != "aws_efs_file_system" { 53 continue 54 } 55 56 resp, err := conn.DescribeFileSystems(&efs.DescribeFileSystemsInput{ 57 FileSystemId: aws.String(rs.Primary.ID), 58 }) 59 if err != nil { 60 if efsErr, ok := err.(awserr.Error); ok && efsErr.Code() == "FileSystemNotFound" { 61 // gone 62 return nil 63 } 64 return fmt.Errorf("Error describing EFS in tests: %s", err) 65 } 66 if len(resp.FileSystems) > 0 { 67 return fmt.Errorf("EFS file system %q still exists", rs.Primary.ID) 68 } 69 } 70 71 return nil 72 } 73 74 func testAccCheckEfsFileSystem(resourceID string) resource.TestCheckFunc { 75 return func(s *terraform.State) error { 76 rs, ok := s.RootModule().Resources[resourceID] 77 if !ok { 78 return fmt.Errorf("Not found: %s", resourceID) 79 } 80 81 if rs.Primary.ID == "" { 82 return fmt.Errorf("No ID is set") 83 } 84 85 fs, ok := s.RootModule().Resources[resourceID] 86 if !ok { 87 return fmt.Errorf("Not found: %s", resourceID) 88 } 89 90 conn := testAccProvider.Meta().(*AWSClient).efsconn 91 _, err := conn.DescribeFileSystems(&efs.DescribeFileSystemsInput{ 92 FileSystemId: aws.String(fs.Primary.ID), 93 }) 94 95 if err != nil { 96 return err 97 } 98 99 return nil 100 } 101 } 102 103 func testAccCheckEfsFileSystemTags(resourceID string, expectedTags map[string]string) resource.TestCheckFunc { 104 return func(s *terraform.State) error { 105 rs, ok := s.RootModule().Resources[resourceID] 106 if !ok { 107 return fmt.Errorf("Not found: %s", resourceID) 108 } 109 110 if rs.Primary.ID == "" { 111 return fmt.Errorf("No ID is set") 112 } 113 114 fs, ok := s.RootModule().Resources[resourceID] 115 if !ok { 116 return fmt.Errorf("Not found: %s", resourceID) 117 } 118 119 conn := testAccProvider.Meta().(*AWSClient).efsconn 120 resp, err := conn.DescribeTags(&efs.DescribeTagsInput{ 121 FileSystemId: aws.String(fs.Primary.ID), 122 }) 123 124 if !reflect.DeepEqual(expectedTags, tagsToMapEFS(resp.Tags)) { 125 return fmt.Errorf("Tags mismatch.\nExpected: %#v\nGiven: %#v", 126 expectedTags, resp.Tags) 127 } 128 129 if err != nil { 130 return err 131 } 132 133 return nil 134 } 135 } 136 137 const testAccAWSEFSFileSystemConfig = ` 138 resource "aws_efs_file_system" "foo" { 139 reference_name = "radeksimko" 140 } 141 ` 142 143 const testAccAWSEFSFileSystemConfigWithTags = ` 144 resource "aws_efs_file_system" "foo-with-tags" { 145 reference_name = "yada_yada" 146 tags { 147 Name = "foo-efs" 148 Another = "tag" 149 } 150 } 151 `