diff options
-rw-r--r-- | api/oauth_test.go | 29 | ||||
-rw-r--r-- | store/sql_oauth_store.go | 4 |
2 files changed, 31 insertions, 2 deletions
diff --git a/api/oauth_test.go b/api/oauth_test.go index 2e0288061..317478b0a 100644 --- a/api/oauth_test.go +++ b/api/oauth_test.go @@ -703,6 +703,35 @@ func TestOAuthAccessToken(t *testing.T) { if rsp.TokenType != model.ACCESS_TOKEN_TYPE { t.Fatal("access token type incorrect") } + Client.SetOAuthToken(rsp.AccessToken) + _, err = Client.GetMe("") + if err != nil { + t.Fatal(err) + } + + data.Set("refresh_token", rsp.RefreshToken) + } + + if result, err := Client.GetAccessToken(data); err != nil { + t.Fatal(err) + } else { + rsp := result.Data.(*model.AccessResponse) + if len(rsp.AccessToken) == 0 { + t.Fatal("access token not returned") + } else if len(rsp.RefreshToken) == 0 { + t.Fatal("refresh token not returned") + } else if rsp.RefreshToken == refreshToken { + t.Fatal("refresh token did not update") + } + + if rsp.TokenType != model.ACCESS_TOKEN_TYPE { + t.Fatal("access token type incorrect") + } + Client.SetOAuthToken(rsp.AccessToken) + _, err = Client.GetMe("") + if err != nil { + t.Fatal(err) + } } authData := &model.AuthData{ClientId: oauthApp.Id, RedirectUri: oauthApp.CallbackUrls[0], UserId: th.BasicUser.Id, Code: model.NewId(), ExpiresIn: -1} diff --git a/store/sql_oauth_store.go b/store/sql_oauth_store.go index 067e1d090..0a5f14dc4 100644 --- a/store/sql_oauth_store.go +++ b/store/sql_oauth_store.go @@ -396,8 +396,8 @@ func (as SqlOAuthStore) UpdateAccessData(accessData *model.AccessData) StoreChan return } - if _, err := as.GetMaster().Exec("UPDATE OAuthAccessData SET Token = :Token, ExpiresAt = :ExpiresAt WHERE ClientId = :ClientId AND UserID = :UserId", - map[string]interface{}{"Token": accessData.Token, "ExpiresAt": accessData.ExpiresAt, "ClientId": accessData.ClientId, "UserId": accessData.UserId}); err != nil { + if _, err := as.GetMaster().Exec("UPDATE OAuthAccessData SET Token = :Token, ExpiresAt = :ExpiresAt, RefreshToken = :RefreshToken WHERE ClientId = :ClientId AND UserID = :UserId", + map[string]interface{}{"Token": accessData.Token, "ExpiresAt": accessData.ExpiresAt, "RefreshToken": accessData.RefreshToken, "ClientId": accessData.ClientId, "UserId": accessData.UserId}); err != nil { result.Err = model.NewLocAppError("SqlOAuthStore.Update", "store.sql_oauth.update_access_data.app_error", nil, "clientId="+accessData.ClientId+",userId="+accessData.UserId+", "+err.Error()) } else { |