github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/endpoint_test.go (about)

     1  //go:build acceptance
     2  // +build acceptance
     3  
     4  package v3
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/gophercloud/gophercloud"
    11  	"github.com/gophercloud/gophercloud/internal/acceptance/clients"
    12  	"github.com/gophercloud/gophercloud/internal/acceptance/tools"
    13  	"github.com/gophercloud/gophercloud/openstack/identity/v3/endpoints"
    14  	"github.com/gophercloud/gophercloud/openstack/identity/v3/services"
    15  	th "github.com/gophercloud/gophercloud/testhelper"
    16  )
    17  
    18  func TestEndpointsList(t *testing.T) {
    19  	clients.RequireAdmin(t)
    20  
    21  	client, err := clients.NewIdentityV3Client()
    22  	th.AssertNoErr(t, err)
    23  
    24  	allPages, err := endpoints.List(client, nil).AllPages()
    25  	th.AssertNoErr(t, err)
    26  
    27  	allEndpoints, err := endpoints.ExtractEndpoints(allPages)
    28  	th.AssertNoErr(t, err)
    29  
    30  	var found bool
    31  	for _, endpoint := range allEndpoints {
    32  		tools.PrintResource(t, endpoint)
    33  
    34  		if strings.Contains(endpoint.URL, "/v3") {
    35  			found = true
    36  		}
    37  	}
    38  
    39  	th.AssertEquals(t, found, true)
    40  }
    41  
    42  func TestEndpointsNavigateCatalog(t *testing.T) {
    43  	clients.RequireAdmin(t)
    44  
    45  	client, err := clients.NewIdentityV3Client()
    46  	th.AssertNoErr(t, err)
    47  
    48  	// Discover the service we're interested in.
    49  	serviceListOpts := services.ListOpts{
    50  		ServiceType: "compute",
    51  	}
    52  
    53  	allPages, err := services.List(client, serviceListOpts).AllPages()
    54  	th.AssertNoErr(t, err)
    55  
    56  	allServices, err := services.ExtractServices(allPages)
    57  	th.AssertNoErr(t, err)
    58  
    59  	th.AssertEquals(t, len(allServices), 1)
    60  
    61  	computeService := allServices[0]
    62  	tools.PrintResource(t, computeService)
    63  
    64  	// Enumerate the endpoints available for this service.
    65  	endpointListOpts := endpoints.ListOpts{
    66  		Availability: gophercloud.AvailabilityPublic,
    67  		ServiceID:    computeService.ID,
    68  	}
    69  
    70  	allPages, err = endpoints.List(client, endpointListOpts).AllPages()
    71  	th.AssertNoErr(t, err)
    72  
    73  	allEndpoints, err := endpoints.ExtractEndpoints(allPages)
    74  	th.AssertNoErr(t, err)
    75  
    76  	th.AssertEquals(t, len(allServices), 1)
    77  
    78  	tools.PrintResource(t, allEndpoints[0])
    79  }