github.com/aspring/terraform@v0.8.2-0.20161216122603-6a8619a5db2e/builtin/providers/azurerm/resource_arm_network_interface_card_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 TestAccAzureRMNetworkInterface_basic(t *testing.T) {
    14  	rInt := acctest.RandInt()
    15  	resource.Test(t, resource.TestCase{
    16  		PreCheck:     func() { testAccPreCheck(t) },
    17  		Providers:    testAccProviders,
    18  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    19  		Steps: []resource.TestStep{
    20  			{
    21  				Config: testAccAzureRMNetworkInterface_basic(rInt),
    22  				Check: resource.ComposeTestCheckFunc(
    23  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    24  				),
    25  			},
    26  		},
    27  	})
    28  }
    29  
    30  func TestAccAzureRMNetworkInterface_disappears(t *testing.T) {
    31  	rInt := acctest.RandInt()
    32  	resource.Test(t, resource.TestCase{
    33  		PreCheck:     func() { testAccPreCheck(t) },
    34  		Providers:    testAccProviders,
    35  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    36  		Steps: []resource.TestStep{
    37  			{
    38  				Config: testAccAzureRMNetworkInterface_basic(rInt),
    39  				Check: resource.ComposeTestCheckFunc(
    40  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    41  					testCheckAzureRMNetworkInterfaceDisappears("azurerm_network_interface.test"),
    42  				),
    43  				ExpectNonEmptyPlan: true,
    44  			},
    45  		},
    46  	})
    47  }
    48  
    49  func TestAccAzureRMNetworkInterface_enableIPForwarding(t *testing.T) {
    50  	rInt := acctest.RandInt()
    51  	resource.Test(t, resource.TestCase{
    52  		PreCheck:     func() { testAccPreCheck(t) },
    53  		Providers:    testAccProviders,
    54  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    55  		Steps: []resource.TestStep{
    56  			{
    57  				Config: testAccAzureRMNetworkInterface_ipForwarding(rInt),
    58  				Check: resource.ComposeTestCheckFunc(
    59  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    60  					resource.TestCheckResourceAttr(
    61  						"azurerm_network_interface.test", "enable_ip_forwarding", "true"),
    62  				),
    63  			},
    64  		},
    65  	})
    66  }
    67  
    68  func TestAccAzureRMNetworkInterface_withTags(t *testing.T) {
    69  	rInt := acctest.RandInt()
    70  	resource.Test(t, resource.TestCase{
    71  		PreCheck:     func() { testAccPreCheck(t) },
    72  		Providers:    testAccProviders,
    73  		CheckDestroy: testCheckAzureRMNetworkInterfaceDestroy,
    74  		Steps: []resource.TestStep{
    75  			{
    76  				Config: testAccAzureRMNetworkInterface_withTags(rInt),
    77  				Check: resource.ComposeTestCheckFunc(
    78  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    79  					resource.TestCheckResourceAttr(
    80  						"azurerm_network_interface.test", "tags.%", "2"),
    81  					resource.TestCheckResourceAttr(
    82  						"azurerm_network_interface.test", "tags.environment", "Production"),
    83  					resource.TestCheckResourceAttr(
    84  						"azurerm_network_interface.test", "tags.cost_center", "MSFT"),
    85  				),
    86  			},
    87  			{
    88  				Config: testAccAzureRMNetworkInterface_withTagsUpdate(rInt),
    89  				Check: resource.ComposeTestCheckFunc(
    90  					testCheckAzureRMNetworkInterfaceExists("azurerm_network_interface.test"),
    91  					resource.TestCheckResourceAttr(
    92  						"azurerm_network_interface.test", "tags.%", "1"),
    93  					resource.TestCheckResourceAttr(
    94  						"azurerm_network_interface.test", "tags.environment", "staging"),
    95  				),
    96  			},
    97  		},
    98  	})
    99  }
   100  
   101  func testCheckAzureRMNetworkInterfaceExists(name string) resource.TestCheckFunc {
   102  	return func(s *terraform.State) error {
   103  		// Ensure we have enough information in state to look up in API
   104  		rs, ok := s.RootModule().Resources[name]
   105  		if !ok {
   106  			return fmt.Errorf("Not found: %s", name)
   107  		}
   108  
   109  		name := rs.Primary.Attributes["name"]
   110  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
   111  		if !hasResourceGroup {
   112  			return fmt.Errorf("Bad: no resource group found in state for availability set: %s", name)
   113  		}
   114  
   115  		conn := testAccProvider.Meta().(*ArmClient).ifaceClient
   116  
   117  		resp, err := conn.Get(resourceGroup, name, "")
   118  		if err != nil {
   119  			return fmt.Errorf("Bad: Get on ifaceClient: %s", err)
   120  		}
   121  
   122  		if resp.StatusCode == http.StatusNotFound {
   123  			return fmt.Errorf("Bad: Network Interface %q (resource group: %q) does not exist", name, resourceGroup)
   124  		}
   125  
   126  		return nil
   127  	}
   128  }
   129  
   130  func testCheckAzureRMNetworkInterfaceDisappears(name string) resource.TestCheckFunc {
   131  	return func(s *terraform.State) error {
   132  		// Ensure we have enough information in state to look up in API
   133  		rs, ok := s.RootModule().Resources[name]
   134  		if !ok {
   135  			return fmt.Errorf("Not found: %s", name)
   136  		}
   137  
   138  		name := rs.Primary.Attributes["name"]
   139  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
   140  		if !hasResourceGroup {
   141  			return fmt.Errorf("Bad: no resource group found in state for availability set: %s", name)
   142  		}
   143  
   144  		conn := testAccProvider.Meta().(*ArmClient).ifaceClient
   145  
   146  		_, err := conn.Delete(resourceGroup, name, make(chan struct{}))
   147  		if err != nil {
   148  			return fmt.Errorf("Bad: Delete on ifaceClient: %s", err)
   149  		}
   150  
   151  		return nil
   152  	}
   153  }
   154  
   155  func testCheckAzureRMNetworkInterfaceDestroy(s *terraform.State) error {
   156  	conn := testAccProvider.Meta().(*ArmClient).ifaceClient
   157  
   158  	for _, rs := range s.RootModule().Resources {
   159  		if rs.Type != "azurerm_network_interface" {
   160  			continue
   161  		}
   162  
   163  		name := rs.Primary.Attributes["name"]
   164  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   165  
   166  		resp, err := conn.Get(resourceGroup, name, "")
   167  
   168  		if err != nil {
   169  			return nil
   170  		}
   171  
   172  		if resp.StatusCode != http.StatusNotFound {
   173  			return fmt.Errorf("Network Interface still exists:\n%#v", resp.InterfacePropertiesFormat)
   174  		}
   175  	}
   176  
   177  	return nil
   178  }
   179  
   180  func testAccAzureRMNetworkInterface_basic(rInt int) string {
   181  	return fmt.Sprintf(`
   182  resource "azurerm_resource_group" "test" {
   183      name = "acctest-rg-%d"
   184      location = "West US"
   185  }
   186  
   187  resource "azurerm_virtual_network" "test" {
   188      name = "acceptanceTestVirtualNetwork1"
   189      address_space = ["10.0.0.0/16"]
   190      location = "West US"
   191      resource_group_name = "${azurerm_resource_group.test.name}"
   192  }
   193  
   194  resource "azurerm_subnet" "test" {
   195      name = "testsubnet"
   196      resource_group_name = "${azurerm_resource_group.test.name}"
   197      virtual_network_name = "${azurerm_virtual_network.test.name}"
   198      address_prefix = "10.0.2.0/24"
   199  }
   200  
   201  resource "azurerm_network_interface" "test" {
   202      name = "acceptanceTestNetworkInterface1"
   203      location = "West US"
   204      resource_group_name = "${azurerm_resource_group.test.name}"
   205  
   206      ip_configuration {
   207      	name = "testconfiguration1"
   208      	subnet_id = "${azurerm_subnet.test.id}"
   209      	private_ip_address_allocation = "dynamic"
   210      }
   211  }
   212  `, rInt)
   213  }
   214  
   215  func testAccAzureRMNetworkInterface_ipForwarding(rInt int) string {
   216  	return fmt.Sprintf(`
   217  resource "azurerm_resource_group" "test" {
   218      name = "acctest-rg-%d"
   219      location = "West US"
   220  }
   221  
   222  resource "azurerm_virtual_network" "test" {
   223      name = "acceptanceTestVirtualNetwork1"
   224      address_space = ["10.0.0.0/16"]
   225      location = "West US"
   226      resource_group_name = "${azurerm_resource_group.test.name}"
   227  }
   228  
   229  resource "azurerm_subnet" "test" {
   230      name = "testsubnet"
   231      resource_group_name = "${azurerm_resource_group.test.name}"
   232      virtual_network_name = "${azurerm_virtual_network.test.name}"
   233      address_prefix = "10.0.2.0/24"
   234  }
   235  
   236  resource "azurerm_network_interface" "test" {
   237      name = "acceptanceTestNetworkInterface1"
   238      location = "West US"
   239      resource_group_name = "${azurerm_resource_group.test.name}"
   240      enable_ip_forwarding = true
   241  
   242      ip_configuration {
   243      	name = "testconfiguration1"
   244      	subnet_id = "${azurerm_subnet.test.id}"
   245      	private_ip_address_allocation = "dynamic"
   246      }
   247  }
   248  `, rInt)
   249  }
   250  
   251  func testAccAzureRMNetworkInterface_withTags(rInt int) string {
   252  	return fmt.Sprintf(`
   253  resource "azurerm_resource_group" "test" {
   254      name = "acctest-rg-%d"
   255      location = "West US"
   256  }
   257  
   258  resource "azurerm_virtual_network" "test" {
   259      name = "acceptanceTestVirtualNetwork1"
   260      address_space = ["10.0.0.0/16"]
   261      location = "West US"
   262      resource_group_name = "${azurerm_resource_group.test.name}"
   263  }
   264  
   265  resource "azurerm_subnet" "test" {
   266      name = "testsubnet"
   267      resource_group_name = "${azurerm_resource_group.test.name}"
   268      virtual_network_name = "${azurerm_virtual_network.test.name}"
   269      address_prefix = "10.0.2.0/24"
   270  }
   271  
   272  resource "azurerm_network_interface" "test" {
   273      name = "acceptanceTestNetworkInterface1"
   274      location = "West US"
   275      resource_group_name = "${azurerm_resource_group.test.name}"
   276  
   277      ip_configuration {
   278      	name = "testconfiguration1"
   279      	subnet_id = "${azurerm_subnet.test.id}"
   280      	private_ip_address_allocation = "dynamic"
   281      }
   282  
   283      tags {
   284  	environment = "Production"
   285  	cost_center = "MSFT"
   286      }
   287  }
   288  `, rInt)
   289  }
   290  
   291  func testAccAzureRMNetworkInterface_withTagsUpdate(rInt int) string {
   292  	return fmt.Sprintf(`
   293  resource "azurerm_resource_group" "test" {
   294      name = "acctest-rg-%d"
   295      location = "West US"
   296  }
   297  
   298  resource "azurerm_virtual_network" "test" {
   299      name = "acceptanceTestVirtualNetwork1"
   300      address_space = ["10.0.0.0/16"]
   301      location = "West US"
   302      resource_group_name = "${azurerm_resource_group.test.name}"
   303  }
   304  
   305  resource "azurerm_subnet" "test" {
   306      name = "testsubnet"
   307      resource_group_name = "${azurerm_resource_group.test.name}"
   308      virtual_network_name = "${azurerm_virtual_network.test.name}"
   309      address_prefix = "10.0.2.0/24"
   310  }
   311  
   312  resource "azurerm_network_interface" "test" {
   313      name = "acceptanceTestNetworkInterface1"
   314      location = "West US"
   315      resource_group_name = "${azurerm_resource_group.test.name}"
   316  
   317      ip_configuration {
   318      	name = "testconfiguration1"
   319      	subnet_id = "${azurerm_subnet.test.id}"
   320      	private_ip_address_allocation = "dynamic"
   321      }
   322  
   323      tags {
   324  	environment = "staging"
   325      }
   326  }
   327  `, rInt)
   328  }