github.com/bendemaree/terraform@v0.5.4-0.20150613200311-f50d97d6eee6/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/virtualnetwork" 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 mgmtClient := testAccProvider.Meta().(*Client).mgmtClient 73 netConf, err := virtualnetwork.NewClient(mgmtClient).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 mgmtClient := testAccProvider.Meta().(*Client).mgmtClient 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 networkClient := virtualnetwork.NewClient(mgmtClient) 101 netConf, err := networkClient.GetVirtualNetworkConfiguration() 102 if err != nil { 103 return fmt.Errorf("Error retrieving networking configuration from Azure: %s", err) 104 } 105 106 for _, dns := range netConf.Configuration.DNS.DNSServers { 107 if dns.Name == resource.Primary.ID { 108 return fmt.Errorf("Azure DNS Server still exists.") 109 } 110 } 111 } 112 113 return nil 114 } 115 116 const testAccAzureDnsServerBasic = ` 117 resource "azure_dns_server" "foo" { 118 name = "terraform-dns-server" 119 dns_address = "8.8.8.8" 120 } 121 ` 122 123 const testAccAzureDnsServerUpdate = ` 124 resource "azure_dns_server" "foo" { 125 name = "terraform-dns-server" 126 dns_address = "8.8.4.4" 127 } 128 `