github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/compute/v2/secgroup_test.go (about)

     1  //go:build acceptance || compute || secgroups
     2  // +build acceptance compute secgroups
     3  
     4  package v2
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/gophercloud/gophercloud/internal/acceptance/clients"
    10  	"github.com/gophercloud/gophercloud/internal/acceptance/tools"
    11  	"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/secgroups"
    12  	"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
    13  	th "github.com/gophercloud/gophercloud/testhelper"
    14  )
    15  
    16  func TestSecGroupsList(t *testing.T) {
    17  	client, err := clients.NewComputeV2Client()
    18  	th.AssertNoErr(t, err)
    19  
    20  	allPages, err := secgroups.List(client).AllPages()
    21  	th.AssertNoErr(t, err)
    22  
    23  	allSecGroups, err := secgroups.ExtractSecurityGroups(allPages)
    24  	th.AssertNoErr(t, err)
    25  
    26  	var found bool
    27  	for _, secgroup := range allSecGroups {
    28  		tools.PrintResource(t, secgroup)
    29  
    30  		if secgroup.Name == "default" {
    31  			found = true
    32  		}
    33  	}
    34  
    35  	th.AssertEquals(t, found, true)
    36  }
    37  
    38  func TestSecGroupsCRUD(t *testing.T) {
    39  	client, err := clients.NewComputeV2Client()
    40  	th.AssertNoErr(t, err)
    41  
    42  	securityGroup, err := CreateSecurityGroup(t, client)
    43  	th.AssertNoErr(t, err)
    44  	defer DeleteSecurityGroup(t, client, securityGroup.ID)
    45  
    46  	tools.PrintResource(t, securityGroup)
    47  
    48  	newName := tools.RandomString("secgroup_", 4)
    49  	description := ""
    50  	updateOpts := secgroups.UpdateOpts{
    51  		Name:        newName,
    52  		Description: &description,
    53  	}
    54  	updatedSecurityGroup, err := secgroups.Update(client, securityGroup.ID, updateOpts).Extract()
    55  	th.AssertNoErr(t, err)
    56  
    57  	tools.PrintResource(t, updatedSecurityGroup)
    58  
    59  	t.Logf("Updated %s's name to %s", updatedSecurityGroup.ID, updatedSecurityGroup.Name)
    60  
    61  	th.AssertEquals(t, updatedSecurityGroup.Name, newName)
    62  	th.AssertEquals(t, updatedSecurityGroup.Description, description)
    63  }
    64  
    65  func TestSecGroupsRuleCreate(t *testing.T) {
    66  	client, err := clients.NewComputeV2Client()
    67  	th.AssertNoErr(t, err)
    68  
    69  	securityGroup, err := CreateSecurityGroup(t, client)
    70  	th.AssertNoErr(t, err)
    71  	defer DeleteSecurityGroup(t, client, securityGroup.ID)
    72  
    73  	tools.PrintResource(t, securityGroup)
    74  
    75  	rule, err := CreateSecurityGroupRule(t, client, securityGroup.ID)
    76  	th.AssertNoErr(t, err)
    77  	defer DeleteSecurityGroupRule(t, client, rule.ID)
    78  
    79  	tools.PrintResource(t, rule)
    80  
    81  	newSecurityGroup, err := secgroups.Get(client, securityGroup.ID).Extract()
    82  	th.AssertNoErr(t, err)
    83  
    84  	tools.PrintResource(t, newSecurityGroup)
    85  
    86  	th.AssertEquals(t, len(newSecurityGroup.Rules), 1)
    87  }
    88  
    89  func TestSecGroupsAddGroupToServer(t *testing.T) {
    90  	clients.RequireLong(t)
    91  
    92  	client, err := clients.NewComputeV2Client()
    93  	th.AssertNoErr(t, err)
    94  
    95  	server, err := CreateServer(t, client)
    96  	th.AssertNoErr(t, err)
    97  	defer DeleteServer(t, client, server)
    98  
    99  	securityGroup, err := CreateSecurityGroup(t, client)
   100  	th.AssertNoErr(t, err)
   101  	defer DeleteSecurityGroup(t, client, securityGroup.ID)
   102  
   103  	rule, err := CreateSecurityGroupRule(t, client, securityGroup.ID)
   104  	th.AssertNoErr(t, err)
   105  	defer DeleteSecurityGroupRule(t, client, rule.ID)
   106  
   107  	t.Logf("Adding group %s to server %s", securityGroup.ID, server.ID)
   108  	err = secgroups.AddServer(client, server.ID, securityGroup.Name).ExtractErr()
   109  	th.AssertNoErr(t, err)
   110  
   111  	server, err = servers.Get(client, server.ID).Extract()
   112  	th.AssertNoErr(t, err)
   113  
   114  	tools.PrintResource(t, server)
   115  
   116  	var found bool
   117  	for _, sg := range server.SecurityGroups {
   118  		if sg["name"] == securityGroup.Name {
   119  			found = true
   120  		}
   121  	}
   122  
   123  	th.AssertEquals(t, found, true)
   124  
   125  	t.Logf("Removing group %s from server %s", securityGroup.ID, server.ID)
   126  	err = secgroups.RemoveServer(client, server.ID, securityGroup.Name).ExtractErr()
   127  	th.AssertNoErr(t, err)
   128  
   129  	server, err = servers.Get(client, server.ID).Extract()
   130  	th.AssertNoErr(t, err)
   131  
   132  	found = false
   133  
   134  	tools.PrintResource(t, server)
   135  
   136  	for _, sg := range server.SecurityGroups {
   137  		if sg["name"] == securityGroup.Name {
   138  			found = true
   139  		}
   140  	}
   141  
   142  	th.AssertEquals(t, found, false)
   143  }