sergeyiksanov / AuthServiceGolang

0 stars 0 forks source link

Размер функций #5

Open Dev-cmyser opened 5 hours ago

Dev-cmyser commented 5 hours ago

Очень большая, тестировать сложновато будет `func (c CredentialsUseCase) RefreshTokens(ctx context.Context, req proto.RefreshTokensRequest) (*proto.RefreshTokensResponse, error) { tx := c.DB.WithContext(ctx).Begin() defer tx.Rollback()

jwtRefreshToken, err := utils.VerifyRefreshToken(req.RefreshToken)
if err != nil {
    return nil, err
}

jti, err := utils.GetJTIFromToken(jwtRefreshToken)
if err != nil {
    return nil, err
}

token := new(entity.Token)
if err := c.TokensRepository.GetTokenByJTI(tx, jti, token); err != nil {
    return nil, utils.InvalidRefreshToken
}

if token.Revoked {
    return nil, utils.RevokedRefreshToken
}

if err := c.TokensRepository.RevokeAllTokensWithBySubjectId(tx, token.SubjectId); err != nil {
    return nil, utils.InternalServerError
}

credentials := new(entity.Credentials)
if err := c.CredentialsRepository.GetById(tx, credentials, token.SubjectId); err != nil {
    return nil, utils.InternalServerError
}

accessToken, refreshToken, accessTokenString, refreshTokenString, err := utils.CreatePairTokens(credentials.ID, credentials.Email)

if err := c.TokensRepository.Create(tx, accessToken); err != nil {
    log.Fatalf("Failed save access token: %v", err)
    return nil, utils.InternalServerError
}

if err := c.TokensRepository.Create(tx, refreshToken); err != nil {
    log.Fatalf("Failed save refresh token: %v", err)
    return nil, utils.InternalServerError
}

if err := tx.Commit().Error; err != nil {
    return nil, utils.InternalServerError
}

return &proto.RefreshTokensResponse{
    Tokens: &proto.Tokens{
        Refresh: refreshTokenString,
        Access:  accessTokenString,
    },
}, nil

} `

sergeyiksanov commented 5 hours ago

да, я уже столкнулся с этой проблемой, когда начал писать тесты, спасибо