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  `