github.com/minamijoyo/terraform@v0.7.8-0.20161029001309-18b3736ba44b/builtin/providers/pagerduty/resource_pagerduty_service_test.go (about)

     1  package pagerduty
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/PagerDuty/go-pagerduty"
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccPagerDutyService_Basic(t *testing.T) {
    13  	resource.Test(t, resource.TestCase{
    14  		PreCheck:     func() { testAccPreCheck(t) },
    15  		Providers:    testAccProviders,
    16  		CheckDestroy: testAccCheckPagerDutyServiceDestroy,
    17  		Steps: []resource.TestStep{
    18  			resource.TestStep{
    19  				Config: testAccCheckPagerDutyServiceConfig,
    20  				Check: resource.ComposeTestCheckFunc(
    21  					testAccCheckPagerDutyServiceExists("pagerduty_service.foo"),
    22  					resource.TestCheckResourceAttr(
    23  						"pagerduty_service.foo", "name", "foo"),
    24  					resource.TestCheckResourceAttr(
    25  						"pagerduty_service.foo", "description", "foo"),
    26  					resource.TestCheckResourceAttr(
    27  						"pagerduty_service.foo", "auto_resolve_timeout", "1800"),
    28  					resource.TestCheckResourceAttr(
    29  						"pagerduty_service.foo", "acknowledgement_timeout", "1800"),
    30  				),
    31  			},
    32  			resource.TestStep{
    33  				Config: testAccCheckPagerDutyServiceConfigUpdated,
    34  				Check: resource.ComposeTestCheckFunc(
    35  					testAccCheckPagerDutyServiceExists("pagerduty_service.foo"),
    36  					resource.TestCheckResourceAttr(
    37  						"pagerduty_service.foo", "name", "bar"),
    38  					resource.TestCheckResourceAttr(
    39  						"pagerduty_service.foo", "description", "bar"),
    40  					resource.TestCheckResourceAttr(
    41  						"pagerduty_service.foo", "auto_resolve_timeout", "3600"),
    42  					resource.TestCheckResourceAttr(
    43  						"pagerduty_service.foo", "acknowledgement_timeout", "3600"),
    44  				),
    45  			},
    46  		},
    47  	})
    48  }
    49  
    50  func testAccCheckPagerDutyServiceDestroy(s *terraform.State) error {
    51  	client := testAccProvider.Meta().(*pagerduty.Client)
    52  	for _, r := range s.RootModule().Resources {
    53  		if r.Type != "pagerduty_service" {
    54  			continue
    55  		}
    56  
    57  		_, err := client.GetService(r.Primary.ID, &pagerduty.GetServiceOptions{})
    58  
    59  		if err == nil {
    60  			return fmt.Errorf("Service still exists")
    61  		}
    62  
    63  	}
    64  	return nil
    65  }
    66  
    67  func testAccCheckPagerDutyServiceExists(n string) resource.TestCheckFunc {
    68  	return func(s *terraform.State) error {
    69  		rs, ok := s.RootModule().Resources[n]
    70  		if !ok {
    71  			return fmt.Errorf("Not found: %s", n)
    72  		}
    73  		if rs.Primary.ID == "" {
    74  			return fmt.Errorf("No Service ID is set")
    75  		}
    76  
    77  		client := testAccProvider.Meta().(*pagerduty.Client)
    78  
    79  		found, err := client.GetService(rs.Primary.ID, &pagerduty.GetServiceOptions{})
    80  		if err != nil {
    81  			return err
    82  		}
    83  
    84  		if found.ID != rs.Primary.ID {
    85  			return fmt.Errorf("Service not found: %v - %v", rs.Primary.ID, found)
    86  		}
    87  
    88  		return nil
    89  	}
    90  }
    91  
    92  const testAccCheckPagerDutyServiceConfig = `
    93  resource "pagerduty_user" "foo" {
    94    name        = "foo"
    95    email       = "foo@bar.com"
    96    color       = "green"
    97    role        = "user"
    98    job_title   = "foo"
    99    description = "foo"
   100  }
   101  
   102  resource "pagerduty_escalation_policy" "foo" {
   103    name        = "bar"
   104    description = "bar"
   105    num_loops   = 2
   106  
   107    rule {
   108      escalation_delay_in_minutes = 10
   109  
   110      target {
   111        type = "user_reference"
   112        id   = "${pagerduty_user.foo.id}"
   113      }
   114    }
   115  }
   116  
   117  resource "pagerduty_service" "foo" {
   118    name                    = "foo"
   119    description             = "foo"
   120    auto_resolve_timeout    = 1800
   121    acknowledgement_timeout = 1800
   122    escalation_policy       = "${pagerduty_escalation_policy.foo.id}"
   123  }
   124  `
   125  
   126  const testAccCheckPagerDutyServiceConfigUpdated = `
   127  resource "pagerduty_user" "foo" {
   128    name        = "foo"
   129    email       = "foo@bar.com"
   130    color       = "green"
   131    role        = "user"
   132    job_title   = "foo"
   133    description = "foo"
   134  }
   135  
   136  resource "pagerduty_escalation_policy" "foo" {
   137    name        = "bar"
   138    description = "bar"
   139    num_loops   = 2
   140  
   141    rule {
   142      escalation_delay_in_minutes = 10
   143  
   144      target {
   145        type = "user_reference"
   146        id   = "${pagerduty_user.foo.id}"
   147      }
   148    }
   149  }
   150  
   151  resource "pagerduty_service" "foo" {
   152    name                    = "bar"
   153    description             = "bar"
   154    auto_resolve_timeout    = 3600
   155    acknowledgement_timeout = 3600
   156    escalation_policy       = "${pagerduty_escalation_policy.foo.id}"
   157  }
   158  `