github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/scaleway/resource_scaleway_security_group_test.go (about)

     1  package scaleway
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/helper/resource"
     8  	"github.com/hashicorp/terraform/terraform"
     9  )
    10  
    11  func TestAccScalewaySecurityGroup_Basic(t *testing.T) {
    12  	resource.Test(t, resource.TestCase{
    13  		PreCheck:     func() { testAccPreCheck(t) },
    14  		Providers:    testAccProviders,
    15  		CheckDestroy: testAccCheckScalewaySecurityGroupDestroy,
    16  		Steps: []resource.TestStep{
    17  			resource.TestStep{
    18  				Config: testAccCheckScalewaySecurityGroupConfig,
    19  				Check: resource.ComposeTestCheckFunc(
    20  					testAccCheckScalewaySecurityGroupExists("scaleway_security_group.base"),
    21  					testAccCheckScalewaySecurityGroupAttributes("scaleway_security_group.base"),
    22  					resource.TestCheckResourceAttr("scaleway_security_group.base", "name", "public"),
    23  					resource.TestCheckResourceAttr("scaleway_security_group.base", "description", "public gateway"),
    24  				),
    25  			},
    26  		},
    27  	})
    28  }
    29  
    30  func testAccCheckScalewaySecurityGroupDestroy(s *terraform.State) error {
    31  	client := testAccProvider.Meta().(*Client).scaleway
    32  
    33  	for _, rs := range s.RootModule().Resources {
    34  		if rs.Type != "scaleway" {
    35  			continue
    36  		}
    37  
    38  		_, err := client.GetASecurityGroup(rs.Primary.ID)
    39  
    40  		if err == nil {
    41  			return fmt.Errorf("Security Group still exists")
    42  		}
    43  	}
    44  
    45  	return nil
    46  }
    47  
    48  func testAccCheckScalewaySecurityGroupAttributes(n string) resource.TestCheckFunc {
    49  	return func(s *terraform.State) error {
    50  		rs, ok := s.RootModule().Resources[n]
    51  		if !ok {
    52  			return fmt.Errorf("Unknown resource: %s", n)
    53  		}
    54  
    55  		client := testAccProvider.Meta().(*Client).scaleway
    56  		group, err := client.GetASecurityGroup(rs.Primary.ID)
    57  		if err != nil {
    58  			return err
    59  		}
    60  
    61  		if group.SecurityGroups.Name != "public" {
    62  			return fmt.Errorf("Security Group has wrong name")
    63  		}
    64  		if group.SecurityGroups.Description != "public gateway" {
    65  			return fmt.Errorf("Security Group has wrong description")
    66  		}
    67  
    68  		return nil
    69  	}
    70  }
    71  
    72  func testAccCheckScalewaySecurityGroupExists(n string) resource.TestCheckFunc {
    73  	return func(s *terraform.State) error {
    74  		rs, ok := s.RootModule().Resources[n]
    75  
    76  		if !ok {
    77  			return fmt.Errorf("Not found: %s", n)
    78  		}
    79  
    80  		if rs.Primary.ID == "" {
    81  			return fmt.Errorf("No Security Group ID is set")
    82  		}
    83  
    84  		client := testAccProvider.Meta().(*Client).scaleway
    85  		group, err := client.GetASecurityGroup(rs.Primary.ID)
    86  
    87  		if err != nil {
    88  			return err
    89  		}
    90  
    91  		if group.SecurityGroups.ID != rs.Primary.ID {
    92  			return fmt.Errorf("Record not found")
    93  		}
    94  
    95  		return nil
    96  	}
    97  }
    98  
    99  var testAccCheckScalewaySecurityGroupConfig = `
   100  resource "scaleway_security_group" "base" {
   101    name = "public"
   102    description = "public gateway"
   103  }
   104  `