github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/azure/resource_azure_local_network_test.go (about) 1 package azure 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/Azure/azure-sdk-for-go/management" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 ) 11 12 func TestAccAzureLocalNetworkConnectionBasic(t *testing.T) { 13 name := "azure_local_network_connection.foo" 14 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccAzureLocalNetworkConnectionDestroyed, 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccAzureLocalNetworkConnectionBasic, 22 Check: resource.ComposeTestCheckFunc( 23 testAccAzureLocalNetworkConnectionExists(name), 24 resource.TestCheckResourceAttr(name, "name", "terraform-local-network-connection"), 25 resource.TestCheckResourceAttr(name, "vpn_gateway_address", "10.11.12.13"), 26 resource.TestCheckResourceAttr(name, "address_space_prefixes.0", "10.10.10.0/31"), 27 resource.TestCheckResourceAttr(name, "address_space_prefixes.1", "10.10.10.1/31"), 28 ), 29 }, 30 }, 31 }) 32 } 33 34 func TestAccAzureLocalNetworkConnectionUpdate(t *testing.T) { 35 name := "azure_local_network_connection.foo" 36 37 resource.Test(t, resource.TestCase{ 38 PreCheck: func() { testAccPreCheck(t) }, 39 Providers: testAccProviders, 40 CheckDestroy: testAccAzureLocalNetworkConnectionDestroyed, 41 Steps: []resource.TestStep{ 42 resource.TestStep{ 43 Config: testAccAzureLocalNetworkConnectionBasic, 44 Check: resource.ComposeTestCheckFunc( 45 testAccAzureLocalNetworkConnectionExists(name), 46 resource.TestCheckResourceAttr(name, "name", "terraform-local-network-connection"), 47 resource.TestCheckResourceAttr(name, "vpn_gateway_address", "10.11.12.13"), 48 resource.TestCheckResourceAttr(name, "address_space_prefixes.0", "10.10.10.0/31"), 49 resource.TestCheckResourceAttr(name, "address_space_prefixes.1", "10.10.10.1/31"), 50 ), 51 }, 52 53 resource.TestStep{ 54 Config: testAccAzureLocalNetworkConnectionUpdate, 55 Check: resource.ComposeTestCheckFunc( 56 testAccAzureLocalNetworkConnectionExists(name), 57 resource.TestCheckResourceAttr(name, "name", "terraform-local-network-connection"), 58 resource.TestCheckResourceAttr(name, "vpn_gateway_address", "10.11.12.14"), 59 resource.TestCheckResourceAttr(name, "address_space_prefixes.0", "10.10.10.2/30"), 60 resource.TestCheckResourceAttr(name, "address_space_prefixes.1", "10.10.10.3/30"), 61 ), 62 }, 63 }, 64 }) 65 } 66 67 // testAccAzureLocalNetworkConnectionExists checks whether the given local network 68 // connection exists on Azure. 69 func testAccAzureLocalNetworkConnectionExists(name string) resource.TestCheckFunc { 70 return func(s *terraform.State) error { 71 resource, ok := s.RootModule().Resources[name] 72 if !ok { 73 return fmt.Errorf("Azure Local Network Connection not found: %s", name) 74 } 75 76 if resource.Primary.ID == "" { 77 return fmt.Errorf("Azure Local Network Connection ID not set.") 78 } 79 80 vnetClient := testAccProvider.Meta().(*Client).vnetClient 81 netConf, err := vnetClient.GetVirtualNetworkConfiguration() 82 if err != nil { 83 return err 84 } 85 86 for _, lnet := range netConf.Configuration.LocalNetworkSites { 87 if lnet.Name == resource.Primary.ID { 88 return nil 89 } 90 break 91 } 92 93 return fmt.Errorf("Local Network Connection not found: %s", name) 94 } 95 } 96 97 // testAccAzureLocalNetworkConnectionDestroyed checks whether the local network 98 // connection has been destroyed on Azure or not. 99 func testAccAzureLocalNetworkConnectionDestroyed(s *terraform.State) error { 100 vnetClient := testAccProvider.Meta().(*Client).vnetClient 101 102 for _, resource := range s.RootModule().Resources { 103 if resource.Type != "azure_local_network_connection" { 104 continue 105 } 106 107 if resource.Primary.ID == "" { 108 return fmt.Errorf("Azure Local Network Connection ID not set.") 109 } 110 111 netConf, err := vnetClient.GetVirtualNetworkConfiguration() 112 if err != nil { 113 // This is desirable - if there is no network config there can be no gateways 114 if management.IsResourceNotFoundError(err) { 115 continue 116 } 117 return err 118 } 119 120 for _, lnet := range netConf.Configuration.LocalNetworkSites { 121 if lnet.Name == resource.Primary.ID { 122 return fmt.Errorf("Azure Local Network Connection still exists.") 123 } 124 } 125 } 126 127 return nil 128 } 129 130 const testAccAzureLocalNetworkConnectionBasic = ` 131 resource "azure_local_network_connection" "foo" { 132 name = "terraform-local-network-connection" 133 vpn_gateway_address = "10.11.12.13" 134 address_space_prefixes = ["10.10.10.0/31", "10.10.10.1/31"] 135 } 136 ` 137 138 const testAccAzureLocalNetworkConnectionUpdate = ` 139 resource "azure_local_network_connection" "foo" { 140 name = "terraform-local-network-connection" 141 vpn_gateway_address = "10.11.12.14" 142 address_space_prefixes = ["10.10.10.2/30", "10.10.10.3/30"] 143 } 144 `