github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/azure/resource_azure_security_group_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/Azure/azure-sdk-for-go/management/networksecuritygroup"
     9  	"github.com/hashicorp/terraform/helper/resource"
    10  	"github.com/hashicorp/terraform/terraform"
    11  )
    12  
    13  func TestAccAzureSecurityGroup_basic(t *testing.T) {
    14  	var group networksecuritygroup.SecurityGroupResponse
    15  
    16  	resource.Test(t, resource.TestCase{
    17  		PreCheck:     func() { testAccPreCheck(t) },
    18  		Providers:    testAccProviders,
    19  		CheckDestroy: testAccCheckAzureSecurityGroupDestroy,
    20  		Steps: []resource.TestStep{
    21  			resource.TestStep{
    22  				Config: testAccAzureSecurityGroupConfig,
    23  				Check: resource.ComposeTestCheckFunc(
    24  					testAccCheckAzureSecurityGroupExists(
    25  						"azure_security_group.foo", &group),
    26  					resource.TestCheckResourceAttr(
    27  						"azure_security_group.foo", "name", "terraform-security-group"),
    28  					resource.TestCheckResourceAttr(
    29  						"azure_security_group.foo", "location", "West US"),
    30  					resource.TestCheckResourceAttr(
    31  						"azure_security_group.foo", "label", "terraform testing security group"),
    32  				),
    33  			},
    34  		},
    35  	})
    36  }
    37  
    38  func testAccCheckAzureSecurityGroupExists(
    39  	n string,
    40  	group *networksecuritygroup.SecurityGroupResponse) resource.TestCheckFunc {
    41  	return func(s *terraform.State) error {
    42  		rs, ok := s.RootModule().Resources[n]
    43  		if !ok {
    44  			return fmt.Errorf("Not found: %s", n)
    45  		}
    46  
    47  		if rs.Primary.ID == "" {
    48  			return fmt.Errorf("No Network Security Group ID is set")
    49  		}
    50  
    51  		secGroupClient := testAccProvider.Meta().(*Client).secGroupClient
    52  		sg, err := secGroupClient.GetNetworkSecurityGroup(rs.Primary.ID)
    53  		if err != nil {
    54  			return err
    55  		}
    56  
    57  		if sg.Name != rs.Primary.ID {
    58  			return fmt.Errorf("Security Group not found")
    59  		}
    60  
    61  		*group = sg
    62  
    63  		return nil
    64  	}
    65  }
    66  
    67  func testAccCheckAzureSecurityGroupDestroy(s *terraform.State) error {
    68  	secGroupClient := testAccProvider.Meta().(*Client).secGroupClient
    69  
    70  	for _, rs := range s.RootModule().Resources {
    71  		if rs.Type != "azure_security_group" {
    72  			continue
    73  		}
    74  
    75  		if rs.Primary.ID == "" {
    76  			return fmt.Errorf("No Network Security Group ID is set")
    77  		}
    78  
    79  		_, err := secGroupClient.GetNetworkSecurityGroup(rs.Primary.ID)
    80  		if err == nil {
    81  			return fmt.Errorf("Network Security Group %s still exists", rs.Primary.ID)
    82  		}
    83  
    84  		if !management.IsResourceNotFoundError(err) {
    85  			return err
    86  		}
    87  	}
    88  
    89  	return nil
    90  }
    91  
    92  const testAccAzureSecurityGroupConfigTemplate = `
    93  resource "azure_security_group" "%s" {
    94      name = "%s"
    95      location = "West US"
    96      label = "terraform testing security group"
    97  }`
    98  
    99  var testAccAzureSecurityGroupConfig = fmt.Sprintf(
   100  	testAccAzureSecurityGroupConfigTemplate,
   101  	"foo", "terraform-security-group",
   102  )