github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/azurerm/resource_arm_virtual_network_test.go (about)

     1  package azurerm
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/Azure/azure-sdk-for-go/core/http"
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccAzureRMVirtualNetwork_basic(t *testing.T) {
    13  	resource.Test(t, resource.TestCase{
    14  		PreCheck:     func() { testAccPreCheck(t) },
    15  		Providers:    testAccProviders,
    16  		CheckDestroy: testCheckAzureRMVirtualNetworkDestroy,
    17  		Steps: []resource.TestStep{
    18  			resource.TestStep{
    19  				Config: testAccAzureRMVirtualNetwork_basic,
    20  				Check: resource.ComposeTestCheckFunc(
    21  					testCheckAzureRMVirtualNetworkExists("azurerm_virtual_network.test"),
    22  				),
    23  			},
    24  		},
    25  	})
    26  }
    27  
    28  func TestAccAzureRMVirtualNetwork_withTags(t *testing.T) {
    29  	resource.Test(t, resource.TestCase{
    30  		PreCheck:     func() { testAccPreCheck(t) },
    31  		Providers:    testAccProviders,
    32  		CheckDestroy: testCheckAzureRMVirtualNetworkDestroy,
    33  		Steps: []resource.TestStep{
    34  			resource.TestStep{
    35  				Config: testAccAzureRMVirtualNetwork_withTags,
    36  				Check: resource.ComposeTestCheckFunc(
    37  					testCheckAzureRMVirtualNetworkExists("azurerm_virtual_network.test"),
    38  					resource.TestCheckResourceAttr(
    39  						"azurerm_virtual_network.test", "tags.#", "2"),
    40  					resource.TestCheckResourceAttr(
    41  						"azurerm_virtual_network.test", "tags.environment", "Production"),
    42  					resource.TestCheckResourceAttr(
    43  						"azurerm_virtual_network.test", "tags.cost_center", "MSFT"),
    44  				),
    45  			},
    46  
    47  			resource.TestStep{
    48  				Config: testAccAzureRMVirtualNetwork_withTagsUpdated,
    49  				Check: resource.ComposeTestCheckFunc(
    50  					testCheckAzureRMVirtualNetworkExists("azurerm_virtual_network.test"),
    51  					resource.TestCheckResourceAttr(
    52  						"azurerm_virtual_network.test", "tags.#", "1"),
    53  					resource.TestCheckResourceAttr(
    54  						"azurerm_virtual_network.test", "tags.environment", "staging"),
    55  				),
    56  			},
    57  		},
    58  	})
    59  }
    60  
    61  func testCheckAzureRMVirtualNetworkExists(name string) resource.TestCheckFunc {
    62  	return func(s *terraform.State) error {
    63  		// Ensure we have enough information in state to look up in API
    64  		rs, ok := s.RootModule().Resources[name]
    65  		if !ok {
    66  			return fmt.Errorf("Not found: %s", name)
    67  		}
    68  
    69  		virtualNetworkName := rs.Primary.Attributes["name"]
    70  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
    71  		if !hasResourceGroup {
    72  			return fmt.Errorf("Bad: no resource group found in state for virtual network: %s", virtualNetworkName)
    73  		}
    74  
    75  		// Ensure resource group/virtual network combination exists in API
    76  		conn := testAccProvider.Meta().(*ArmClient).vnetClient
    77  
    78  		resp, err := conn.Get(resourceGroup, virtualNetworkName, "")
    79  		if err != nil {
    80  			return fmt.Errorf("Bad: Get on vnetClient: %s", err)
    81  		}
    82  
    83  		if resp.StatusCode == http.StatusNotFound {
    84  			return fmt.Errorf("Bad: Virtual Network %q (resource group: %q) does not exist", name, resourceGroup)
    85  		}
    86  
    87  		return nil
    88  	}
    89  }
    90  
    91  func testCheckAzureRMVirtualNetworkDestroy(s *terraform.State) error {
    92  	conn := testAccProvider.Meta().(*ArmClient).vnetClient
    93  
    94  	for _, rs := range s.RootModule().Resources {
    95  		if rs.Type != "azurerm_virtual_network" {
    96  			continue
    97  		}
    98  
    99  		name := rs.Primary.Attributes["name"]
   100  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   101  
   102  		resp, err := conn.Get(resourceGroup, name, "")
   103  
   104  		if err != nil {
   105  			return nil
   106  		}
   107  
   108  		if resp.StatusCode != http.StatusNotFound {
   109  			return fmt.Errorf("Virtual Network sitll exists:\n%#v", resp.Properties)
   110  		}
   111  	}
   112  
   113  	return nil
   114  }
   115  
   116  var testAccAzureRMVirtualNetwork_basic = `
   117  resource "azurerm_resource_group" "test" {
   118      name = "acceptanceTestResourceGroup1"
   119      location = "West US"
   120  }
   121  
   122  resource "azurerm_virtual_network" "test" {
   123      name = "acceptanceTestVirtualNetwork1"
   124      address_space = ["10.0.0.0/16"]
   125      location = "West US"
   126      resource_group_name = "${azurerm_resource_group.test.name}"
   127  
   128      subnet {
   129          name = "subnet1"
   130          address_prefix = "10.0.1.0/24"
   131      }
   132  }
   133  `
   134  
   135  var testAccAzureRMVirtualNetwork_withTags = `
   136  resource "azurerm_resource_group" "test" {
   137      name = "acceptanceTestResourceGroup1"
   138      location = "West US"
   139  }
   140  
   141  resource "azurerm_virtual_network" "test" {
   142      name = "acceptanceTestVirtualNetwork1"
   143      address_space = ["10.0.0.0/16"]
   144      location = "West US"
   145      resource_group_name = "${azurerm_resource_group.test.name}"
   146  
   147      subnet {
   148          name = "subnet1"
   149          address_prefix = "10.0.1.0/24"
   150      }
   151  
   152      tags {
   153  	environment = "Production"
   154  	cost_center = "MSFT"
   155      }
   156  }
   157  `
   158  
   159  var testAccAzureRMVirtualNetwork_withTagsUpdated = `
   160  resource "azurerm_resource_group" "test" {
   161      name = "acceptanceTestResourceGroup1"
   162      location = "West US"
   163  }
   164  
   165  resource "azurerm_virtual_network" "test" {
   166      name = "acceptanceTestVirtualNetwork1"
   167      address_space = ["10.0.0.0/16"]
   168      location = "West US"
   169      resource_group_name = "${azurerm_resource_group.test.name}"
   170  
   171      subnet {
   172          name = "subnet1"
   173          address_prefix = "10.0.1.0/24"
   174      }
   175  
   176      tags {
   177  	environment = "staging"
   178      }
   179  }
   180  `