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  `