auth

Paddy 2014-09-01 Parent:75cf37088852 Child:d89740a34654

29:5bf0a5fd1d01 Go to Latest

auth/token_test.go

Implement GrantStore for Memstore. Fix bug in GrantStore that asks for a UUID when it really wants a string. Implement GrantStore interface in Memstore, including unit tests for successful (i.e., works-as-intended) scenarios.

History
paddy@28 1 package auth
paddy@28 2
paddy@28 3 import (
paddy@28 4 "testing"
paddy@28 5 "time"
paddy@28 6
paddy@28 7 "secondbit.org/uuid"
paddy@28 8 )
paddy@28 9
paddy@28 10 var tokenStores = []TokenStore{NewMemstore()}
paddy@28 11
paddy@28 12 func TestTokenStoreSuccess(t *testing.T) {
paddy@28 13 token := Token{
paddy@28 14 AccessToken: "access",
paddy@28 15 RefreshToken: "refresh",
paddy@28 16 Created: time.Now(),
paddy@28 17 ExpiresIn: 3600,
paddy@28 18 TokenType: "bearer",
paddy@28 19 Scope: "scope",
paddy@28 20 ProfileID: uuid.NewID(),
paddy@28 21 }
paddy@28 22 for pos, store := range tokenStores {
paddy@28 23 err := store.SaveToken(token)
paddy@28 24 if err != nil {
paddy@28 25 t.Errorf("Error saving token in TokenStore #%d: %s", pos, err)
paddy@28 26 }
paddy@28 27 retrievedAccess, err := store.GetToken(token.AccessToken, false)
paddy@28 28 if err != nil {
paddy@28 29 t.Errorf("Error retrieving token in TokenStore #%d: %s", pos, err)
paddy@28 30 }
paddy@28 31 t.Log(retrievedAccess)
paddy@28 32 // TODO: compare retrievedAccess to token
paddy@28 33 retrievedRefresh, err := store.GetToken(token.RefreshToken, true)
paddy@28 34 if err != nil {
paddy@28 35 t.Errorf("Error retrieving refresh token in TokenStore #%d: %s", pos, err)
paddy@28 36 }
paddy@28 37 t.Log(retrievedRefresh)
paddy@28 38 // TODO: compare retrievedRefresh to token
paddy@28 39 retrievedProfile, err := store.GetTokensByProfileID(token.ProfileID, 25, 0)
paddy@28 40 if err != nil {
paddy@28 41 t.Errorf("Error retrieving token by profile in TokenStore #%d: %s", pos, err)
paddy@28 42 }
paddy@28 43 if len(retrievedProfile) != 1 {
paddy@28 44 t.Errorf("Expected 1 token retrieved by profile ID from TokenStore #%d, got %+v", pos, retrievedProfile)
paddy@28 45 }
paddy@28 46 // TODO: compare retrievedProfile to token
paddy@28 47 err = store.RemoveToken(token.AccessToken)
paddy@28 48 if err != nil {
paddy@28 49 t.Errorf("Error removing token in TokenStore #%d: %s", pos, err)
paddy@28 50 }
paddy@28 51 _, err = store.GetToken(token.AccessToken, false)
paddy@28 52 if err != ErrTokenNotFound {
paddy@28 53 t.Errorf("Expected ErrTokenNotFound from TokenStore #%d, got %s", pos, err)
paddy@28 54 }
paddy@28 55 _, err = store.GetToken(token.RefreshToken, true)
paddy@28 56 if err != ErrTokenNotFound {
paddy@28 57 t.Errorf("Expected ErrTokenNotFound from TokenStore #%d, got %s", pos, err)
paddy@28 58 }
paddy@28 59 retrievedProfile, err = store.GetTokensByProfileID(token.ProfileID, 25, 0)
paddy@28 60 if err != nil {
paddy@28 61 t.Errorf("Error retrieving token by profile in TokenStore #%d: %s", pos, err)
paddy@28 62 }
paddy@28 63 if len(retrievedProfile) != 0 {
paddy@28 64 t.Errorf("Expected list of 0 tokens from TokenStore #%d, got %+v", pos, retrievedProfile)
paddy@28 65 }
paddy@28 66 }
paddy@28 67 }