46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"log/slog"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRunValidatesConfiguration(t *testing.T) {
|
|
logger := slog.New(slog.NewJSONHandler(io.Discard, nil))
|
|
t.Setenv("MOCK_PROVIDER_DUPLICATE_CALLBACKS", "invalid")
|
|
if err := run(context.Background(), logger); err == nil || !strings.Contains(err.Error(), "duplicate callback") {
|
|
t.Fatalf("duplicate validation error=%v", err)
|
|
}
|
|
t.Setenv("MOCK_PROVIDER_DUPLICATE_CALLBACKS", "2")
|
|
t.Setenv("MOCK_PROVIDER_START_DELAY", "invalid")
|
|
if err := run(context.Background(), logger); err == nil || !strings.Contains(err.Error(), "start delay") {
|
|
t.Fatalf("delay validation error=%v", err)
|
|
}
|
|
}
|
|
|
|
func TestRunStartsAndShutsDown(t *testing.T) {
|
|
logger := slog.New(slog.NewJSONHandler(io.Discard, nil))
|
|
t.Setenv("HTTP_ADDR", "127.0.0.1:0")
|
|
t.Setenv("MOCK_PROVIDER_START_DELAY", "1ms")
|
|
t.Setenv("MOCK_PROVIDER_DUPLICATE_CALLBACKS", "1")
|
|
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
|
|
defer cancel()
|
|
if err := run(ctx, logger); err != nil {
|
|
t.Fatalf("provider lifecycle: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestEnvUsesValueAndFallback(t *testing.T) {
|
|
t.Setenv("MOCK_PROVIDER_TEST_VALUE", "configured")
|
|
if got := env("MOCK_PROVIDER_TEST_VALUE", "fallback"); got != "configured" {
|
|
t.Fatalf("value=%q", got)
|
|
}
|
|
if got := env("MOCK_PROVIDER_MISSING_VALUE", "fallback"); got != "fallback" {
|
|
t.Fatalf("fallback=%q", got)
|
|
}
|
|
}
|