auth

Paddy 2014-09-07 Parent:75cf37088852 Child:111382010276

35:d89740a34654 Go to Latest

auth/token_test.go

Fix token tests. Use the %T format to return the name of the TokenStore that failed tests, instead of just returning the position. Compare the fields of the tokens retrieved against the expected fields.

History
1 package auth
3 import (
4 "testing"
5 "time"
7 "secondbit.org/uuid"
8 )
10 var tokenStores = []TokenStore{NewMemstore()}
12 func compareTokens(token1, token2 Token) (success bool, field string, val1, val2 interface{}) {
13 if token1.AccessToken != token2.AccessToken {
14 return false, "access token", token1.AccessToken, token2.AccessToken
15 }
16 if token1.RefreshToken != token2.RefreshToken {
17 return false, "refresh token", token1.RefreshToken, token2.RefreshToken
18 }
19 if !token1.Created.Equal(token2.Created) {
20 return false, "created", token1.Created, token2.Created
21 }
22 if token1.ExpiresIn != token2.ExpiresIn {
23 return false, "expires in", token1.ExpiresIn, token2.ExpiresIn
24 }
25 if token1.TokenType != token2.TokenType {
26 return false, "token type", token1.TokenType, token2.TokenType
27 }
28 if token1.Scope != token2.Scope {
29 return false, "scope", token1.Scope, token2.Scope
30 }
31 if !token1.ProfileID.Equal(token2.ProfileID) {
32 return false, "profile ID", token1.ProfileID, token2.ProfileID
33 }
34 return true, "", nil, nil
35 }
37 func TestTokenStoreSuccess(t *testing.T) {
38 token := Token{
39 AccessToken: "access",
40 RefreshToken: "refresh",
41 Created: time.Now(),
42 ExpiresIn: 3600,
43 TokenType: "bearer",
44 Scope: "scope",
45 ProfileID: uuid.NewID(),
46 }
47 for _, store := range tokenStores {
48 err := store.SaveToken(token)
49 if err != nil {
50 t.Errorf("Error saving token to %T: %s", err)
51 }
52 retrievedAccess, err := store.GetToken(token.AccessToken, false)
53 if err != nil {
54 t.Errorf("Error retrieving token from %T: %s", store, err)
55 }
56 success, field, expectation, result := compareTokens(token, retrievedAccess)
57 if !success {
58 t.Errorf("Expected field %s to be %v, but got %v from %T", field, expectation, result, store)
59 }
60 retrievedRefresh, err := store.GetToken(token.RefreshToken, true)
61 if err != nil {
62 t.Errorf("Error retrieving refresh token from %T: %s", store, err)
63 }
64 success, field, expectation, result = compareTokens(token, retrievedRefresh)
65 if !success {
66 t.Errorf("Expected field %s to be %v, but got %v from %T", field, expectation, result, store)
67 }
68 retrievedProfile, err := store.GetTokensByProfileID(token.ProfileID, 25, 0)
69 if err != nil {
70 t.Errorf("Error retrieving token by profile from %T: %s", store, err)
71 }
72 if len(retrievedProfile) != 1 {
73 t.Errorf("Expected 1 token retrieved by profile ID from %T, got %+v", store, retrievedProfile)
74 }
75 success, field, expectation, result = compareTokens(token, retrievedProfile[0])
76 if !success {
77 t.Errorf("Expected field %s to be %v, but got %v from %T", field, expectation, result, store)
78 }
79 err = store.RemoveToken(token.AccessToken)
80 if err != nil {
81 t.Errorf("Error removing token from %T: %s", store, err)
82 }
83 _, err = store.GetToken(token.AccessToken, false)
84 if err != ErrTokenNotFound {
85 t.Errorf("Expected ErrTokenNotFound from %T, got %s", store, err)
86 }
87 _, err = store.GetToken(token.RefreshToken, true)
88 if err != ErrTokenNotFound {
89 t.Errorf("Expected ErrTokenNotFound from %T, got %s", store, err)
90 }
91 retrievedProfile, err = store.GetTokensByProfileID(token.ProfileID, 25, 0)
92 if err != nil {
93 t.Errorf("Error retrieving token by profile from %T: %s", store, err)
94 }
95 if len(retrievedProfile) != 0 {
96 t.Errorf("Expected list of 0 tokens from %T, got %+v", store, retrievedProfile)
97 }
98 }
99 }