chore: establish local platform baseline
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user