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  }