NOISSUE - Fix refresh token
Continuous Delivery / lint-and-build (push) Has been cancelled
Deploy GitHub Pages / swagger-ui (push) Has been cancelled
CI Pipeline / Lint Proto (push) Has been cancelled
CI Pipeline / Detect Changes (push) Has been cancelled
Continuous Delivery / Build and Push Docker Images (push) Has been cancelled
CI Pipeline / lint-and-build (push) Has been cancelled
CI Pipeline / Test ${{ matrix.module }} (push) Has been cancelled
CI Pipeline / Upload Coverage (push) Has been cancelled

Signed-off-by: dusan <borovcanindusan1@gmail.com>
This commit is contained in:
dusan
2026-04-01 18:06:21 +02:00
parent 351b25cd85
commit cc84466e7d
3 changed files with 34 additions and 10 deletions
+1
View File
@@ -31,6 +31,7 @@ func EncodeError(err error) error {
return status.Error(codes.InvalidArgument, err.Error())
case errors.Contains(err, svcerr.ErrAuthentication),
errors.Contains(err, auth.ErrKeyExpired),
errors.Contains(err, auth.ErrRevokedToken),
err == apiutil.ErrMissingEmail,
err == apiutil.ErrBearerToken:
return status.Error(codes.Unauthenticated, err.Error())
+6
View File
@@ -365,6 +365,12 @@ func (svc service) refreshKey(ctx context.Context, token string, key Key) (Token
return Token{}, errors.Wrap(errIssueTmp, err)
}
if key.Subject != "" && key.ExpiresAt.After(time.Now()) {
if err := svc.tokensCache.SaveActive(ctx, key.Subject, key.ID, key.Description, key.ExpiresAt); err != nil {
return Token{}, errors.Wrap(errSaveRefreshKey, err)
}
}
return Token{AccessToken: access, RefreshToken: refresh}, nil
}
+27 -10
View File
@@ -303,16 +303,17 @@ func TestIssue(t *testing.T) {
}
cases4 := []struct {
desc string
key auth.Key
token string
parseRes auth.Key
parseErr error
roleCheckErr error
issueErr error
cacheRes bool
cacheErr error
err error
desc string
key auth.Key
token string
parseRes auth.Key
parseErr error
roleCheckErr error
issueErr error
cacheRes bool
cacheErr error
saveActiveErr error
err error
}{
{
desc: "issue refresh key",
@@ -365,6 +366,20 @@ func TestIssue(t *testing.T) {
roleCheckErr: errRoleAuth,
err: errRoleAuth,
},
{
desc: "issue refresh key with failed to save active token",
key: auth.Key{
Type: auth.RefreshKey,
IssuedAt: time.Now(),
Subject: userID,
Role: auth.UserRole,
},
token: refreshToken,
parseRes: refreshkey,
cacheRes: true,
saveActiveErr: svcerr.ErrCreateEntity,
err: svcerr.ErrCreateEntity,
},
{
desc: "issue refresh key with revoked refresh token",
key: auth.Key{
@@ -400,6 +415,7 @@ func TestIssue(t *testing.T) {
tokenizerCall1 := tokenizer.On("Parse", mock.Anything, tc.token).Return(tc.parseRes, tc.parseErr)
tokenizerCall2 := tokenizer.On("Revoke", mock.Anything, tc.token).Return(tc.parseErr)
cacheCall := tokensCache.On("IsActive", context.Background(), tc.parseRes.ID).Return(tc.cacheRes, tc.cacheErr)
saveActiveCall := tokensCache.On("SaveActive", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(tc.saveActiveErr)
policyCall := pEvaluator.On("CheckPolicy", mock.Anything, policies.Policy{
Subject: tc.key.Subject,
SubjectType: policies.UserType,
@@ -414,6 +430,7 @@ func TestIssue(t *testing.T) {
tokenizerCall2.Unset()
policyCall.Unset()
cacheCall.Unset()
saveActiveCall.Unset()
})
}
}