github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/azurerm/resource_arm_virtual_network_peering_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMVirtualNetworkPeering_basic(t *testing.T) { 14 ri := acctest.RandInt() 15 config := fmt.Sprintf(testAccAzureRMVirtualNetworkPeering_basic, ri, ri, ri, ri, ri) 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testCheckAzureRMVirtualNetworkPeeringDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: config, 24 Check: resource.ComposeTestCheckFunc( 25 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test1"), 26 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test2"), 27 resource.TestCheckResourceAttr( 28 "azurerm_virtual_network_peering.test1", "allow_virtual_network_access", "true"), 29 resource.TestCheckResourceAttr( 30 "azurerm_virtual_network_peering.test2", "allow_virtual_network_access", "true"), 31 ), 32 }, 33 }, 34 }) 35 } 36 37 func TestAccAzureRMVirtualNetworkPeering_disappears(t *testing.T) { 38 ri := acctest.RandInt() 39 config := fmt.Sprintf(testAccAzureRMVirtualNetworkPeering_basic, ri, ri, ri, ri, ri) 40 41 resource.Test(t, resource.TestCase{ 42 PreCheck: func() { testAccPreCheck(t) }, 43 Providers: testAccProviders, 44 CheckDestroy: testCheckAzureRMVirtualNetworkPeeringDestroy, 45 Steps: []resource.TestStep{ 46 resource.TestStep{ 47 Config: config, 48 Check: resource.ComposeTestCheckFunc( 49 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test1"), 50 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test2"), 51 resource.TestCheckResourceAttr( 52 "azurerm_virtual_network_peering.test1", "allow_virtual_network_access", "true"), 53 resource.TestCheckResourceAttr( 54 "azurerm_virtual_network_peering.test2", "allow_virtual_network_access", "true"), 55 testCheckAzureRMVirtualNetworkPeeringDisappears("azurerm_virtual_network_peering.test1"), 56 ), 57 ExpectNonEmptyPlan: true, 58 }, 59 }, 60 }) 61 } 62 63 func TestAccAzureRMVirtualNetworkPeering_update(t *testing.T) { 64 ri := acctest.RandInt() 65 preConfig := fmt.Sprintf(testAccAzureRMVirtualNetworkPeering_basic, ri, ri, ri, ri, ri) 66 postConfig := fmt.Sprintf(testAccAzureRMVirtualNetworkPeering_basicUpdate, ri, ri, ri, ri, ri) 67 68 resource.Test(t, resource.TestCase{ 69 PreCheck: func() { testAccPreCheck(t) }, 70 Providers: testAccProviders, 71 CheckDestroy: testCheckAzureRMVirtualNetworkPeeringDestroy, 72 Steps: []resource.TestStep{ 73 resource.TestStep{ 74 Config: preConfig, 75 Check: resource.ComposeTestCheckFunc( 76 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test1"), 77 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test2"), 78 resource.TestCheckResourceAttr( 79 "azurerm_virtual_network_peering.test1", "allow_virtual_network_access", "true"), 80 resource.TestCheckResourceAttr( 81 "azurerm_virtual_network_peering.test2", "allow_virtual_network_access", "true"), 82 resource.TestCheckResourceAttr( 83 "azurerm_virtual_network_peering.test1", "allow_forwarded_traffic", "false"), 84 resource.TestCheckResourceAttr( 85 "azurerm_virtual_network_peering.test2", "allow_forwarded_traffic", "false"), 86 ), 87 }, 88 89 resource.TestStep{ 90 Config: postConfig, 91 Check: resource.ComposeTestCheckFunc( 92 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test1"), 93 testCheckAzureRMVirtualNetworkPeeringExists("azurerm_virtual_network_peering.test2"), 94 resource.TestCheckResourceAttr( 95 "azurerm_virtual_network_peering.test1", "allow_virtual_network_access", "true"), 96 resource.TestCheckResourceAttr( 97 "azurerm_virtual_network_peering.test2", "allow_virtual_network_access", "true"), 98 resource.TestCheckResourceAttr( 99 "azurerm_virtual_network_peering.test1", "allow_forwarded_traffic", "true"), 100 resource.TestCheckResourceAttr( 101 "azurerm_virtual_network_peering.test2", "allow_forwarded_traffic", "true"), 102 ), 103 }, 104 }, 105 }) 106 } 107 108 func testCheckAzureRMVirtualNetworkPeeringExists(name string) resource.TestCheckFunc { 109 return func(s *terraform.State) error { 110 // Ensure we have enough information in state to look up in API 111 rs, ok := s.RootModule().Resources[name] 112 if !ok { 113 return fmt.Errorf("Not found: %s", name) 114 } 115 116 name := rs.Primary.Attributes["name"] 117 vnetName := rs.Primary.Attributes["virtual_network_name"] 118 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 119 if !hasResourceGroup { 120 return fmt.Errorf("Bad: no resource group found in state for virtual network peering: %s", name) 121 } 122 123 // Ensure resource group/virtual network peering combination exists in API 124 conn := testAccProvider.Meta().(*ArmClient).vnetPeeringsClient 125 126 resp, err := conn.Get(resourceGroup, vnetName, name) 127 if err != nil { 128 return fmt.Errorf("Bad: Get on vnetPeeringsClient: %s", err) 129 } 130 131 if resp.StatusCode == http.StatusNotFound { 132 return fmt.Errorf("Bad: Virtual Network Peering %q (resource group: %q) does not exist", name, resourceGroup) 133 } 134 135 return nil 136 } 137 } 138 139 func testCheckAzureRMVirtualNetworkPeeringDisappears(name string) resource.TestCheckFunc { 140 return func(s *terraform.State) error { 141 // Ensure we have enough information in state to look up in API 142 rs, ok := s.RootModule().Resources[name] 143 if !ok { 144 return fmt.Errorf("Not found: %s", name) 145 } 146 147 name := rs.Primary.Attributes["name"] 148 vnetName := rs.Primary.Attributes["virtual_network_name"] 149 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 150 if !hasResourceGroup { 151 return fmt.Errorf("Bad: no resource group found in state for virtual network peering: %s", name) 152 } 153 154 // Ensure resource group/virtual network peering combination exists in API 155 conn := testAccProvider.Meta().(*ArmClient).vnetPeeringsClient 156 157 _, error := conn.Delete(resourceGroup, vnetName, name, make(chan struct{})) 158 err := <-error 159 if err != nil { 160 return fmt.Errorf("Bad: Delete on vnetPeeringsClient: %s", err) 161 } 162 163 return nil 164 } 165 } 166 167 func testCheckAzureRMVirtualNetworkPeeringDestroy(s *terraform.State) error { 168 conn := testAccProvider.Meta().(*ArmClient).vnetPeeringsClient 169 170 for _, rs := range s.RootModule().Resources { 171 if rs.Type != "azurerm_virtual_network_peering" { 172 continue 173 } 174 175 name := rs.Primary.Attributes["name"] 176 vnetName := rs.Primary.Attributes["virtual_network_name"] 177 resourceGroup := rs.Primary.Attributes["resource_group_name"] 178 179 resp, err := conn.Get(resourceGroup, vnetName, name) 180 if err != nil { 181 return nil 182 } 183 184 if resp.StatusCode != http.StatusNotFound { 185 return fmt.Errorf("Virtual Network Peering sitll exists:\n%#v", resp.VirtualNetworkPeeringPropertiesFormat) 186 } 187 } 188 189 return nil 190 } 191 192 var testAccAzureRMVirtualNetworkPeering_basic = ` 193 resource "azurerm_resource_group" "test" { 194 name = "acctestRG-%d" 195 location = "West US" 196 } 197 198 resource "azurerm_virtual_network" "test1" { 199 name = "acctestvirtnet-1-%d" 200 resource_group_name = "${azurerm_resource_group.test.name}" 201 address_space = ["10.0.1.0/24"] 202 location = "${azurerm_resource_group.test.location}" 203 } 204 205 resource "azurerm_virtual_network" "test2" { 206 name = "acctestvirtnet-2-%d" 207 resource_group_name = "${azurerm_resource_group.test.name}" 208 address_space = ["10.0.2.0/24"] 209 location = "${azurerm_resource_group.test.location}" 210 } 211 212 resource "azurerm_virtual_network_peering" "test1" { 213 name = "acctestpeer-1-%d" 214 resource_group_name = "${azurerm_resource_group.test.name}" 215 virtual_network_name = "${azurerm_virtual_network.test1.name}" 216 remote_virtual_network_id = "${azurerm_virtual_network.test2.id}" 217 allow_virtual_network_access = true 218 } 219 220 resource "azurerm_virtual_network_peering" "test2" { 221 name = "acctestpeer-2-%d" 222 resource_group_name = "${azurerm_resource_group.test.name}" 223 virtual_network_name = "${azurerm_virtual_network.test2.name}" 224 remote_virtual_network_id = "${azurerm_virtual_network.test1.id}" 225 allow_virtual_network_access = true 226 } 227 ` 228 229 var testAccAzureRMVirtualNetworkPeering_basicUpdate = ` 230 resource "azurerm_resource_group" "test" { 231 name = "acctestRG-%d" 232 location = "West US" 233 } 234 235 resource "azurerm_virtual_network" "test1" { 236 name = "acctestvirtnet-1-%d" 237 resource_group_name = "${azurerm_resource_group.test.name}" 238 address_space = ["10.0.1.0/24"] 239 location = "${azurerm_resource_group.test.location}" 240 } 241 242 resource "azurerm_virtual_network" "test2" { 243 name = "acctestvirtnet-2-%d" 244 resource_group_name = "${azurerm_resource_group.test.name}" 245 address_space = ["10.0.2.0/24"] 246 location = "${azurerm_resource_group.test.location}" 247 } 248 249 resource "azurerm_virtual_network_peering" "test1" { 250 name = "acctestpeer-1-%d" 251 resource_group_name = "${azurerm_resource_group.test.name}" 252 virtual_network_name = "${azurerm_virtual_network.test1.name}" 253 remote_virtual_network_id = "${azurerm_virtual_network.test2.id}" 254 allow_forwarded_traffic = true 255 allow_virtual_network_access = true 256 } 257 258 resource "azurerm_virtual_network_peering" "test2" { 259 name = "acctestpeer-2-%d" 260 resource_group_name = "${azurerm_resource_group.test.name}" 261 virtual_network_name = "${azurerm_virtual_network.test2.name}" 262 remote_virtual_network_id = "${azurerm_virtual_network.test1.id}" 263 allow_forwarded_traffic = true 264 allow_virtual_network_access = true 265 } 266 `