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  }