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)
+	}
+}