func v2auth(client *gophercloud.ProviderClient, endpoint string, options gophercloud.AuthOptions) error { v2Client := NewIdentityV2(client) if endpoint != "" { v2Client.Endpoint = endpoint } result := tokens2.Create(v2Client, tokens2.WrapOptions(options)) token, err := result.ExtractToken() if err != nil { return err } catalog, err := result.ExtractServiceCatalog() if err != nil { return err } if options.AllowReauth { client.ReauthFunc = func() error { return AuthenticateV2(client, options) } } client.TokenID = token.ID client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) { return os.V2EndpointURL(catalog, opts) } return nil }
func TestTokenAuth(t *testing.T) { authedClient := createClient(t, true) token := authedClient.TokenID tenantID := os.Getenv("RS_TENANT_ID") if tenantID == "" { t.Skip("You must set RS_TENANT_ID environment variable to run this test") } authOpts := tokens.AuthOptions{} authOpts.TenantID = tenantID authOpts.Token = token _, err := tokens.Create(authedClient, authOpts).ExtractToken() th.AssertNoErr(t, err) }