github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/azurerm/resource_arm_route_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 TestAccAzureRMRoute_basic(t *testing.T) {
    13  
    14  	resource.Test(t, resource.TestCase{
    15  		PreCheck:     func() { testAccPreCheck(t) },
    16  		Providers:    testAccProviders,
    17  		CheckDestroy: testCheckAzureRMRouteDestroy,
    18  		Steps: []resource.TestStep{
    19  			resource.TestStep{
    20  				Config: testAccAzureRMRoute_basic,
    21  				Check: resource.ComposeTestCheckFunc(
    22  					testCheckAzureRMRouteExists("azurerm_route.test"),
    23  				),
    24  			},
    25  		},
    26  	})
    27  }
    28  
    29  func TestAccAzureRMRoute_multipleRoutes(t *testing.T) {
    30  
    31  	resource.Test(t, resource.TestCase{
    32  		PreCheck:     func() { testAccPreCheck(t) },
    33  		Providers:    testAccProviders,
    34  		CheckDestroy: testCheckAzureRMRouteDestroy,
    35  		Steps: []resource.TestStep{
    36  			resource.TestStep{
    37  				Config: testAccAzureRMRoute_basic,
    38  				Check: resource.ComposeTestCheckFunc(
    39  					testCheckAzureRMRouteExists("azurerm_route.test"),
    40  				),
    41  			},
    42  
    43  			resource.TestStep{
    44  				Config: testAccAzureRMRoute_multipleRoutes,
    45  				Check: resource.ComposeTestCheckFunc(
    46  					testCheckAzureRMRouteExists("azurerm_route.test1"),
    47  				),
    48  			},
    49  		},
    50  	})
    51  }
    52  
    53  func testCheckAzureRMRouteExists(name string) resource.TestCheckFunc {
    54  	return func(s *terraform.State) error {
    55  
    56  		rs, ok := s.RootModule().Resources[name]
    57  		if !ok {
    58  			return fmt.Errorf("Not found: %s", name)
    59  		}
    60  
    61  		name := rs.Primary.Attributes["name"]
    62  		rtName := rs.Primary.Attributes["route_table_name"]
    63  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
    64  		if !hasResourceGroup {
    65  			return fmt.Errorf("Bad: no resource group found in state for route: %s", name)
    66  		}
    67  
    68  		conn := testAccProvider.Meta().(*ArmClient).routesClient
    69  
    70  		resp, err := conn.Get(resourceGroup, rtName, name)
    71  		if err != nil {
    72  			return fmt.Errorf("Bad: Get on routesClient: %s", err)
    73  		}
    74  
    75  		if resp.StatusCode == http.StatusNotFound {
    76  			return fmt.Errorf("Bad: Route %q (resource group: %q) does not exist", name, resourceGroup)
    77  		}
    78  
    79  		return nil
    80  	}
    81  }
    82  
    83  func testCheckAzureRMRouteDestroy(s *terraform.State) error {
    84  	conn := testAccProvider.Meta().(*ArmClient).routesClient
    85  
    86  	for _, rs := range s.RootModule().Resources {
    87  		if rs.Type != "azurerm_route" {
    88  			continue
    89  		}
    90  
    91  		name := rs.Primary.Attributes["name"]
    92  		rtName := rs.Primary.Attributes["route_table_name"]
    93  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
    94  
    95  		resp, err := conn.Get(resourceGroup, rtName, name)
    96  
    97  		if err != nil {
    98  			return nil
    99  		}
   100  
   101  		if resp.StatusCode != http.StatusNotFound {
   102  			return fmt.Errorf("Route still exists:\n%#v", resp.Properties)
   103  		}
   104  	}
   105  
   106  	return nil
   107  }
   108  
   109  var testAccAzureRMRoute_basic = `
   110  resource "azurerm_resource_group" "test" {
   111      name = "acceptanceTestResourceGroup1"
   112      location = "West US"
   113  }
   114  
   115  resource "azurerm_route_table" "test" {
   116      name = "acceptanceTestRouteTable1"
   117      location = "West US"
   118      resource_group_name = "${azurerm_resource_group.test.name}"
   119  }
   120  
   121  resource "azurerm_route" "test" {
   122      name = "acceptanceTestRoute1"
   123      resource_group_name = "${azurerm_resource_group.test.name}"
   124      route_table_name = "${azurerm_route_table.test.name}"
   125  
   126      address_prefix = "10.1.0.0/16"
   127      next_hop_type = "vnetlocal"
   128  }
   129  `
   130  
   131  var testAccAzureRMRoute_multipleRoutes = `
   132  resource "azurerm_resource_group" "test" {
   133      name = "acceptanceTestResourceGroup1"
   134      location = "West US"
   135  }
   136  
   137  resource "azurerm_route_table" "test" {
   138      name = "acceptanceTestRouteTable1"
   139      location = "West US"
   140      resource_group_name = "${azurerm_resource_group.test.name}"
   141  }
   142  
   143  resource "azurerm_route" "test1" {
   144      name = "acceptanceTestRoute2"
   145      resource_group_name = "${azurerm_resource_group.test.name}"
   146      route_table_name = "${azurerm_route_table.test.name}"
   147  
   148      address_prefix = "10.2.0.0/16"
   149      next_hop_type = "none"
   150  }
   151  `