Skip to content

Commit

Permalink
immutable user.KeyAccessToken
Browse files Browse the repository at this point in the history
  • Loading branch information
ghostec committed Oct 4, 2017
1 parent 415f997 commit e77c2be
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 7 deletions.
4 changes: 3 additions & 1 deletion api/login.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@ func (l *LoginAccessHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}

body := fmt.Sprintf(`{"token": "%s"}`, token.AccessToken)
keyAccessToken, err := login.GetKeyAccessToken(email, l.App.DB)

body := fmt.Sprintf(`{"token": "%s"}`, keyAccessToken)

Write(w, http.StatusOK, body)
logger.Debug("Returning access token")
Expand Down
21 changes: 18 additions & 3 deletions api/login_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/golang/mock/gomock"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/topfreegames/maestro/login"
)

var _ = Describe("Login", func() {
Expand Down Expand Up @@ -109,11 +110,18 @@ var _ = Describe("Login", func() {
VALUES(?key_access_token, ?access_token, ?refresh_token, ?expiry, ?token_type, ?email)
ON CONFLICT(email) DO UPDATE
SET access_token = excluded.access_token,
key_access_token = excluded.access_token,
key_access_token = users.key_access_token,
refresh_token = excluded.refresh_token,
expiry = excluded.expiry`,
gomock.Any(),
)
mockDb.EXPECT().Query(
gomock.Any(),
"SELECT key_access_token FROM users WHERE email = ?",
gomock.Any(),
).Do(func(user *login.User, query string, modifier string) {
user.KeyAccessToken = token.AccessToken
})

app.Router.ServeHTTP(recorder, request)
Expect(recorder.Code).To(Equal(http.StatusOK))
Expand Down Expand Up @@ -193,7 +201,7 @@ var _ = Describe("Login", func() {
VALUES(?key_access_token, ?access_token, ?refresh_token, ?expiry, ?token_type, ?email)
ON CONFLICT(email) DO UPDATE
SET access_token = excluded.access_token,
key_access_token = excluded.access_token,
key_access_token = users.key_access_token,
refresh_token = excluded.refresh_token,
expiry = excluded.expiry`,
gomock.Any(),
Expand Down Expand Up @@ -233,11 +241,18 @@ var _ = Describe("Login", func() {
VALUES(?key_access_token, ?access_token, ?refresh_token, ?expiry, ?token_type, ?email)
ON CONFLICT(email) DO UPDATE
SET access_token = excluded.access_token,
key_access_token = excluded.access_token,
key_access_token = users.key_access_token,
refresh_token = excluded.refresh_token,
expiry = excluded.expiry`,
gomock.Any(),
)
mockDb.EXPECT().Query(
gomock.Any(),
"SELECT key_access_token FROM users WHERE email = ?",
gomock.Any(),
).Do(func(user *login.User, query string, modifier string) {
user.KeyAccessToken = token.AccessToken
})

app.Router.ServeHTTP(recorder, request)
Expect(recorder.Code).To(Equal(http.StatusOK))
Expand Down
10 changes: 9 additions & 1 deletion login/token.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func SaveToken(token *oauth2.Token, email, keyAccessToken string, db interfaces.
VALUES(?key_access_token, ?access_token, ?refresh_token, ?expiry, ?token_type, ?email)
ON CONFLICT(email) DO UPDATE
SET access_token = excluded.access_token,
key_access_token = excluded.access_token,
key_access_token = users.key_access_token,
refresh_token = excluded.refresh_token,
expiry = excluded.expiry`
if token.RefreshToken == "" {
Expand Down Expand Up @@ -61,6 +61,14 @@ type DestinationToken struct {
TokenType string `db:"token_type"`
}

// GetKeyAccessToken returns key_access_token for a users' email in DB
func GetKeyAccessToken(email string, db interfaces.DB) (string, error) {
user := &User{}
query := "SELECT key_access_token FROM users WHERE email = ?"
_, err := db.Query(user, query, email)
return user.KeyAccessToken, err
}

//GetToken reads token from DB
func GetToken(accessToken string, db interfaces.DB) (*oauth2.Token, error) {
query := `SELECT access_token, refresh_token, expiry, token_type
Expand Down
4 changes: 2 additions & 2 deletions login/token_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ var _ = Describe("Token", func() {
VALUES(?key_access_token, ?access_token, ?refresh_token, ?expiry, ?token_type, ?email)
ON CONFLICT(email) DO UPDATE
SET access_token = excluded.access_token,
key_access_token = excluded.access_token,
key_access_token = users.key_access_token,
refresh_token = excluded.refresh_token,
expiry = excluded.expiry`, gomock.Any())

Expand All @@ -58,7 +58,7 @@ var _ = Describe("Token", func() {
VALUES(?key_access_token, ?access_token, ?refresh_token, ?expiry, ?token_type, ?email)
ON CONFLICT(email) DO UPDATE
SET access_token = excluded.access_token,
key_access_token = excluded.access_token,
key_access_token = users.key_access_token,
refresh_token = excluded.refresh_token,
expiry = excluded.expiry`, gomock.Any()).Return(nil, errors.New("db error"))

Expand Down

0 comments on commit e77c2be

Please sign in to comment.