github.com/erriapo/terraform@v0.6.12-0.20160203182612-0340ea72354f/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  `