- Restructure handlers into file_commands/file_queries/file_handlers - Add gRPC auth client, JWT middleware, rate limiting, request ID - Add common utilities: logger, sanitizer, s3_errors - Add unit tests for config, mediator, auth, request_id, sanitize - Add proto definitions and generated code - Remove old web UI pages - Add .dockerignore and .env.example
71 lines
1.5 KiB
Go
71 lines
1.5 KiB
Go
package mediator
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
// --- test request / response types ---
|
|
|
|
type testRequest struct {
|
|
Message string
|
|
}
|
|
|
|
type testResponse struct {
|
|
Result string
|
|
}
|
|
|
|
// --- stub handler ---
|
|
|
|
type stubHandler struct {
|
|
response testResponse
|
|
err error
|
|
}
|
|
|
|
func (h *stubHandler) Handle(_ context.Context, _ testRequest) (testResponse, error) {
|
|
return h.response, h.err
|
|
}
|
|
|
|
// --- tests ---
|
|
|
|
func TestRegisterAndSend_Success(t *testing.T) {
|
|
m := NewMediator()
|
|
Register[testRequest, testResponse](m, &stubHandler{
|
|
response: testResponse{Result: "ok"},
|
|
})
|
|
|
|
resp, err := Send[testRequest, testResponse](m, context.Background(), testRequest{Message: "hello"})
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
if resp.Result != "ok" {
|
|
t.Errorf("expected result %q, got %q", "ok", resp.Result)
|
|
}
|
|
}
|
|
|
|
func TestSend_UnregisteredType(t *testing.T) {
|
|
m := NewMediator()
|
|
|
|
_, err := Send[testRequest, testResponse](m, context.Background(), testRequest{Message: "hello"})
|
|
if err == nil {
|
|
t.Fatal("expected error for unregistered type, got nil")
|
|
}
|
|
}
|
|
|
|
func TestSend_HandlerError(t *testing.T) {
|
|
m := NewMediator()
|
|
expectedErr := errors.New("something went wrong")
|
|
Register[testRequest, testResponse](m, &stubHandler{
|
|
err: expectedErr,
|
|
})
|
|
|
|
_, err := Send[testRequest, testResponse](m, context.Background(), testRequest{Message: "hello"})
|
|
if err == nil {
|
|
t.Fatal("expected error from handler, got nil")
|
|
}
|
|
if err.Error() != expectedErr.Error() {
|
|
t.Errorf("expected error %q, got %q", expectedErr.Error(), err.Error())
|
|
}
|
|
}
|