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