github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/azurerm/resource_arm_cdn_endpoint_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMCdnEndpoint_basic(t *testing.T) { 14 15 ri := acctest.RandInt() 16 config := fmt.Sprintf(testAccAzureRMCdnEndpoint_basic, ri, ri, ri) 17 18 resource.Test(t, resource.TestCase{ 19 PreCheck: func() { testAccPreCheck(t) }, 20 Providers: testAccProviders, 21 CheckDestroy: testCheckAzureRMCdnEndpointDestroy, 22 Steps: []resource.TestStep{ 23 resource.TestStep{ 24 Config: config, 25 Check: resource.ComposeTestCheckFunc( 26 testCheckAzureRMCdnEndpointExists("azurerm_cdn_endpoint.test"), 27 ), 28 }, 29 }, 30 }) 31 } 32 33 func TestAccAzureRMCdnEndpoints_withTags(t *testing.T) { 34 35 ri := acctest.RandInt() 36 preConfig := fmt.Sprintf(testAccAzureRMCdnEndpoint_withTags, ri, ri, ri) 37 postConfig := fmt.Sprintf(testAccAzureRMCdnEndpoint_withTagsUpdate, ri, ri, ri) 38 39 resource.Test(t, resource.TestCase{ 40 PreCheck: func() { testAccPreCheck(t) }, 41 Providers: testAccProviders, 42 CheckDestroy: testCheckAzureRMCdnEndpointDestroy, 43 Steps: []resource.TestStep{ 44 resource.TestStep{ 45 Config: preConfig, 46 Check: resource.ComposeTestCheckFunc( 47 testCheckAzureRMCdnEndpointExists("azurerm_cdn_endpoint.test"), 48 resource.TestCheckResourceAttr( 49 "azurerm_cdn_endpoint.test", "tags.#", "2"), 50 resource.TestCheckResourceAttr( 51 "azurerm_cdn_endpoint.test", "tags.environment", "Production"), 52 resource.TestCheckResourceAttr( 53 "azurerm_cdn_endpoint.test", "tags.cost_center", "MSFT"), 54 ), 55 }, 56 57 resource.TestStep{ 58 Config: postConfig, 59 Check: resource.ComposeTestCheckFunc( 60 testCheckAzureRMCdnEndpointExists("azurerm_cdn_endpoint.test"), 61 resource.TestCheckResourceAttr( 62 "azurerm_cdn_endpoint.test", "tags.#", "1"), 63 resource.TestCheckResourceAttr( 64 "azurerm_cdn_endpoint.test", "tags.environment", "staging"), 65 ), 66 }, 67 }, 68 }) 69 } 70 71 func testCheckAzureRMCdnEndpointExists(name string) resource.TestCheckFunc { 72 return func(s *terraform.State) error { 73 // Ensure we have enough information in state to look up in API 74 rs, ok := s.RootModule().Resources[name] 75 if !ok { 76 return fmt.Errorf("Not found: %s", name) 77 } 78 79 name := rs.Primary.Attributes["name"] 80 profileName := rs.Primary.Attributes["profile_name"] 81 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 82 if !hasResourceGroup { 83 return fmt.Errorf("Bad: no resource group found in state for cdn endpoint: %s", name) 84 } 85 86 conn := testAccProvider.Meta().(*ArmClient).cdnEndpointsClient 87 88 resp, err := conn.Get(name, profileName, resourceGroup) 89 if err != nil { 90 return fmt.Errorf("Bad: Get on cdnEndpointsClient: %s", err) 91 } 92 93 if resp.StatusCode == http.StatusNotFound { 94 return fmt.Errorf("Bad: CDN Endpoint %q (resource group: %q) does not exist", name, resourceGroup) 95 } 96 97 return nil 98 } 99 } 100 101 func testCheckAzureRMCdnEndpointDestroy(s *terraform.State) error { 102 conn := testAccProvider.Meta().(*ArmClient).cdnEndpointsClient 103 104 for _, rs := range s.RootModule().Resources { 105 if rs.Type != "azurerm_cdn_endpoint" { 106 continue 107 } 108 109 name := rs.Primary.Attributes["name"] 110 resourceGroup := rs.Primary.Attributes["resource_group_name"] 111 profileName := rs.Primary.Attributes["profile_name"] 112 113 resp, err := conn.Get(name, profileName, resourceGroup) 114 115 if err != nil { 116 return nil 117 } 118 119 if resp.StatusCode != http.StatusNotFound { 120 return fmt.Errorf("CDN Endpoint still exists:\n%#v", resp.Properties) 121 } 122 } 123 124 return nil 125 } 126 127 var testAccAzureRMCdnEndpoint_basic = ` 128 resource "azurerm_resource_group" "test" { 129 name = "acctestrg-%d" 130 location = "West US" 131 } 132 resource "azurerm_cdn_profile" "test" { 133 name = "acctestcdnprof%d" 134 location = "West US" 135 resource_group_name = "${azurerm_resource_group.test.name}" 136 sku = "Standard" 137 } 138 139 resource "azurerm_cdn_endpoint" "test" { 140 name = "acctestcdnend%d" 141 profile_name = "${azurerm_cdn_profile.test.name}" 142 location = "West US" 143 resource_group_name = "${azurerm_resource_group.test.name}" 144 145 origin { 146 name = "acceptanceTestCdnOrigin1" 147 host_name = "www.example.com" 148 } 149 } 150 ` 151 152 var testAccAzureRMCdnEndpoint_withTags = ` 153 resource "azurerm_resource_group" "test" { 154 name = "acctestrg-%d" 155 location = "West US" 156 } 157 resource "azurerm_cdn_profile" "test" { 158 name = "acctestcdnprof%d" 159 location = "West US" 160 resource_group_name = "${azurerm_resource_group.test.name}" 161 sku = "Standard" 162 } 163 164 resource "azurerm_cdn_endpoint" "test" { 165 name = "acctestcdnend%d" 166 profile_name = "${azurerm_cdn_profile.test.name}" 167 location = "West US" 168 resource_group_name = "${azurerm_resource_group.test.name}" 169 170 origin { 171 name = "acceptanceTestCdnOrigin2" 172 host_name = "www.example.com" 173 } 174 175 tags { 176 environment = "Production" 177 cost_center = "MSFT" 178 } 179 } 180 ` 181 182 var testAccAzureRMCdnEndpoint_withTagsUpdate = ` 183 resource "azurerm_resource_group" "test" { 184 name = "acctestrg-%d" 185 location = "West US" 186 } 187 resource "azurerm_cdn_profile" "test" { 188 name = "acctestcdnprof%d" 189 location = "West US" 190 resource_group_name = "${azurerm_resource_group.test.name}" 191 sku = "Standard" 192 } 193 194 resource "azurerm_cdn_endpoint" "test" { 195 name = "acctestcdnend%d" 196 profile_name = "${azurerm_cdn_profile.test.name}" 197 location = "West US" 198 resource_group_name = "${azurerm_resource_group.test.name}" 199 200 origin { 201 name = "acceptanceTestCdnOrigin2" 202 host_name = "www.example.com" 203 } 204 205 tags { 206 environment = "staging" 207 } 208 } 209 `