github.com/jrperritt/terraform@v0.1.1-0.20170525065507-96f391dafc38/builtin/providers/aws/resource_aws_devicefarm_project_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 "github.com/aws/aws-sdk-go/service/devicefarm" 10 "github.com/hashicorp/terraform/helper/acctest" 11 "github.com/hashicorp/terraform/helper/resource" 12 "github.com/hashicorp/terraform/terraform" 13 ) 14 15 func TestAccAWSDeviceFarmProject_basic(t *testing.T) { 16 var afterCreate, afterUpdate devicefarm.Project 17 beforeInt := acctest.RandInt() 18 afterInt := acctest.RandInt() 19 20 resource.Test(t, resource.TestCase{ 21 PreCheck: func() { testAccPreCheck(t) }, 22 Providers: testAccProviders, 23 CheckDestroy: testAccCheckDeviceFarmProjectDestroy, 24 Steps: []resource.TestStep{ 25 { 26 Config: testAccDeviceFarmProjectConfig(beforeInt), 27 Check: resource.ComposeTestCheckFunc( 28 testAccCheckDeviceFarmProjectExists( 29 "aws_devicefarm_project.foo", &afterCreate), 30 resource.TestCheckResourceAttr( 31 "aws_devicefarm_project.foo", "name", fmt.Sprintf("tf-testproject-%d", beforeInt)), 32 ), 33 }, 34 35 { 36 Config: testAccDeviceFarmProjectConfig(afterInt), 37 Check: resource.ComposeTestCheckFunc( 38 testAccCheckDeviceFarmProjectExists( 39 "aws_devicefarm_project.foo", &afterUpdate), 40 resource.TestCheckResourceAttr( 41 "aws_devicefarm_project.foo", "name", fmt.Sprintf("tf-testproject-%d", afterInt)), 42 testAccCheckDeviceFarmProjectNotRecreated( 43 t, &afterCreate, &afterUpdate), 44 ), 45 }, 46 }, 47 }) 48 } 49 50 func testAccCheckDeviceFarmProjectNotRecreated(t *testing.T, 51 before, after *devicefarm.Project) resource.TestCheckFunc { 52 return func(s *terraform.State) error { 53 if *before.Arn != *after.Arn { 54 t.Fatalf("Expected DeviceFarm Project ARNs to be the same. But they were: %v, %v", *before.Arn, *after.Arn) 55 } 56 return nil 57 } 58 } 59 60 func testAccCheckDeviceFarmProjectExists(n string, v *devicefarm.Project) resource.TestCheckFunc { 61 return func(s *terraform.State) error { 62 rs, ok := s.RootModule().Resources[n] 63 if !ok { 64 return fmt.Errorf("Not found: %s", n) 65 } 66 67 if rs.Primary.ID == "" { 68 return fmt.Errorf("No ID is set") 69 } 70 71 conn := testAccProvider.Meta().(*AWSClient).devicefarmconn 72 resp, err := conn.GetProject( 73 &devicefarm.GetProjectInput{Arn: aws.String(rs.Primary.ID)}) 74 if err != nil { 75 return err 76 } 77 if resp.Project == nil { 78 return fmt.Errorf("DeviceFarmProject not found") 79 } 80 81 *v = *resp.Project 82 83 return nil 84 } 85 } 86 87 func testAccCheckDeviceFarmProjectDestroy(s *terraform.State) error { 88 conn := testAccProvider.Meta().(*AWSClient).devicefarmconn 89 90 for _, rs := range s.RootModule().Resources { 91 if rs.Type != "aws_devicefarm_project" { 92 continue 93 } 94 95 // Try to find the resource 96 resp, err := conn.GetProject( 97 &devicefarm.GetProjectInput{Arn: aws.String(rs.Primary.ID)}) 98 if err == nil { 99 if resp.Project != nil { 100 return fmt.Errorf("still exist.") 101 } 102 103 return nil 104 } 105 106 if dferr, ok := err.(awserr.Error); ok && dferr.Code() == "DeviceFarmProjectNotFoundFault" { 107 return nil 108 } 109 } 110 111 return nil 112 } 113 114 func testAccDeviceFarmProjectConfig(rInt int) string { 115 return fmt.Sprintf(` 116 resource "aws_devicefarm_project" "foo" { 117 name = "tf-testproject-%d" 118 }`, rInt) 119 }