github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/regions_test.go (about) 1 //go:build acceptance 2 // +build acceptance 3 4 package v3 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/identity/v3/regions" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestRegionsList(t *testing.T) { 16 clients.RequireAdmin(t) 17 18 client, err := clients.NewIdentityV3Client() 19 th.AssertNoErr(t, err) 20 21 listOpts := regions.ListOpts{ 22 ParentRegionID: "RegionOne", 23 } 24 25 allPages, err := regions.List(client, listOpts).AllPages() 26 th.AssertNoErr(t, err) 27 28 allRegions, err := regions.ExtractRegions(allPages) 29 th.AssertNoErr(t, err) 30 31 for _, region := range allRegions { 32 tools.PrintResource(t, region) 33 } 34 } 35 36 func TestRegionsGet(t *testing.T) { 37 clients.RequireAdmin(t) 38 39 client, err := clients.NewIdentityV3Client() 40 th.AssertNoErr(t, err) 41 42 allPages, err := regions.List(client, nil).AllPages() 43 th.AssertNoErr(t, err) 44 45 allRegions, err := regions.ExtractRegions(allPages) 46 th.AssertNoErr(t, err) 47 48 region := allRegions[0] 49 p, err := regions.Get(client, region.ID).Extract() 50 th.AssertNoErr(t, err) 51 52 tools.PrintResource(t, p) 53 54 th.AssertEquals(t, region.ID, p.ID) 55 } 56 57 func TestRegionsCRUD(t *testing.T) { 58 clients.RequireAdmin(t) 59 60 client, err := clients.NewIdentityV3Client() 61 th.AssertNoErr(t, err) 62 63 createOpts := regions.CreateOpts{ 64 ID: "testregion", 65 Description: "Region for testing", 66 Extra: map[string]interface{}{ 67 "email": "testregion@example.com", 68 }, 69 } 70 71 // Create region in the default domain 72 region, err := CreateRegion(t, client, &createOpts) 73 th.AssertNoErr(t, err) 74 defer DeleteRegion(t, client, region.ID) 75 76 tools.PrintResource(t, region) 77 tools.PrintResource(t, region.Extra) 78 79 var description = "" 80 updateOpts := regions.UpdateOpts{ 81 Description: &description, 82 /* 83 // Due to a bug in Keystone, the Extra column of the Region table 84 // is not updatable, see: https://bugs.launchpad.net/keystone/+bug/1729933 85 // The following lines should be uncommented once the fix is merged. 86 87 Extra: map[string]interface{}{ 88 "email": "testregionA@example.com", 89 }, 90 */ 91 } 92 93 newRegion, err := regions.Update(client, region.ID, updateOpts).Extract() 94 th.AssertNoErr(t, err) 95 96 tools.PrintResource(t, newRegion) 97 tools.PrintResource(t, newRegion.Extra) 98 99 th.AssertEquals(t, newRegion.Description, description) 100 }