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  `