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  }