auth

Paddy 2014-09-07 Parent:14599a5c7819 Child:bd274615ce72

35:d89740a34654 Browse Files

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.

token_test.go

     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  }