github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go (about) 1 //go:build acceptance || networking || fwaas_v2 2 // +build acceptance networking fwaas_v2 3 4 package fwaas_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/networking/v2/extensions/fwaas_v2/groups" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestGroupCRUD(t *testing.T) { 16 // Releases below Victoria are not maintained. 17 // FWaaS_v2 is not compatible with releases below Zed. 18 clients.SkipReleasesBelow(t, "stable/zed") 19 20 client, err := clients.NewNetworkV2Client() 21 th.AssertNoErr(t, err) 22 23 createdGroup, err := CreateGroup(t, client) 24 th.AssertNoErr(t, err) 25 defer DeleteGroup(t, client, createdGroup.ID) 26 27 tools.PrintResource(t, createdGroup) 28 29 createdRule, err := CreateRule(t, client) 30 th.AssertNoErr(t, err) 31 defer DeleteRule(t, client, createdRule.ID) 32 33 tools.PrintResource(t, createdRule) 34 35 createdPolicy, err := CreatePolicy(t, client, createdRule.ID) 36 th.AssertNoErr(t, err) 37 defer DeletePolicy(t, client, createdPolicy.ID) 38 39 tools.PrintResource(t, createdPolicy) 40 41 groupName := tools.RandomString("TESTACC-", 8) 42 adminStateUp := false 43 description := ("Some firewall group description") 44 firewall_policy_id := createdPolicy.ID 45 updateOpts := groups.UpdateOpts{ 46 Name: &groupName, 47 Description: &description, 48 AdminStateUp: &adminStateUp, 49 IngressFirewallPolicyID: &firewall_policy_id, 50 EgressFirewallPolicyID: &firewall_policy_id, 51 } 52 53 updatedGroup, err := groups.Update(client, createdGroup.ID, updateOpts).Extract() 54 if err != nil { 55 t.Fatalf("Unable to update firewall group %s: %v", createdGroup.ID, err) 56 } 57 58 th.AssertNoErr(t, err) 59 th.AssertEquals(t, updatedGroup.Name, groupName) 60 th.AssertEquals(t, updatedGroup.Description, description) 61 th.AssertEquals(t, updatedGroup.AdminStateUp, adminStateUp) 62 th.AssertEquals(t, updatedGroup.IngressFirewallPolicyID, firewall_policy_id) 63 th.AssertEquals(t, updatedGroup.EgressFirewallPolicyID, firewall_policy_id) 64 65 t.Logf("Updated firewall group %s", updatedGroup.ID) 66 67 removeIngressPolicy, err := groups.RemoveIngressPolicy(client, updatedGroup.ID).Extract() 68 if err != nil { 69 t.Fatalf("Unable to remove ingress firewall policy from firewall group %s: %v", removeIngressPolicy.ID, err) 70 } 71 72 th.AssertEquals(t, removeIngressPolicy.IngressFirewallPolicyID, "") 73 th.AssertEquals(t, removeIngressPolicy.EgressFirewallPolicyID, firewall_policy_id) 74 75 t.Logf("Ingress policy removed from firewall group %s", updatedGroup.ID) 76 77 removeEgressPolicy, err := groups.RemoveEgressPolicy(client, updatedGroup.ID).Extract() 78 if err != nil { 79 t.Fatalf("Unable to remove egress firewall policy from firewall group %s: %v", removeEgressPolicy.ID, err) 80 } 81 82 th.AssertEquals(t, removeEgressPolicy.EgressFirewallPolicyID, "") 83 84 t.Logf("Egress policy removed from firewall group %s", updatedGroup.ID) 85 86 allPages, err := groups.List(client, nil).AllPages() 87 th.AssertNoErr(t, err) 88 89 allGroups, err := groups.ExtractGroups(allPages) 90 th.AssertNoErr(t, err) 91 92 t.Logf("Attempting to find firewall group %s\n", createdGroup.ID) 93 var found bool 94 for _, group := range allGroups { 95 if group.ID == createdGroup.ID { 96 found = true 97 t.Logf("Found firewall group %s\n", group.ID) 98 } 99 } 100 101 th.AssertEquals(t, found, true) 102 }