blob: 3f37a275d611fff6b61cdcb3bf41ba343d463c55 [file] [log] [blame]
// +build acceptance
package v2
import (
"testing"
"github.com/rackspace/gophercloud/openstack"
tokens2 "github.com/rackspace/gophercloud/openstack/identity/v2/tokens"
"github.com/rackspace/gophercloud/openstack/utils"
th "github.com/rackspace/gophercloud/testhelper"
)
func TestAuthenticate(t *testing.T) {
// Obtain credentials from the environment.
ao, err := utils.AuthOptions()
th.AssertNoErr(t, err)
// Trim out unused fields. Prefer authentication by API key to password.
ao.UserID, ao.DomainID, ao.DomainName = "", "", ""
if ao.APIKey != "" {
ao.Password = ""
}
// Create an unauthenticated client.
provider, err := openstack.NewClient(ao.IdentityEndpoint)
th.AssertNoErr(t, err)
// Create a service client.
service := openstack.NewIdentityV2(provider)
// Authenticated!
result := tokens2.Create(service, ao)
// Extract and print the token.
token, err := result.ExtractToken()
th.AssertNoErr(t, err)
t.Logf("Acquired token: [%s]", token.ID)
t.Logf("The token will expire at: [%s]", token.ExpiresAt.String())
t.Logf("The token is valid for tenant: [%#v]", token.Tenant)
// Extract and print the service catalog.
catalog, err := result.ExtractServiceCatalog()
th.AssertNoErr(t, err)
t.Logf("Acquired service catalog listing [%d] services", len(catalog.Entries))
for i, entry := range catalog.Entries {
t.Logf("[%d]: name=[%s], type=[%s]", i, entry.Name, entry.Type)
for _, endpoint := range entry.Endpoints {
t.Logf(" - region=[%s] publicURL=[%s]", endpoint.Region, endpoint.PublicURL)
}
}
}