// NewUser builds a new User object for Github. func NewUser(data objx.Map, creds *common.Credentials, provider common.Provider) *User { user := &User{data} creds.Set(common.CredentialsKeyID, data[spotifyKeyID]) // set provider credentials user.data[common.UserKeyProviderCredentials] = map[string]*common.Credentials{ provider.Name(): creds, } return user }
func TestOAuth2Provider_CompleteAuth_JSON(t *testing.T) { config := &common.Config{ Map: objx.MSI( OAuth2KeyRedirectUrl, OAuth2KeyRedirectUrl, OAuth2KeyScope, OAuth2KeyScope, OAuth2KeyClientID, OAuth2KeyClientID, OAuth2KeySecret, OAuth2KeySecret, OAuth2KeyAuthURL, OAuth2KeyAuthURL, OAuth2KeyTokenURL, OAuth2KeyTokenURL)} testTripperFactory := new(test.TestTripperFactory) testTripper := new(test.TestTripper) testProvider := new(test.TestProvider) creds := new(common.Credentials) testResponse := new(http.Response) testResponse.Header = make(http.Header) testResponse.Header.Set("Content-Type", "application/json") testResponse.StatusCode = 200 testResponse.Body = ioutil.NopCloser(strings.NewReader(`{"expires_in":20,"access_token":"ACCESSTOKEN","refresh_token":"REFRESHTOKEN"}`)) testTripperFactory.On("NewTripper", common.EmptyCredentials, mock.Anything).Return(testTripper, nil) testTripper.On("RoundTrip", mock.Anything).Return(testResponse, nil) data := objx.MSI(OAuth2KeyCode, []string{"123"}) creds, err := CompleteAuth(testTripperFactory, data, config, testProvider) if assert.NoError(t, err) { if assert.NotNil(t, creds, "Creds should be returned") { assert.Equal(t, creds.Get(OAuth2KeyAccessToken).Str(), "ACCESSTOKEN") assert.Equal(t, creds.Get(OAuth2KeyRefreshToken).Str(), "REFRESHTOKEN") assert.Equal(t, creds.Get(OAuth2KeyExpiresIn).Data().(time.Duration), time.Duration(20)*time.Second) } } mock.AssertExpectationsForObjects(t, testTripperFactory.Mock, testTripper.Mock, testProvider.Mock) }