github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/azurerm/resource_arm_resource_group_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/Azure/azure-sdk-for-go/core/http" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 ) 11 12 func TestAccAzureRMResourceGroup_basic(t *testing.T) { 13 resource.Test(t, resource.TestCase{ 14 PreCheck: func() { testAccPreCheck(t) }, 15 Providers: testAccProviders, 16 CheckDestroy: testCheckAzureRMResourceGroupDestroy, 17 Steps: []resource.TestStep{ 18 resource.TestStep{ 19 Config: testAccAzureRMResourceGroup_basic, 20 Check: resource.ComposeTestCheckFunc( 21 testCheckAzureRMResourceGroupExists("azurerm_resource_group.test"), 22 ), 23 }, 24 }, 25 }) 26 } 27 28 func TestAccAzureRMResourceGroup_withTags(t *testing.T) { 29 resource.Test(t, resource.TestCase{ 30 PreCheck: func() { testAccPreCheck(t) }, 31 Providers: testAccProviders, 32 CheckDestroy: testCheckAzureRMResourceGroupDestroy, 33 Steps: []resource.TestStep{ 34 resource.TestStep{ 35 Config: testAccAzureRMResourceGroup_withTags, 36 Check: resource.ComposeTestCheckFunc( 37 testCheckAzureRMResourceGroupExists("azurerm_resource_group.test"), 38 resource.TestCheckResourceAttr( 39 "azurerm_resource_group.test", "tags.#", "2"), 40 resource.TestCheckResourceAttr( 41 "azurerm_resource_group.test", "tags.environment", "Production"), 42 resource.TestCheckResourceAttr( 43 "azurerm_resource_group.test", "tags.cost_center", "MSFT"), 44 ), 45 }, 46 47 resource.TestStep{ 48 Config: testAccAzureRMResourceGroup_withTagsUpdated, 49 Check: resource.ComposeTestCheckFunc( 50 testCheckAzureRMResourceGroupExists("azurerm_resource_group.test"), 51 resource.TestCheckResourceAttr( 52 "azurerm_resource_group.test", "tags.#", "1"), 53 resource.TestCheckResourceAttr( 54 "azurerm_resource_group.test", "tags.environment", "staging"), 55 ), 56 }, 57 }, 58 }) 59 } 60 61 func testCheckAzureRMResourceGroupExists(name string) resource.TestCheckFunc { 62 return func(s *terraform.State) error { 63 // Ensure we have enough information in state to look up in API 64 rs, ok := s.RootModule().Resources[name] 65 if !ok { 66 return fmt.Errorf("Not found: %s", name) 67 } 68 69 resourceGroup := rs.Primary.Attributes["name"] 70 71 // Ensure resource group exists in API 72 conn := testAccProvider.Meta().(*ArmClient).resourceGroupClient 73 74 resp, err := conn.Get(resourceGroup) 75 if err != nil { 76 return fmt.Errorf("Bad: Get on resourceGroupClient: %s", err) 77 } 78 79 if resp.StatusCode == http.StatusNotFound { 80 return fmt.Errorf("Bad: Virtual Network %q (resource group: %q) does not exist", name, resourceGroup) 81 } 82 83 return nil 84 } 85 } 86 87 func testCheckAzureRMResourceGroupDestroy(s *terraform.State) error { 88 conn := testAccProvider.Meta().(*ArmClient).resourceGroupClient 89 90 for _, rs := range s.RootModule().Resources { 91 if rs.Type != "azurerm_resource_group" { 92 continue 93 } 94 95 resourceGroup := rs.Primary.ID 96 97 resp, err := conn.Get(resourceGroup) 98 if err != nil { 99 return nil 100 } 101 102 if resp.StatusCode != http.StatusNotFound { 103 return fmt.Errorf("Resource Group still exists:\n%#v", resp.Properties) 104 } 105 } 106 107 return nil 108 } 109 110 var testAccAzureRMResourceGroup_basic = ` 111 resource "azurerm_resource_group" "test" { 112 name = "acceptanceTestResourceGroup1_basic" 113 location = "West US" 114 } 115 ` 116 117 var testAccAzureRMResourceGroup_withTags = ` 118 resource "azurerm_resource_group" "test" { 119 name = "acceptanceTestResourceGroup1_basic" 120 location = "West US" 121 122 tags { 123 environment = "Production" 124 cost_center = "MSFT" 125 } 126 } 127 ` 128 129 var testAccAzureRMResourceGroup_withTagsUpdated = ` 130 resource "azurerm_resource_group" "test" { 131 name = "acceptanceTestResourceGroup1_basic" 132 location = "West US" 133 134 tags { 135 environment = "staging" 136 } 137 } 138 `