auth
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.
1.1 --- a/token_test.go Sun Sep 07 04:48:06 2014 -0400 1.2 +++ b/token_test.go Sun Sep 07 04:49:45 2014 -0400 1.3 @@ -9,6 +9,31 @@ 1.4 1.5 var tokenStores = []TokenStore{NewMemstore()} 1.6 1.7 +func compareTokens(token1, token2 Token) (success bool, field string, val1, val2 interface{}) { 1.8 + if token1.AccessToken != token2.AccessToken { 1.9 + return false, "access token", token1.AccessToken, token2.AccessToken 1.10 + } 1.11 + if token1.RefreshToken != token2.RefreshToken { 1.12 + return false, "refresh token", token1.RefreshToken, token2.RefreshToken 1.13 + } 1.14 + if !token1.Created.Equal(token2.Created) { 1.15 + return false, "created", token1.Created, token2.Created 1.16 + } 1.17 + if token1.ExpiresIn != token2.ExpiresIn { 1.18 + return false, "expires in", token1.ExpiresIn, token2.ExpiresIn 1.19 + } 1.20 + if token1.TokenType != token2.TokenType { 1.21 + return false, "token type", token1.TokenType, token2.TokenType 1.22 + } 1.23 + if token1.Scope != token2.Scope { 1.24 + return false, "scope", token1.Scope, token2.Scope 1.25 + } 1.26 + if !token1.ProfileID.Equal(token2.ProfileID) { 1.27 + return false, "profile ID", token1.ProfileID, token2.ProfileID 1.28 + } 1.29 + return true, "", nil, nil 1.30 +} 1.31 + 1.32 func TestTokenStoreSuccess(t *testing.T) { 1.33 token := Token{ 1.34 AccessToken: "access", 1.35 @@ -19,49 +44,56 @@ 1.36 Scope: "scope", 1.37 ProfileID: uuid.NewID(), 1.38 } 1.39 - for pos, store := range tokenStores { 1.40 + for _, store := range tokenStores { 1.41 err := store.SaveToken(token) 1.42 if err != nil { 1.43 - t.Errorf("Error saving token in TokenStore #%d: %s", pos, err) 1.44 + t.Errorf("Error saving token to %T: %s", err) 1.45 } 1.46 retrievedAccess, err := store.GetToken(token.AccessToken, false) 1.47 if err != nil { 1.48 - t.Errorf("Error retrieving token in TokenStore #%d: %s", pos, err) 1.49 + t.Errorf("Error retrieving token from %T: %s", store, err) 1.50 } 1.51 - t.Log(retrievedAccess) 1.52 - // TODO: compare retrievedAccess to token 1.53 + success, field, expectation, result := compareTokens(token, retrievedAccess) 1.54 + if !success { 1.55 + t.Errorf("Expected field %s to be %v, but got %v from %T", field, expectation, result, store) 1.56 + } 1.57 retrievedRefresh, err := store.GetToken(token.RefreshToken, true) 1.58 if err != nil { 1.59 - t.Errorf("Error retrieving refresh token in TokenStore #%d: %s", pos, err) 1.60 + t.Errorf("Error retrieving refresh token from %T: %s", store, err) 1.61 } 1.62 - t.Log(retrievedRefresh) 1.63 - // TODO: compare retrievedRefresh to token 1.64 + success, field, expectation, result = compareTokens(token, retrievedRefresh) 1.65 + if !success { 1.66 + t.Errorf("Expected field %s to be %v, but got %v from %T", field, expectation, result, store) 1.67 + } 1.68 retrievedProfile, err := store.GetTokensByProfileID(token.ProfileID, 25, 0) 1.69 if err != nil { 1.70 - t.Errorf("Error retrieving token by profile in TokenStore #%d: %s", pos, err) 1.71 + t.Errorf("Error retrieving token by profile from %T: %s", store, err) 1.72 } 1.73 if len(retrievedProfile) != 1 { 1.74 - t.Errorf("Expected 1 token retrieved by profile ID from TokenStore #%d, got %+v", pos, retrievedProfile) 1.75 + t.Errorf("Expected 1 token retrieved by profile ID from %T, got %+v", store, retrievedProfile) 1.76 } 1.77 - // TODO: compare retrievedProfile to token 1.78 + success, field, expectation, result = compareTokens(token, retrievedProfile[0]) 1.79 + if !success { 1.80 + t.Errorf("Expected field %s to be %v, but got %v from %T", field, expectation, result, store) 1.81 + } 1.82 err = store.RemoveToken(token.AccessToken) 1.83 if err != nil { 1.84 - t.Errorf("Error removing token in TokenStore #%d: %s", pos, err) 1.85 + t.Errorf("Error removing token from %T: %s", store, err) 1.86 } 1.87 _, err = store.GetToken(token.AccessToken, false) 1.88 if err != ErrTokenNotFound { 1.89 - t.Errorf("Expected ErrTokenNotFound from TokenStore #%d, got %s", pos, err) 1.90 + t.Errorf("Expected ErrTokenNotFound from %T, got %s", store, err) 1.91 } 1.92 _, err = store.GetToken(token.RefreshToken, true) 1.93 if err != ErrTokenNotFound { 1.94 - t.Errorf("Expected ErrTokenNotFound from TokenStore #%d, got %s", pos, err) 1.95 + t.Errorf("Expected ErrTokenNotFound from %T, got %s", store, err) 1.96 } 1.97 retrievedProfile, err = store.GetTokensByProfileID(token.ProfileID, 25, 0) 1.98 if err != nil { 1.99 - t.Errorf("Error retrieving token by profile in TokenStore #%d: %s", pos, err) 1.100 + t.Errorf("Error retrieving token by profile from %T: %s", store, err) 1.101 } 1.102 if len(retrievedProfile) != 0 { 1.103 - t.Errorf("Expected list of 0 tokens from TokenStore #%d, got %+v", pos, retrievedProfile) 1.104 + t.Errorf("Expected list of 0 tokens from %T, got %+v", store, retrievedProfile) 1.105 } 1.106 } 1.107 }