veza/veza-backend-api/internal/errors/errors_context_test.go
2025-12-03 20:29:37 +01:00

82 lines
2.1 KiB
Go

package errors
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAppError_WithContext(t *testing.T) {
err := New(ErrCodeValidation, "Invalid input")
err.Context = map[string]interface{}{
"request_id": "abc123",
"user_id": 42,
}
assert.NotNil(t, err.Context)
assert.Equal(t, "abc123", err.Context["request_id"])
assert.Equal(t, 42, err.Context["user_id"])
}
func TestAppError_ContextNil(t *testing.T) {
err := New(ErrCodeValidation, "Invalid input")
assert.Nil(t, err.Context)
}
func TestAppError_ContextEmpty(t *testing.T) {
err := New(ErrCodeValidation, "Invalid input")
err.Context = make(map[string]interface{})
assert.NotNil(t, err.Context)
assert.Equal(t, 0, len(err.Context))
}
func TestAppError_ContextWithMultipleFields(t *testing.T) {
err := New(ErrCodeInternal, "Internal error")
err.Context = map[string]interface{}{
"request_id": "req-123",
"user_id": int64(100),
"ip_address": "192.168.1.1",
"path": "/api/test",
}
assert.Equal(t, "req-123", err.Context["request_id"])
assert.Equal(t, int64(100), err.Context["user_id"])
assert.Equal(t, "192.168.1.1", err.Context["ip_address"])
assert.Equal(t, "/api/test", err.Context["path"])
}
func TestNewValidationError_Context(t *testing.T) {
err := NewValidationError("Validation failed",
ErrorDetail{Field: "email", Message: "Invalid format"},
)
// Context devrait être nil par défaut
assert.Nil(t, err.Context)
// Mais on peut l'ajouter après
err.Context = map[string]interface{}{
"request_id": "xyz789",
}
assert.Equal(t, "xyz789", err.Context["request_id"])
}
func TestNewNotFoundError_Context(t *testing.T) {
err := NewNotFoundError("User")
assert.Nil(t, err.Context)
err.Context = map[string]interface{}{
"resource_id": 123,
}
assert.Equal(t, 123, err.Context["resource_id"])
}
func TestWrap_Context(t *testing.T) {
originalErr := New(ErrCodeInternal, "Original error")
wrappedErr := Wrap(ErrCodeValidation, "Wrapped error", originalErr)
assert.Nil(t, wrappedErr.Context)
wrappedErr.Context = map[string]interface{}{
"wrapped": true,
}
assert.Equal(t, true, wrappedErr.Context["wrapped"])
}