github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/rundeck/resource_project_test.go (about) 1 package rundeck 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/apparentlymart/go-rundeck-api/rundeck" 8 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccProject_basic(t *testing.T) { 14 var project rundeck.Project 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccProjectCheckDestroy(&project), 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccProjectConfig_basic, 23 Check: resource.ComposeTestCheckFunc( 24 testAccProjectCheckExists("rundeck_project.main", &project), 25 func(s *terraform.State) error { 26 if expected := "terraform-acc-test-basic"; project.Name != expected { 27 return fmt.Errorf("wrong name; expected %v, got %v", expected, project.Name) 28 } 29 if expected := "baz"; project.Config["foo.bar"] != expected { 30 return fmt.Errorf("wrong foo.bar config; expected %v, got %v", expected, project.Config["foo.bar"]) 31 } 32 if expected := "file"; project.Config["resources.source.1.type"] != expected { 33 return fmt.Errorf("wrong resources.source.1.type config; expected %v, got %v", expected, project.Config["resources.source.1.type"]) 34 } 35 return nil 36 }, 37 ), 38 }, 39 }, 40 }) 41 } 42 43 func testAccProjectCheckDestroy(project *rundeck.Project) resource.TestCheckFunc { 44 return func(s *terraform.State) error { 45 client := testAccProvider.Meta().(*rundeck.Client) 46 _, err := client.GetProject(project.Name) 47 if err == nil { 48 return fmt.Errorf("project still exists") 49 } 50 if _, ok := err.(*rundeck.NotFoundError); !ok { 51 return fmt.Errorf("got something other than NotFoundError (%v) when getting project", err) 52 } 53 54 return nil 55 } 56 } 57 58 func testAccProjectCheckExists(rn string, project *rundeck.Project) resource.TestCheckFunc { 59 return func(s *terraform.State) error { 60 rs, ok := s.RootModule().Resources[rn] 61 if !ok { 62 return fmt.Errorf("resource not found: %s", rn) 63 } 64 65 if rs.Primary.ID == "" { 66 return fmt.Errorf("project id not set") 67 } 68 69 client := testAccProvider.Meta().(*rundeck.Client) 70 gotProject, err := client.GetProject(rs.Primary.ID) 71 if err != nil { 72 return fmt.Errorf("error getting project: %s", err) 73 } 74 75 *project = *gotProject 76 77 return nil 78 } 79 } 80 81 const testAccProjectConfig_basic = ` 82 resource "rundeck_project" "main" { 83 name = "terraform-acc-test-basic" 84 description = "Terraform Acceptance Tests Basic Project" 85 86 resource_model_source { 87 type = "file" 88 config = { 89 format = "resourcexml" 90 file = "/tmp/terraform-acc-tests.xml" 91 } 92 } 93 94 extra_config = { 95 "foo/bar" = "baz" 96 } 97 } 98 `