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