Acceptance test that enumerates services.
diff --git a/acceptance/openstack/identity/v3/service_test.go b/acceptance/openstack/identity/v3/service_test.go
new file mode 100644
index 0000000..6fe8a7a
--- /dev/null
+++ b/acceptance/openstack/identity/v3/service_test.go
@@ -0,0 +1,41 @@
+// +build acceptance
+
+package v3
+
+import (
+ "testing"
+
+ "github.com/rackspace/gophercloud/openstack"
+ services3 "github.com/rackspace/gophercloud/openstack/identity/v3/services"
+ "github.com/rackspace/gophercloud/openstack/utils"
+)
+
+func TestListServices(t *testing.T) {
+ // Obtain credentials from the environment.
+ ao, err := utils.AuthOptions()
+ if err != nil {
+ t.Fatalf("Unable to acquire credentials: %v", err)
+ }
+
+ // Trim out unused fields.
+ ao.TenantID, ao.TenantName = "", ""
+
+ // Create an authenticated client.
+ providerClient, err := openstack.AuthenticatedClient(ao)
+ if err != nil {
+ t.Fatalf("Unable to instantiate client: %v", err)
+ }
+
+ // Create a service client.
+ serviceClient := openstack.NewIdentityV3(providerClient)
+
+ // Use the service to create a token.
+ results, err := services3.List(serviceClient, services3.ListOpts{})
+ if err != nil {
+ t.Fatalf("Unable to get token: %v", err)
+ }
+
+ for _, service := range results.Services {
+ t.Logf("Service: %32s %15s %10s %s", service.ID, service.Type, service.Name, *service.Description)
+ }
+}