github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/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/acctest"
     9  	"github.com/hashicorp/terraform/helper/resource"
    10  	"github.com/hashicorp/terraform/terraform"
    11  )
    12  
    13  func TestAccAzureRMRoute_basic(t *testing.T) {
    14  
    15  	ri := acctest.RandInt()
    16  	config := fmt.Sprintf(testAccAzureRMRoute_basic, ri, ri, ri)
    17  
    18  	resource.Test(t, resource.TestCase{
    19  		PreCheck:     func() { testAccPreCheck(t) },
    20  		Providers:    testAccProviders,
    21  		CheckDestroy: testCheckAzureRMRouteDestroy,
    22  		Steps: []resource.TestStep{
    23  			{
    24  				Config: config,
    25  				Check: resource.ComposeTestCheckFunc(
    26  					testCheckAzureRMRouteExists("azurerm_route.test"),
    27  				),
    28  			},
    29  		},
    30  	})
    31  }
    32  
    33  func TestAccAzureRMRoute_disappears(t *testing.T) {
    34  
    35  	ri := acctest.RandInt()
    36  	config := fmt.Sprintf(testAccAzureRMRoute_basic, ri, ri, ri)
    37  
    38  	resource.Test(t, resource.TestCase{
    39  		PreCheck:     func() { testAccPreCheck(t) },
    40  		Providers:    testAccProviders,
    41  		CheckDestroy: testCheckAzureRMRouteDestroy,
    42  		Steps: []resource.TestStep{
    43  			{
    44  				Config: config,
    45  				Check: resource.ComposeTestCheckFunc(
    46  					testCheckAzureRMRouteExists("azurerm_route.test"),
    47  					testCheckAzureRMRouteDisappears("azurerm_route.test"),
    48  				),
    49  				ExpectNonEmptyPlan: true,
    50  			},
    51  		},
    52  	})
    53  }
    54  
    55  func TestAccAzureRMRoute_multipleRoutes(t *testing.T) {
    56  
    57  	ri := acctest.RandInt()
    58  	preConfig := fmt.Sprintf(testAccAzureRMRoute_basic, ri, ri, ri)
    59  	postConfig := fmt.Sprintf(testAccAzureRMRoute_multipleRoutes, ri, ri, ri)
    60  
    61  	resource.Test(t, resource.TestCase{
    62  		PreCheck:     func() { testAccPreCheck(t) },
    63  		Providers:    testAccProviders,
    64  		CheckDestroy: testCheckAzureRMRouteDestroy,
    65  		Steps: []resource.TestStep{
    66  			{
    67  				Config: preConfig,
    68  				Check: resource.ComposeTestCheckFunc(
    69  					testCheckAzureRMRouteExists("azurerm_route.test"),
    70  				),
    71  			},
    72  
    73  			{
    74  				Config: postConfig,
    75  				Check: resource.ComposeTestCheckFunc(
    76  					testCheckAzureRMRouteExists("azurerm_route.test1"),
    77  				),
    78  			},
    79  		},
    80  	})
    81  }
    82  
    83  func testCheckAzureRMRouteExists(name string) resource.TestCheckFunc {
    84  	return func(s *terraform.State) error {
    85  
    86  		rs, ok := s.RootModule().Resources[name]
    87  		if !ok {
    88  			return fmt.Errorf("Not found: %s", name)
    89  		}
    90  
    91  		name := rs.Primary.Attributes["name"]
    92  		rtName := rs.Primary.Attributes["route_table_name"]
    93  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
    94  		if !hasResourceGroup {
    95  			return fmt.Errorf("Bad: no resource group found in state for route: %s", name)
    96  		}
    97  
    98  		conn := testAccProvider.Meta().(*ArmClient).routesClient
    99  
   100  		resp, err := conn.Get(resourceGroup, rtName, name)
   101  		if err != nil {
   102  			return fmt.Errorf("Bad: Get on routesClient: %s", err)
   103  		}
   104  
   105  		if resp.StatusCode == http.StatusNotFound {
   106  			return fmt.Errorf("Bad: Route %q (resource group: %q) does not exist", name, resourceGroup)
   107  		}
   108  
   109  		return nil
   110  	}
   111  }
   112  
   113  func testCheckAzureRMRouteDisappears(name string) resource.TestCheckFunc {
   114  	return func(s *terraform.State) error {
   115  
   116  		rs, ok := s.RootModule().Resources[name]
   117  		if !ok {
   118  			return fmt.Errorf("Not found: %s", name)
   119  		}
   120  
   121  		name := rs.Primary.Attributes["name"]
   122  		rtName := rs.Primary.Attributes["route_table_name"]
   123  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
   124  		if !hasResourceGroup {
   125  			return fmt.Errorf("Bad: no resource group found in state for route: %s", name)
   126  		}
   127  
   128  		conn := testAccProvider.Meta().(*ArmClient).routesClient
   129  
   130  		_, error := conn.Delete(resourceGroup, rtName, name, make(chan struct{}))
   131  		err := <-error
   132  		if err != nil {
   133  			return fmt.Errorf("Bad: Delete on routesClient: %s", err)
   134  		}
   135  
   136  		return nil
   137  	}
   138  }
   139  
   140  func testCheckAzureRMRouteDestroy(s *terraform.State) error {
   141  	conn := testAccProvider.Meta().(*ArmClient).routesClient
   142  
   143  	for _, rs := range s.RootModule().Resources {
   144  		if rs.Type != "azurerm_route" {
   145  			continue
   146  		}
   147  
   148  		name := rs.Primary.Attributes["name"]
   149  		rtName := rs.Primary.Attributes["route_table_name"]
   150  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   151  
   152  		resp, err := conn.Get(resourceGroup, rtName, name)
   153  
   154  		if err != nil {
   155  			return nil
   156  		}
   157  
   158  		if resp.StatusCode != http.StatusNotFound {
   159  			return fmt.Errorf("Route still exists:\n%#v", resp.RoutePropertiesFormat)
   160  		}
   161  	}
   162  
   163  	return nil
   164  }
   165  
   166  var testAccAzureRMRoute_basic = `
   167  resource "azurerm_resource_group" "test" {
   168      name = "acctestRG-%d"
   169      location = "West US"
   170  }
   171  
   172  resource "azurerm_route_table" "test" {
   173      name = "acctestrt%d"
   174      location = "West US"
   175      resource_group_name = "${azurerm_resource_group.test.name}"
   176  }
   177  
   178  resource "azurerm_route" "test" {
   179      name = "acctestroute%d"
   180      resource_group_name = "${azurerm_resource_group.test.name}"
   181      route_table_name = "${azurerm_route_table.test.name}"
   182  
   183      address_prefix = "10.1.0.0/16"
   184      next_hop_type = "vnetlocal"
   185  }
   186  `
   187  
   188  var testAccAzureRMRoute_multipleRoutes = `
   189  resource "azurerm_resource_group" "test" {
   190      name = "acctestRG-%d"
   191      location = "West US"
   192  }
   193  
   194  resource "azurerm_route_table" "test" {
   195      name = "acctestrt%d"
   196      location = "West US"
   197      resource_group_name = "${azurerm_resource_group.test.name}"
   198  }
   199  
   200  resource "azurerm_route" "test1" {
   201      name = "acctestroute%d"
   202      resource_group_name = "${azurerm_resource_group.test.name}"
   203      route_table_name = "${azurerm_route_table.test.name}"
   204  
   205      address_prefix = "10.2.0.0/16"
   206      next_hop_type = "none"
   207  }
   208  `