github.com/recobe182/terraform@v0.8.5-0.20170117231232-49ab22a935b7/builtin/providers/azurerm/resource_arm_loadbalancer_nat_pool_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "github.com/Azure/azure-sdk-for-go/arm/network" 9 "github.com/hashicorp/terraform/helper/acctest" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAzureRMLoadBalancerNatPool_basic(t *testing.T) { 15 var lb network.LoadBalancer 16 ri := acctest.RandInt() 17 natPoolName := fmt.Sprintf("NatPool-%d", ri) 18 19 subscriptionID := os.Getenv("ARM_SUBSCRIPTION_ID") 20 natPool_id := fmt.Sprintf( 21 "/subscriptions/%s/resourceGroups/acctestrg-%d/providers/Microsoft.Network/loadBalancers/arm-test-loadbalancer-%d/inboundNatPools/%s", 22 subscriptionID, ri, ri, natPoolName) 23 24 resource.Test(t, resource.TestCase{ 25 PreCheck: func() { testAccPreCheck(t) }, 26 Providers: testAccProviders, 27 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 28 Steps: []resource.TestStep{ 29 { 30 Config: testAccAzureRMLoadBalancerNatPool_basic(ri, natPoolName), 31 Check: resource.ComposeTestCheckFunc( 32 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 33 testCheckAzureRMLoadBalancerNatPoolExists(natPoolName, &lb), 34 resource.TestCheckResourceAttr( 35 "azurerm_lb_nat_pool.test", "id", natPool_id), 36 ), 37 }, 38 }, 39 }) 40 } 41 42 func TestAccAzureRMLoadBalancerNatPool_removal(t *testing.T) { 43 var lb network.LoadBalancer 44 ri := acctest.RandInt() 45 natPoolName := fmt.Sprintf("NatPool-%d", ri) 46 47 resource.Test(t, resource.TestCase{ 48 PreCheck: func() { testAccPreCheck(t) }, 49 Providers: testAccProviders, 50 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 51 Steps: []resource.TestStep{ 52 { 53 Config: testAccAzureRMLoadBalancerNatPool_basic(ri, natPoolName), 54 Check: resource.ComposeTestCheckFunc( 55 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 56 testCheckAzureRMLoadBalancerNatPoolExists(natPoolName, &lb), 57 ), 58 }, 59 { 60 Config: testAccAzureRMLoadBalancerNatPool_removal(ri), 61 Check: resource.ComposeTestCheckFunc( 62 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 63 testCheckAzureRMLoadBalancerNatPoolNotExists(natPoolName, &lb), 64 ), 65 }, 66 }, 67 }) 68 } 69 70 func TestAccAzureRMLoadBalancerNatPool_update(t *testing.T) { 71 var lb network.LoadBalancer 72 ri := acctest.RandInt() 73 natPoolName := fmt.Sprintf("NatPool-%d", ri) 74 natPool2Name := fmt.Sprintf("NatPool-%d", acctest.RandInt()) 75 76 resource.Test(t, resource.TestCase{ 77 PreCheck: func() { testAccPreCheck(t) }, 78 Providers: testAccProviders, 79 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 80 Steps: []resource.TestStep{ 81 { 82 Config: testAccAzureRMLoadBalancerNatPool_multiplePools(ri, natPoolName, natPool2Name), 83 Check: resource.ComposeTestCheckFunc( 84 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 85 testCheckAzureRMLoadBalancerNatPoolExists(natPoolName, &lb), 86 testCheckAzureRMLoadBalancerNatPoolExists(natPool2Name, &lb), 87 resource.TestCheckResourceAttr("azurerm_lb_nat_pool.test2", "backend_port", "3390"), 88 ), 89 }, 90 { 91 Config: testAccAzureRMLoadBalancerNatPool_multiplePoolsUpdate(ri, natPoolName, natPool2Name), 92 Check: resource.ComposeTestCheckFunc( 93 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 94 testCheckAzureRMLoadBalancerNatPoolExists(natPoolName, &lb), 95 testCheckAzureRMLoadBalancerNatPoolExists(natPool2Name, &lb), 96 resource.TestCheckResourceAttr("azurerm_lb_nat_pool.test2", "backend_port", "3391"), 97 ), 98 }, 99 }, 100 }) 101 } 102 103 func TestAccAzureRMLoadBalancerNatPool_reapply(t *testing.T) { 104 var lb network.LoadBalancer 105 ri := acctest.RandInt() 106 natPoolName := fmt.Sprintf("NatPool-%d", ri) 107 108 deleteNatPoolState := func(s *terraform.State) error { 109 return s.Remove("azurerm_lb_nat_pool.test") 110 } 111 112 resource.Test(t, resource.TestCase{ 113 PreCheck: func() { testAccPreCheck(t) }, 114 Providers: testAccProviders, 115 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 116 Steps: []resource.TestStep{ 117 { 118 Config: testAccAzureRMLoadBalancerNatPool_basic(ri, natPoolName), 119 Check: resource.ComposeTestCheckFunc( 120 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 121 testCheckAzureRMLoadBalancerNatPoolExists(natPoolName, &lb), 122 deleteNatPoolState, 123 ), 124 ExpectNonEmptyPlan: true, 125 }, 126 { 127 Config: testAccAzureRMLoadBalancerNatPool_basic(ri, natPoolName), 128 Check: resource.ComposeTestCheckFunc( 129 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 130 testCheckAzureRMLoadBalancerNatPoolExists(natPoolName, &lb), 131 ), 132 }, 133 }, 134 }) 135 } 136 137 func testCheckAzureRMLoadBalancerNatPoolExists(natPoolName string, lb *network.LoadBalancer) resource.TestCheckFunc { 138 return func(s *terraform.State) error { 139 _, _, exists := findLoadBalancerNatPoolByName(lb, natPoolName) 140 if !exists { 141 return fmt.Errorf("A NAT Pool with name %q cannot be found.", natPoolName) 142 } 143 144 return nil 145 } 146 } 147 148 func testCheckAzureRMLoadBalancerNatPoolNotExists(natPoolName string, lb *network.LoadBalancer) resource.TestCheckFunc { 149 return func(s *terraform.State) error { 150 _, _, exists := findLoadBalancerNatPoolByName(lb, natPoolName) 151 if exists { 152 return fmt.Errorf("A NAT Pool with name %q has been found.", natPoolName) 153 } 154 155 return nil 156 } 157 } 158 159 func testAccAzureRMLoadBalancerNatPool_basic(rInt int, natPoolName string) string { 160 return fmt.Sprintf(` 161 resource "azurerm_resource_group" "test" { 162 name = "acctestrg-%d" 163 location = "West US" 164 } 165 166 resource "azurerm_public_ip" "test" { 167 name = "test-ip-%d" 168 location = "West US" 169 resource_group_name = "${azurerm_resource_group.test.name}" 170 public_ip_address_allocation = "static" 171 } 172 173 resource "azurerm_lb" "test" { 174 name = "arm-test-loadbalancer-%d" 175 location = "West US" 176 resource_group_name = "${azurerm_resource_group.test.name}" 177 178 frontend_ip_configuration { 179 name = "one-%d" 180 public_ip_address_id = "${azurerm_public_ip.test.id}" 181 } 182 } 183 184 resource "azurerm_lb_nat_pool" "test" { 185 location = "West US" 186 resource_group_name = "${azurerm_resource_group.test.name}" 187 loadbalancer_id = "${azurerm_lb.test.id}" 188 name = "%s" 189 protocol = "Tcp" 190 frontend_port_start = 80 191 frontend_port_end = 81 192 backend_port = 3389 193 frontend_ip_configuration_name = "one-%d" 194 } 195 196 `, rInt, rInt, rInt, rInt, natPoolName, rInt) 197 } 198 199 func testAccAzureRMLoadBalancerNatPool_removal(rInt int) string { 200 return fmt.Sprintf(` 201 resource "azurerm_resource_group" "test" { 202 name = "acctestrg-%d" 203 location = "West US" 204 } 205 206 resource "azurerm_public_ip" "test" { 207 name = "test-ip-%d" 208 location = "West US" 209 resource_group_name = "${azurerm_resource_group.test.name}" 210 public_ip_address_allocation = "static" 211 } 212 213 resource "azurerm_lb" "test" { 214 name = "arm-test-loadbalancer-%d" 215 location = "West US" 216 resource_group_name = "${azurerm_resource_group.test.name}" 217 218 frontend_ip_configuration { 219 name = "one-%d" 220 public_ip_address_id = "${azurerm_public_ip.test.id}" 221 } 222 } 223 `, rInt, rInt, rInt, rInt) 224 } 225 226 func testAccAzureRMLoadBalancerNatPool_multiplePools(rInt int, natPoolName, natPool2Name string) string { 227 return fmt.Sprintf(` 228 resource "azurerm_resource_group" "test" { 229 name = "acctestrg-%d" 230 location = "West US" 231 } 232 233 resource "azurerm_public_ip" "test" { 234 name = "test-ip-%d" 235 location = "West US" 236 resource_group_name = "${azurerm_resource_group.test.name}" 237 public_ip_address_allocation = "static" 238 } 239 240 resource "azurerm_lb" "test" { 241 name = "arm-test-loadbalancer-%d" 242 location = "West US" 243 resource_group_name = "${azurerm_resource_group.test.name}" 244 245 frontend_ip_configuration { 246 name = "one-%d" 247 public_ip_address_id = "${azurerm_public_ip.test.id}" 248 } 249 } 250 251 resource "azurerm_lb_nat_pool" "test" { 252 location = "West US" 253 resource_group_name = "${azurerm_resource_group.test.name}" 254 loadbalancer_id = "${azurerm_lb.test.id}" 255 name = "%s" 256 protocol = "Tcp" 257 frontend_port_start = 80 258 frontend_port_end = 81 259 backend_port = 3389 260 frontend_ip_configuration_name = "one-%d" 261 } 262 263 resource "azurerm_lb_nat_pool" "test2" { 264 location = "West US" 265 resource_group_name = "${azurerm_resource_group.test.name}" 266 loadbalancer_id = "${azurerm_lb.test.id}" 267 name = "%s" 268 protocol = "Tcp" 269 frontend_port_start = 82 270 frontend_port_end = 83 271 backend_port = 3390 272 frontend_ip_configuration_name = "one-%d" 273 } 274 275 `, rInt, rInt, rInt, rInt, natPoolName, rInt, natPool2Name, rInt) 276 } 277 278 func testAccAzureRMLoadBalancerNatPool_multiplePoolsUpdate(rInt int, natPoolName, natPool2Name string) string { 279 return fmt.Sprintf(` 280 resource "azurerm_resource_group" "test" { 281 name = "acctestrg-%d" 282 location = "West US" 283 } 284 285 resource "azurerm_public_ip" "test" { 286 name = "test-ip-%d" 287 location = "West US" 288 resource_group_name = "${azurerm_resource_group.test.name}" 289 public_ip_address_allocation = "static" 290 } 291 292 resource "azurerm_lb" "test" { 293 name = "arm-test-loadbalancer-%d" 294 location = "West US" 295 resource_group_name = "${azurerm_resource_group.test.name}" 296 297 frontend_ip_configuration { 298 name = "one-%d" 299 public_ip_address_id = "${azurerm_public_ip.test.id}" 300 } 301 } 302 303 resource "azurerm_lb_nat_pool" "test" { 304 location = "West US" 305 resource_group_name = "${azurerm_resource_group.test.name}" 306 loadbalancer_id = "${azurerm_lb.test.id}" 307 name = "%s" 308 protocol = "Tcp" 309 frontend_port_start = 80 310 frontend_port_end = 81 311 backend_port = 3389 312 frontend_ip_configuration_name = "one-%d" 313 } 314 315 resource "azurerm_lb_nat_pool" "test2" { 316 location = "West US" 317 resource_group_name = "${azurerm_resource_group.test.name}" 318 loadbalancer_id = "${azurerm_lb.test.id}" 319 name = "%s" 320 protocol = "Tcp" 321 frontend_port_start = 82 322 frontend_port_end = 83 323 backend_port = 3391 324 frontend_ip_configuration_name = "one-%d" 325 } 326 327 `, rInt, rInt, rInt, rInt, natPoolName, rInt, natPool2Name, rInt) 328 }