|  | // +build acceptance | 
|  |  | 
|  | package v2 | 
|  |  | 
|  | import ( | 
|  | "testing" | 
|  |  | 
|  | "github.com/rackspace/gophercloud" | 
|  | "github.com/rackspace/gophercloud/acceptance/tools" | 
|  | "github.com/rackspace/gophercloud/rackspace" | 
|  | th "github.com/rackspace/gophercloud/testhelper" | 
|  | ) | 
|  |  | 
|  | func rackspaceAuthOptions(t *testing.T) gophercloud.AuthOptions { | 
|  | // Obtain credentials from the environment. | 
|  | options, err := rackspace.AuthOptionsFromEnv() | 
|  | th.AssertNoErr(t, err) | 
|  | options = tools.OnlyRS(options) | 
|  |  | 
|  | if options.Username == "" { | 
|  | t.Fatal("Please provide a Rackspace username as RS_USERNAME.") | 
|  | } | 
|  | if options.APIKey == "" { | 
|  | t.Fatal("Please provide a Rackspace API key as RS_API_KEY.") | 
|  | } | 
|  |  | 
|  | return options | 
|  | } | 
|  |  | 
|  | func createClient(t *testing.T, auth bool) *gophercloud.ServiceClient { | 
|  | ao := rackspaceAuthOptions(t) | 
|  |  | 
|  | provider, err := rackspace.NewClient(ao.IdentityEndpoint) | 
|  | th.AssertNoErr(t, err) | 
|  |  | 
|  | if auth { | 
|  | err = rackspace.Authenticate(provider, ao) | 
|  | th.AssertNoErr(t, err) | 
|  | } | 
|  |  | 
|  | return rackspace.NewIdentityV2(provider) | 
|  | } | 
|  |  | 
|  | func unauthenticatedClient(t *testing.T) *gophercloud.ServiceClient { | 
|  | return createClient(t, false) | 
|  | } | 
|  |  | 
|  | func authenticatedClient(t *testing.T) *gophercloud.ServiceClient { | 
|  | return createClient(t, true) | 
|  | } |