github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/registeredlimits_test.go (about) 1 //go:build acceptance 2 // +build acceptance 3 4 package v3 5 6 import ( 7 "os" 8 "testing" 9 10 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 11 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 12 "github.com/gophercloud/gophercloud/openstack/identity/v3/registeredlimits" 13 "github.com/gophercloud/gophercloud/openstack/identity/v3/services" 14 th "github.com/gophercloud/gophercloud/testhelper" 15 ) 16 17 func TestRegisteredLimitsCRUD(t *testing.T) { 18 err := os.Setenv("OS_SYSTEM_SCOPE", "all") 19 th.AssertNoErr(t, err) 20 defer os.Unsetenv("OS_SYSTEM_SCOPE") 21 22 clients.RequireAdmin(t) 23 24 client, err := clients.NewIdentityV3Client() 25 th.AssertNoErr(t, err) 26 27 // Get glance service to register the limit 28 allServicePages, err := services.List(client, nil).AllPages() 29 th.AssertNoErr(t, err) 30 31 svList, err := services.ExtractServices(allServicePages) 32 serviceID := "" 33 for _, service := range svList { 34 serviceID = service.ID 35 break 36 } 37 th.AssertIntGreaterOrEqual(t, len(serviceID), 1) 38 39 // Create RegisteredLimit 40 limitDescription := tools.RandomString("TESTLIMITS-DESC-", 8) 41 defaultLimit := tools.RandomInt(1, 100) 42 resourceName := tools.RandomString("LIMIT-NAME-", 8) 43 44 createOpts := registeredlimits.BatchCreateOpts{ 45 registeredlimits.CreateOpts{ 46 ServiceID: serviceID, 47 ResourceName: resourceName, 48 DefaultLimit: defaultLimit, 49 Description: limitDescription, 50 RegionID: "RegionOne", 51 }, 52 } 53 54 createdRegisteredLimits, err := registeredlimits.BatchCreate(client, createOpts).Extract() 55 th.AssertNoErr(t, err) 56 tools.PrintResource(t, createdRegisteredLimits[0]) 57 th.AssertIntGreaterOrEqual(t, 1, len(createdRegisteredLimits)) 58 th.AssertEquals(t, limitDescription, createdRegisteredLimits[0].Description) 59 th.AssertEquals(t, defaultLimit, createdRegisteredLimits[0].DefaultLimit) 60 th.AssertEquals(t, resourceName, createdRegisteredLimits[0].ResourceName) 61 th.AssertEquals(t, serviceID, createdRegisteredLimits[0].ServiceID) 62 th.AssertEquals(t, "RegionOne", createdRegisteredLimits[0].RegionID) 63 64 // List the registered limits 65 listOpts := registeredlimits.ListOpts{} 66 allPages, err := registeredlimits.List(client, listOpts).AllPages() 67 th.AssertNoErr(t, err) 68 69 _, err = registeredlimits.ExtractRegisteredLimits(allPages) 70 th.AssertNoErr(t, err) 71 72 // Get RegisteredLimit by ID 73 registered_limit, err := registeredlimits.Get(client, createdRegisteredLimits[0].ID).Extract() 74 th.AssertNoErr(t, err) 75 tools.PrintResource(t, registered_limit) 76 77 // Update the existing registered_limit 78 updatedDescription := "Test description for registered limit" 79 updatedDefaultLimit := 1000 80 updatedResourceName := tools.RandomString("LIMIT-NAME-", 8) 81 updatedOpts := registeredlimits.UpdateOpts{ 82 Description: &updatedDescription, 83 DefaultLimit: &updatedDefaultLimit, 84 ServiceID: serviceID, 85 ResourceName: updatedResourceName, 86 } 87 88 updated_registered_limit, err := registeredlimits.Update(client, createdRegisteredLimits[0].ID, updatedOpts).Extract() 89 th.AssertNoErr(t, err) 90 91 tools.PrintResource(t, updated_registered_limit) 92 th.AssertEquals(t, updated_registered_limit.Description, updatedDescription) 93 th.AssertEquals(t, updated_registered_limit.DefaultLimit, updatedDefaultLimit) 94 th.AssertEquals(t, updated_registered_limit.ResourceName, updatedResourceName) 95 96 // Delete the registered limit 97 del_err := registeredlimits.Delete(client, createdRegisteredLimits[0].ID).ExtractErr() 98 th.AssertNoErr(t, del_err) 99 100 _, err = registeredlimits.Get(client, createdRegisteredLimits[0].ID).Extract() 101 th.AssertErr(t, err) 102 }