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