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  }