github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/service_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/services"
    12  	th "github.com/gophercloud/gophercloud/testhelper"
    13  )
    14  
    15  func TestServicesList(t *testing.T) {
    16  	clients.RequireAdmin(t)
    17  
    18  	client, err := clients.NewIdentityV3Client()
    19  	th.AssertNoErr(t, err)
    20  
    21  	listOpts := services.ListOpts{
    22  		ServiceType: "identity",
    23  	}
    24  
    25  	allPages, err := services.List(client, listOpts).AllPages()
    26  	th.AssertNoErr(t, err)
    27  
    28  	allServices, err := services.ExtractServices(allPages)
    29  	th.AssertNoErr(t, err)
    30  
    31  	var found bool
    32  	for _, service := range allServices {
    33  		tools.PrintResource(t, service)
    34  
    35  		if service.Type == "identity" {
    36  			found = true
    37  		}
    38  	}
    39  
    40  	th.AssertEquals(t, found, true)
    41  }
    42  
    43  func TestServicesCRUD(t *testing.T) {
    44  	clients.RequireAdmin(t)
    45  
    46  	client, err := clients.NewIdentityV3Client()
    47  	th.AssertNoErr(t, err)
    48  
    49  	createOpts := services.CreateOpts{
    50  		Type: "testing",
    51  		Extra: map[string]interface{}{
    52  			"email": "testservice@example.com",
    53  		},
    54  	}
    55  
    56  	// Create service in the default domain
    57  	service, err := CreateService(t, client, &createOpts)
    58  	th.AssertNoErr(t, err)
    59  	defer DeleteService(t, client, service.ID)
    60  
    61  	tools.PrintResource(t, service)
    62  	tools.PrintResource(t, service.Extra)
    63  
    64  	updateOpts := services.UpdateOpts{
    65  		Type: "testing2",
    66  		Extra: map[string]interface{}{
    67  			"description": "Test Users",
    68  			"email":       "thetestservice@example.com",
    69  		},
    70  	}
    71  
    72  	newService, err := services.Update(client, service.ID, updateOpts).Extract()
    73  	th.AssertNoErr(t, err)
    74  
    75  	tools.PrintResource(t, newService)
    76  	tools.PrintResource(t, newService.Extra)
    77  
    78  	th.AssertEquals(t, newService.Extra["description"], "Test Users")
    79  }