github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/icinga2/resource_icinga2_service_test.go (about)

     1  package icinga2
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  	"github.com/lrsmith/go-icinga2-api/iapi"
    11  )
    12  
    13  func TestAccCreateService(t *testing.T) {
    14  
    15  	var testAccCreateService = fmt.Sprintf(`
    16  		resource "icinga2_service" "tf-service-1" {
    17  		hostname      = "docker-icinga2"
    18  		name          = "ssh3"
    19  		check_command = "ssh"
    20  	}`)
    21  
    22  	resource.Test(t, resource.TestCase{
    23  		PreCheck:  func() { testAccPreCheck(t) },
    24  		Providers: testAccProviders,
    25  		Steps: []resource.TestStep{
    26  			resource.TestStep{
    27  				Config: testAccCreateService,
    28  				Check: resource.ComposeTestCheckFunc(
    29  					testAccCheckServiceExists("icinga2_service.tf-service-1"),
    30  					testAccCheckResourceState("icinga2_service.tf-service-1", "hostname", "docker-icinga2"),
    31  					testAccCheckResourceState("icinga2_service.tf-service-1", "name", "ssh3"),
    32  					testAccCheckResourceState("icinga2_service.tf-service-1", "check_command", "ssh"),
    33  				),
    34  			},
    35  		},
    36  	})
    37  }
    38  
    39  func testAccCheckServiceExists(rn string) resource.TestCheckFunc {
    40  	return func(s *terraform.State) error {
    41  		resource, ok := s.RootModule().Resources[rn]
    42  		if !ok {
    43  			return fmt.Errorf("Service resource not found: %s", rn)
    44  		}
    45  
    46  		if resource.Primary.ID == "" {
    47  			return fmt.Errorf("resource id not set")
    48  		}
    49  
    50  		client := testAccProvider.Meta().(*iapi.Server)
    51  		tokens := strings.Split(resource.Primary.ID, "!")
    52  
    53  		_, err := client.GetService(tokens[1], tokens[0])
    54  		if err != nil {
    55  			return fmt.Errorf("error getting getting Service: %s", err)
    56  		}
    57  
    58  		return nil
    59  	}
    60  
    61  }