Initial commit of experimental, new, v0.2.0 API
diff --git a/acceptance/openstack/identity/01-authenticate.go b/acceptance/openstack/identity/01-authenticate.go
new file mode 100644
index 0000000..d41bf01
--- /dev/null
+++ b/acceptance/openstack/identity/01-authenticate.go
@@ -0,0 +1,57 @@
+package main
+
+import (
+	"fmt"
+	"github.com/rackspace/gophercloud/openstack/identity"
+	"github.com/rackspace/gophercloud/openstack/utils"
+)
+
+type extractor func(*identity.TokenDesc) string
+
+func main() {
+	ao, err := utils.AuthOptions()
+	if err != nil {
+		panic(err)
+	}
+
+	ao.AllowReauth = true
+	r, err := identity.Authenticate(ao)
+	if err != nil {
+		panic(err)
+	}
+
+	t, err := identity.Token(r)
+	if err != nil {
+		panic(err)
+	}
+
+	table := map[string]extractor{
+		"ID":      func(t *identity.TokenDesc) string { return t.Id() },
+		"Expires": func(t *identity.TokenDesc) string { return t.Expires() },
+	}
+
+	for attr, fn := range table {
+		fmt.Printf("Your token's %s is %s\n", attr, fn(t))
+	}
+
+	sc, err := identity.ServiceCatalog(r)
+	if err != nil {
+		panic(err)
+	}
+	ces, err := sc.CatalogEntries()
+	fmt.Printf("Service Catalog Summary:\n  %32s   %-16s\n", "Name", "Type")
+	for _, ce := range ces {
+		fmt.Printf("  %32s | %-16s\n", ce.Name, ce.Type)
+	}
+
+	for _, ce := range ces {
+		fmt.Printf("Endpoints for %s/%s\n", ce.Name, ce.Type)
+		for _, ep := range ce.Endpoints {
+			fmt.Printf("  Version: %s\n", ep.VersionId)
+			fmt.Printf("  Region: %s\n", ep.Region)
+			fmt.Printf("  Tenant: %s\n", ep.TenantId)
+			fmt.Printf("  Public URL: %s\n", ep.PublicURL)
+			fmt.Printf("  Internal URL: %s\n", ep.InternalURL)
+		}
+	}
+}