github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/azure/resource_azure_dns_server_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 TestAccAzureDnsServerBasic(t *testing.T) { 13 name := "azure_dns_server.foo" 14 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccCheckAzureDnsServerDestroy, 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccAzureDnsServerBasic, 22 Check: resource.ComposeTestCheckFunc( 23 testAccCheckAzureDnsServerExists(name), 24 resource.TestCheckResourceAttr(name, "name", "terraform-dns-server"), 25 resource.TestCheckResourceAttr(name, "dns_address", "8.8.8.8"), 26 ), 27 }, 28 }, 29 }) 30 } 31 32 func TestAccAzureDnsServerUpdate(t *testing.T) { 33 name := "azure_dns_server.foo" 34 35 resource.Test(t, resource.TestCase{ 36 PreCheck: func() { testAccPreCheck(t) }, 37 Providers: testAccProviders, 38 CheckDestroy: testAccCheckAzureDnsServerDestroy, 39 Steps: []resource.TestStep{ 40 resource.TestStep{ 41 Config: testAccAzureDnsServerBasic, 42 Check: resource.ComposeTestCheckFunc( 43 testAccCheckAzureDnsServerExists(name), 44 resource.TestCheckResourceAttr(name, "name", "terraform-dns-server"), 45 resource.TestCheckResourceAttr(name, "dns_address", "8.8.8.8"), 46 ), 47 }, 48 49 resource.TestStep{ 50 Config: testAccAzureDnsServerUpdate, 51 Check: resource.ComposeTestCheckFunc( 52 testAccCheckAzureDnsServerExists(name), 53 resource.TestCheckResourceAttr(name, "name", "terraform-dns-server"), 54 resource.TestCheckResourceAttr(name, "dns_address", "8.8.4.4"), 55 ), 56 }, 57 }, 58 }) 59 } 60 61 func testAccCheckAzureDnsServerExists(name string) resource.TestCheckFunc { 62 return func(s *terraform.State) error { 63 resource, ok := s.RootModule().Resources[name] 64 if !ok { 65 return fmt.Errorf("Resource not found: %s", name) 66 } 67 68 if resource.Primary.ID == "" { 69 return fmt.Errorf("No DNS Server ID set.") 70 } 71 72 vnetClient := testAccProvider.Meta().(*Client).vnetClient 73 netConf, err := vnetClient.GetVirtualNetworkConfiguration() 74 if err != nil { 75 return fmt.Errorf("Failed fetching networking configuration: %s", err) 76 } 77 78 for _, dns := range netConf.Configuration.DNS.DNSServers { 79 if dns.Name == resource.Primary.ID { 80 return nil 81 } 82 } 83 84 return fmt.Errorf("Azure DNS Server not found.") 85 } 86 } 87 88 func testAccCheckAzureDnsServerDestroy(s *terraform.State) error { 89 vnetClient := testAccProvider.Meta().(*Client).vnetClient 90 91 for _, resource := range s.RootModule().Resources { 92 if resource.Type != "azure_dns_server" { 93 continue 94 } 95 96 if resource.Primary.ID == "" { 97 return fmt.Errorf("No DNS Server ID is set.") 98 } 99 100 netConf, err := vnetClient.GetVirtualNetworkConfiguration() 101 if err != nil { 102 // This is desirable - if there is no network config there can't be any DNS Servers 103 if management.IsResourceNotFoundError(err) { 104 continue 105 } 106 return fmt.Errorf("Error retrieving networking configuration from Azure: %s", err) 107 } 108 109 for _, dns := range netConf.Configuration.DNS.DNSServers { 110 if dns.Name == resource.Primary.ID { 111 return fmt.Errorf("Azure DNS Server still exists.") 112 } 113 } 114 } 115 116 return nil 117 } 118 119 const testAccAzureDnsServerBasic = ` 120 resource "azure_dns_server" "foo" { 121 name = "terraform-dns-server" 122 dns_address = "8.8.8.8" 123 } 124 ` 125 126 const testAccAzureDnsServerUpdate = ` 127 resource "azure_dns_server" "foo" { 128 name = "terraform-dns-server" 129 dns_address = "8.8.4.4" 130 } 131 `