github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/projectendpoint_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/endpoints"
    12  	"github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/projectendpoints"
    13  	th "github.com/gophercloud/gophercloud/testhelper"
    14  )
    15  
    16  func TestProjectEndpoints(t *testing.T) {
    17  	clients.RequireAdmin(t)
    18  
    19  	client, err := clients.NewIdentityV3Client()
    20  	th.AssertNoErr(t, err)
    21  
    22  	// Create a project to assign endpoints.
    23  	project, err := CreateProject(t, client, nil)
    24  	th.AssertNoErr(t, err)
    25  	defer DeleteProject(t, client, project.ID)
    26  
    27  	tools.PrintResource(t, project)
    28  
    29  	// Get an endpoint
    30  	allEndpointsPages, err := endpoints.List(client, nil).AllPages()
    31  	th.AssertNoErr(t, err)
    32  
    33  	allEndpoints, err := endpoints.ExtractEndpoints(allEndpointsPages)
    34  	th.AssertNoErr(t, err)
    35  	th.AssertIntGreaterOrEqual(t, len(allEndpoints), 1)
    36  	endpoint := allEndpoints[0]
    37  
    38  	// Attach endpoint
    39  	err = projectendpoints.Create(client, project.ID, endpoint.ID).Err
    40  	th.AssertNoErr(t, err)
    41  
    42  	// List endpoints
    43  	allProjectEndpointsPages, err := projectendpoints.List(client, project.ID).AllPages()
    44  	th.AssertNoErr(t, err)
    45  
    46  	allProjectEndpoints, err := projectendpoints.ExtractEndpoints(allProjectEndpointsPages)
    47  	th.AssertNoErr(t, err)
    48  	th.AssertEquals(t, 1, len(allProjectEndpoints))
    49  
    50  	tools.PrintResource(t, allProjectEndpoints[0])
    51  
    52  	// Detach endpoint
    53  	err = projectendpoints.Delete(client, project.ID, endpoint.ID).Err
    54  	th.AssertNoErr(t, err)
    55  
    56  }