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 `