github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/azurerm/resource_arm_servicebus_namespace_test.go (about)

     1  package azurerm
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"regexp"
     7  	"testing"
     8  
     9  	"github.com/hashicorp/terraform/helper/acctest"
    10  	"github.com/hashicorp/terraform/helper/resource"
    11  	"github.com/hashicorp/terraform/terraform"
    12  )
    13  
    14  func TestAccAzureRMServiceBusNamespaceCapacity_validation(t *testing.T) {
    15  	cases := []struct {
    16  		Value    int
    17  		ErrCount int
    18  	}{
    19  		{
    20  			Value:    17,
    21  			ErrCount: 1,
    22  		},
    23  		{
    24  			Value:    1,
    25  			ErrCount: 0,
    26  		},
    27  		{
    28  			Value:    2,
    29  			ErrCount: 0,
    30  		},
    31  		{
    32  			Value:    4,
    33  			ErrCount: 0,
    34  		},
    35  	}
    36  
    37  	for _, tc := range cases {
    38  		_, errors := validateServiceBusNamespaceCapacity(tc.Value, "azurerm_servicebus_namespace")
    39  
    40  		if len(errors) != tc.ErrCount {
    41  			t.Fatalf("Expected the Azure RM ServiceBus Namespace Capacity to trigger a validation error")
    42  		}
    43  	}
    44  }
    45  
    46  func TestAccAzureRMServiceBusNamespaceSku_validation(t *testing.T) {
    47  	cases := []struct {
    48  		Value    string
    49  		ErrCount int
    50  	}{
    51  		{
    52  			Value:    "Basic",
    53  			ErrCount: 0,
    54  		},
    55  		{
    56  			Value:    "Standard",
    57  			ErrCount: 0,
    58  		},
    59  		{
    60  			Value:    "Premium",
    61  			ErrCount: 0,
    62  		},
    63  		{
    64  			Value:    "Random",
    65  			ErrCount: 1,
    66  		},
    67  	}
    68  
    69  	for _, tc := range cases {
    70  		_, errors := validateServiceBusNamespaceSku(tc.Value, "azurerm_servicebus_namespace")
    71  
    72  		if len(errors) != tc.ErrCount {
    73  			t.Fatalf("Expected the Azure RM ServiceBus Namespace Sku to trigger a validation error")
    74  		}
    75  	}
    76  }
    77  
    78  func TestAccAzureRMServiceBusNamespace_basic(t *testing.T) {
    79  
    80  	ri := acctest.RandInt()
    81  	config := fmt.Sprintf(testAccAzureRMServiceBusNamespace_basic, ri, ri)
    82  
    83  	resource.Test(t, resource.TestCase{
    84  		PreCheck:     func() { testAccPreCheck(t) },
    85  		Providers:    testAccProviders,
    86  		CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy,
    87  		Steps: []resource.TestStep{
    88  			resource.TestStep{
    89  				Config: config,
    90  				Check: resource.ComposeTestCheckFunc(
    91  					testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"),
    92  				),
    93  			},
    94  		},
    95  	})
    96  }
    97  
    98  func TestAccAzureRMServiceBusNamespace_readDefaultKeys(t *testing.T) {
    99  	ri := acctest.RandInt()
   100  	config := fmt.Sprintf(testAccAzureRMServiceBusNamespace_basic, ri, ri)
   101  
   102  	resource.Test(t, resource.TestCase{
   103  		PreCheck:     func() { testAccPreCheck(t) },
   104  		Providers:    testAccProviders,
   105  		CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy,
   106  		Steps: []resource.TestStep{
   107  			resource.TestStep{
   108  				Config: config,
   109  				Check: resource.ComposeTestCheckFunc(
   110  					testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"),
   111  					resource.TestMatchResourceAttr(
   112  						"azurerm_servicebus_namespace.test", "default_primary_connection_string", regexp.MustCompile("Endpoint=.+")),
   113  					resource.TestMatchResourceAttr(
   114  						"azurerm_servicebus_namespace.test", "default_secondary_connection_string", regexp.MustCompile("Endpoint=.+")),
   115  					resource.TestMatchResourceAttr(
   116  						"azurerm_servicebus_namespace.test", "default_primary_key", regexp.MustCompile(".+")),
   117  					resource.TestMatchResourceAttr(
   118  						"azurerm_servicebus_namespace.test", "default_secondary_key", regexp.MustCompile(".+")),
   119  				),
   120  			},
   121  		},
   122  	})
   123  }
   124  
   125  func TestAccAzureRMServiceBusNamespace_NonStandardCasing(t *testing.T) {
   126  
   127  	ri := acctest.RandInt()
   128  	config := testAccAzureRMServiceBusNamespaceNonStandardCasing(ri)
   129  
   130  	resource.Test(t, resource.TestCase{
   131  		PreCheck:     func() { testAccPreCheck(t) },
   132  		Providers:    testAccProviders,
   133  		CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy,
   134  		Steps: []resource.TestStep{
   135  			resource.TestStep{
   136  				Config: config,
   137  				Check: resource.ComposeTestCheckFunc(
   138  					testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"),
   139  				),
   140  			},
   141  			resource.TestStep{
   142  				Config:             config,
   143  				PlanOnly:           true,
   144  				ExpectNonEmptyPlan: false,
   145  			},
   146  		},
   147  	})
   148  }
   149  
   150  func testCheckAzureRMServiceBusNamespaceDestroy(s *terraform.State) error {
   151  	conn := testAccProvider.Meta().(*ArmClient).serviceBusNamespacesClient
   152  
   153  	for _, rs := range s.RootModule().Resources {
   154  		if rs.Type != "azurerm_servicebus_namespace" {
   155  			continue
   156  		}
   157  
   158  		name := rs.Primary.Attributes["name"]
   159  		resourceGroup := rs.Primary.Attributes["resource_group_name"]
   160  
   161  		resp, err := conn.Get(resourceGroup, name)
   162  
   163  		if err != nil {
   164  			return nil
   165  		}
   166  
   167  		if resp.StatusCode != http.StatusNotFound {
   168  			return fmt.Errorf("ServiceBus Namespace still exists:\n%+v", resp)
   169  		}
   170  	}
   171  
   172  	return nil
   173  }
   174  
   175  func testCheckAzureRMServiceBusNamespaceExists(name string) resource.TestCheckFunc {
   176  	return func(s *terraform.State) error {
   177  		// Ensure we have enough information in state to look up in API
   178  		rs, ok := s.RootModule().Resources[name]
   179  		if !ok {
   180  			return fmt.Errorf("Not found: %s", name)
   181  		}
   182  
   183  		namespaceName := rs.Primary.Attributes["name"]
   184  		resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"]
   185  		if !hasResourceGroup {
   186  			return fmt.Errorf("Bad: no resource group found in state for Service Bus Namespace: %s", namespaceName)
   187  		}
   188  
   189  		conn := testAccProvider.Meta().(*ArmClient).serviceBusNamespacesClient
   190  
   191  		resp, err := conn.Get(resourceGroup, namespaceName)
   192  		if err != nil {
   193  			return fmt.Errorf("Bad: Get on serviceBusNamespacesClient: %+v", err)
   194  		}
   195  
   196  		if resp.StatusCode == http.StatusNotFound {
   197  			return fmt.Errorf("Bad: Service Bus Namespace %q (resource group: %q) does not exist", namespaceName, resourceGroup)
   198  		}
   199  
   200  		return nil
   201  	}
   202  }
   203  
   204  var testAccAzureRMServiceBusNamespace_basic = `
   205  resource "azurerm_resource_group" "test" {
   206      name = "acctestRG-%d"
   207      location = "West US"
   208  }
   209  resource "azurerm_servicebus_namespace" "test" {
   210      name = "acctestservicebusnamespace-%d"
   211      location = "West US"
   212      resource_group_name = "${azurerm_resource_group.test.name}"
   213      sku = "basic"
   214  }
   215  `
   216  
   217  func testAccAzureRMServiceBusNamespaceNonStandardCasing(ri int) string {
   218  	return fmt.Sprintf(`
   219  resource "azurerm_resource_group" "test" {
   220      name = "acctestRG-%d"
   221      location = "West US"
   222  }
   223  resource "azurerm_servicebus_namespace" "test" {
   224      name = "acctestservicebusnamespace-%d"
   225      location = "West US"
   226      resource_group_name = "${azurerm_resource_group.test.name}"
   227      sku = "Basic"
   228  }
   229  `, ri, ri)
   230  }