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