test: add comprehensive tests and fix CI build

This commit is contained in:
2025-11-06 22:49:13 +01:00
parent b3c8f68989
commit 0edeb67075
5 changed files with 1038 additions and 3 deletions

View File

@@ -14,6 +14,7 @@ import (
"git.dcentral.systems/toolz/goplt/pkg/config"
"git.dcentral.systems/toolz/goplt/pkg/logger"
"git.dcentral.systems/toolz/goplt/pkg/registry"
"git.dcentral.systems/toolz/goplt/pkg/services"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -425,3 +426,87 @@ func (m *mockServiceRegistry) Health(ctx context.Context, serviceID string) (*re
Status: "healthy",
}, nil
}
// mockAuthClient implements services.AuthServiceClient for testing.
type mockAuthClient struct {
loginResp *services.TokenResponse
loginErr error
refreshResp *services.TokenResponse
refreshErr error
validateResp *services.TokenClaims
validateErr error
logoutErr error
}
func (m *mockAuthClient) Login(ctx context.Context, email, password string) (*services.TokenResponse, error) {
return m.loginResp, m.loginErr
}
func (m *mockAuthClient) RefreshToken(ctx context.Context, refreshToken string) (*services.TokenResponse, error) {
return m.refreshResp, m.refreshErr
}
func (m *mockAuthClient) ValidateToken(ctx context.Context, token string) (*services.TokenClaims, error) {
return m.validateResp, m.validateErr
}
func (m *mockAuthClient) Logout(ctx context.Context, refreshToken string) error {
return m.logoutErr
}
// mockIdentityClient implements services.IdentityServiceClient for testing.
type mockIdentityClient struct {
getUserResp *services.User
getUserErr error
getUserByEmailResp *services.User
getUserByEmailErr error
createUserResp *services.User
createUserErr error
updateUserResp *services.User
updateUserErr error
deleteUserErr error
verifyEmailErr error
requestPasswordResetErr error
resetPasswordErr error
verifyPasswordResp *services.User
verifyPasswordErr error
}
func (m *mockIdentityClient) GetUser(ctx context.Context, id string) (*services.User, error) {
return m.getUserResp, m.getUserErr
}
func (m *mockIdentityClient) GetUserByEmail(ctx context.Context, email string) (*services.User, error) {
return m.getUserByEmailResp, m.getUserByEmailErr
}
func (m *mockIdentityClient) CreateUser(ctx context.Context, req *services.CreateUserRequest) (*services.User, error) {
return m.createUserResp, m.createUserErr
}
func (m *mockIdentityClient) UpdateUser(ctx context.Context, id string, req *services.UpdateUserRequest) (*services.User, error) {
return m.updateUserResp, m.updateUserErr
}
func (m *mockIdentityClient) DeleteUser(ctx context.Context, id string) error {
return m.deleteUserErr
}
func (m *mockIdentityClient) VerifyEmail(ctx context.Context, token string) error {
return m.verifyEmailErr
}
func (m *mockIdentityClient) RequestPasswordReset(ctx context.Context, email string) error {
return m.requestPasswordResetErr
}
func (m *mockIdentityClient) ResetPassword(ctx context.Context, token, newPassword string) error {
return m.resetPasswordErr
}
func (m *mockIdentityClient) VerifyPassword(ctx context.Context, email, password string) (*services.User, error) {
return m.verifyPasswordResp, m.verifyPasswordErr
}
// Note: mockClientFactory is not needed since we're testing handlers directly with mock clients.
// The actual clientFactory is tested separately in integration tests.