github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_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/policies" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestPolicyCRUD(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 // Create First Rule. This will be used as part of the Policy creation 24 rule, err := CreateRule(t, client) 25 th.AssertNoErr(t, err) 26 defer DeleteRule(t, client, rule.ID) 27 28 tools.PrintResource(t, rule) 29 30 // Create Second rule. This will be injected in to the policy after its creation 31 ruleToInsert, err := CreateRule(t, client) 32 th.AssertNoErr(t, err) 33 defer DeleteRule(t, client, ruleToInsert.ID) 34 35 tools.PrintResource(t, ruleToInsert) 36 37 // Create the Policy using the first rule 38 policy, err := CreatePolicy(t, client, rule.ID) 39 th.AssertNoErr(t, err) 40 defer DeletePolicy(t, client, policy.ID) 41 42 tools.PrintResource(t, policy) 43 44 // Inject the second rule 45 AddRule(t, client, policy.ID, ruleToInsert.ID, rule.ID) 46 47 // Remove the first rule 48 RemoveRule(t, client, policy.ID, rule.ID) 49 50 name := "" 51 description := "" 52 updateOpts := policies.UpdateOpts{ 53 Name: &name, 54 Description: &description, 55 FirewallRules: &[]string{}, 56 } 57 58 _, err = policies.Update(client, policy.ID, updateOpts).Extract() 59 th.AssertNoErr(t, err) 60 61 newPolicy, err := policies.Get(client, policy.ID).Extract() 62 th.AssertNoErr(t, err) 63 64 tools.PrintResource(t, newPolicy) 65 th.AssertEquals(t, newPolicy.Name, name) 66 th.AssertEquals(t, newPolicy.Description, description) 67 th.AssertEquals(t, len(newPolicy.Rules), 0) 68 69 allPages, err := policies.List(client, nil).AllPages() 70 th.AssertNoErr(t, err) 71 72 allPolicies, err := policies.ExtractPolicies(allPages) 73 th.AssertNoErr(t, err) 74 75 var found bool 76 for _, policy := range allPolicies { 77 if policy.ID == newPolicy.ID { 78 found = true 79 } 80 } 81 82 th.AssertEquals(t, found, true) 83 }