1// +build acceptance networking layer3 addressscopes
2
3package layer3
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/layer3/addressscopes"
11	th "github.com/gophercloud/gophercloud/testhelper"
12)
13
14func TestAddressScopesCRUD(t *testing.T) {
15	client, err := clients.NewNetworkV2Client()
16	th.AssertNoErr(t, err)
17
18	// Create an address-scope
19	addressScope, err := CreateAddressScope(t, client)
20	th.AssertNoErr(t, err)
21	defer DeleteAddressScope(t, client, addressScope.ID)
22
23	tools.PrintResource(t, addressScope)
24
25	newName := tools.RandomString("TESTACC-", 8)
26	updateOpts := &addressscopes.UpdateOpts{
27		Name: &newName,
28	}
29
30	_, err = addressscopes.Update(client, addressScope.ID, updateOpts).Extract()
31	th.AssertNoErr(t, err)
32
33	newAddressScope, err := addressscopes.Get(client, addressScope.ID).Extract()
34	th.AssertNoErr(t, err)
35
36	tools.PrintResource(t, newAddressScope)
37	th.AssertEquals(t, newAddressScope.Name, newName)
38
39	allPages, err := addressscopes.List(client, nil).AllPages()
40	th.AssertNoErr(t, err)
41
42	allAddressScopes, err := addressscopes.ExtractAddressScopes(allPages)
43	th.AssertNoErr(t, err)
44
45	var found bool
46	for _, addressScope := range allAddressScopes {
47		if addressScope.ID == newAddressScope.ID {
48			found = true
49		}
50	}
51
52	th.AssertEquals(t, found, true)
53}
54