1// +build acceptance networking fwaas_v2
2
3package fwaas_v2
4
5import (
6	"testing"
7
8	"github.com/gophercloud/gophercloud/acceptance/clients"
9	"github.com/gophercloud/gophercloud/acceptance/tools"
10	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/fwaas_v2/rules"
11	th "github.com/gophercloud/gophercloud/testhelper"
12)
13
14func TestRuleCRUD(t *testing.T) {
15
16	client, err := clients.NewNetworkV2Client()
17	th.AssertNoErr(t, err)
18
19	rule, err := CreateRule(t, client)
20	th.AssertNoErr(t, err)
21	defer DeleteRule(t, client, rule.ID)
22
23	tools.PrintResource(t, rule)
24
25	ruleDescription := "Some rule description"
26	ruleProtocol := rules.ProtocolICMP
27	updateOpts := rules.UpdateOpts{
28		Description: &ruleDescription,
29		Protocol:    &ruleProtocol,
30	}
31
32	ruleUpdated, err := rules.Update(client, rule.ID, updateOpts).Extract()
33	th.AssertNoErr(t, err)
34	th.AssertEquals(t, ruleUpdated.Description, ruleDescription)
35	th.AssertEquals(t, ruleUpdated.Protocol, string(ruleProtocol))
36
37	newRule, err := rules.Get(client, rule.ID).Extract()
38	th.AssertNoErr(t, err)
39
40	tools.PrintResource(t, newRule)
41
42	allPages, err := rules.List(client, nil).AllPages()
43	th.AssertNoErr(t, err)
44
45	allRules, err := rules.ExtractRules(allPages)
46	th.AssertNoErr(t, err)
47
48	t.Logf("Attempting to find rule %s\n", newRule.ID)
49	var found bool
50	for _, rule := range allRules {
51		if rule.ID == newRule.ID {
52			found = true
53			t.Logf("Found rule %s\n", newRule.ID)
54		}
55	}
56
57	th.AssertEquals(t, found, true)
58}
59