github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/rundeck/resource_job_test.go (about) 1 package rundeck 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/apparentlymart/go-rundeck-api/rundeck" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 ) 11 12 func TestAccJob_basic(t *testing.T) { 13 var job rundeck.JobDetail 14 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccJobCheckDestroy(&job), 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccJobConfig_basic, 22 Check: resource.ComposeTestCheckFunc( 23 testAccJobCheckExists("rundeck_job.test", &job), 24 func(s *terraform.State) error { 25 if expected := "basic-job"; job.Name != expected { 26 return fmt.Errorf("wrong name; expected %v, got %v", expected, job.Name) 27 } 28 if expected := "Prints Hello World"; job.CommandSequence.Commands[0].Description != expected { 29 return fmt.Errorf("failed to set command description; expected %v, got %v", expected, job.CommandSequence.Commands[0].Description) 30 } 31 return nil 32 }, 33 ), 34 }, 35 }, 36 }) 37 } 38 39 func testAccJobCheckDestroy(job *rundeck.JobDetail) resource.TestCheckFunc { 40 return func(s *terraform.State) error { 41 client := testAccProvider.Meta().(*rundeck.Client) 42 _, err := client.GetJob(job.ID) 43 if err == nil { 44 return fmt.Errorf("key still exists") 45 } 46 if _, ok := err.(*rundeck.NotFoundError); !ok { 47 return fmt.Errorf("got something other than NotFoundError (%v) when getting key", err) 48 } 49 50 return nil 51 } 52 } 53 54 func testAccJobCheckExists(rn string, job *rundeck.JobDetail) resource.TestCheckFunc { 55 return func(s *terraform.State) error { 56 rs, ok := s.RootModule().Resources[rn] 57 if !ok { 58 return fmt.Errorf("resource not found: %s", rn) 59 } 60 61 if rs.Primary.ID == "" { 62 return fmt.Errorf("job id not set") 63 } 64 65 client := testAccProvider.Meta().(*rundeck.Client) 66 gotJob, err := client.GetJob(rs.Primary.ID) 67 if err != nil { 68 return fmt.Errorf("error getting job details: %s", err) 69 } 70 71 *job = *gotJob 72 73 return nil 74 } 75 } 76 77 const testAccJobConfig_basic = ` 78 resource "rundeck_project" "test" { 79 name = "terraform-acc-test-job" 80 description = "parent project for job acceptance tests" 81 resource_model_source { 82 type = "file" 83 config = { 84 format = "resourcexml" 85 file = "/tmp/terraform-acc-tests.xml" 86 } 87 } 88 } 89 resource "rundeck_job" "test" { 90 project_name = "${rundeck_project.test.name}" 91 name = "basic-job" 92 description = "A basic job" 93 node_filter_query = "example" 94 allow_concurrent_executions = 1 95 max_thread_count = 1 96 rank_order = "ascending" 97 schedule = "0 0 12 * * * *" 98 option { 99 name = "foo" 100 default_value = "bar" 101 } 102 command { 103 description = "Prints Hello World" 104 shell_command = "echo Hello World" 105 } 106 } 107 `