chore: establish local platform baseline
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"data-terminal-cloud/internal/cache"
|
||||
"data-terminal-cloud/internal/config"
|
||||
"data-terminal-cloud/internal/ratelimit"
|
||||
)
|
||||
|
||||
func TestCallbacksApplicationStartsAndShutsDown(t *testing.T) {
|
||||
t.Setenv("APP_ENV", "test")
|
||||
t.Setenv("HTTP_ADDR", "127.0.0.1:0")
|
||||
t.Setenv("DATABASE_URL", "postgres://voice:voice_dev_only@localhost:55432/voice_platform?sslmode=disable")
|
||||
t.Setenv("REDIS_ADDR", "localhost:56379")
|
||||
t.Setenv("SHUTDOWN_TIMEOUT", "1s")
|
||||
t.Setenv("DEPENDENCY_TIMEOUT", "1s")
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 300*time.Millisecond)
|
||||
defer cancel()
|
||||
if err := Run(ctx, "callbacks"); err != nil {
|
||||
t.Fatalf("callbacks lifecycle: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplicationRejectsInvalidConfiguration(t *testing.T) {
|
||||
t.Setenv("REDIS_DB", "not-an-integer")
|
||||
if err := Run(context.Background(), "callbacks"); err == nil || !strings.Contains(err.Error(), "load configuration") {
|
||||
t.Fatalf("invalid configuration error=%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoggerLevelsAndRateLimiterAdapter(t *testing.T) {
|
||||
for _, level := range []string{"debug", "info", "warn", "error"} {
|
||||
logger := newLogger(config.Config{ServiceName: "app-integration", LogLevel: level})
|
||||
if logger == nil {
|
||||
t.Fatalf("nil logger for level %s", level)
|
||||
}
|
||||
}
|
||||
redisClient := cache.Open("localhost:56379", "", 0)
|
||||
defer redisClient.Close()
|
||||
limiter, err := ratelimit.NewPolicies(redisClient, "app-integration", map[string]ratelimit.Policy{"network": {RatePerSecond: 100, Burst: 2}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
result, err := (rateLimiterAdapter{limiter: limiter}).Allow(context.Background(), "network", "synthetic-client")
|
||||
if err != nil || !result.Allowed || result.Remaining < 0 {
|
||||
t.Fatalf("rate limit result=%+v err=%v", result, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternalProbeChecksIncludeManagedContentSafetyWithoutCallingIt(t *testing.T) {
|
||||
cfg := config.Config{
|
||||
ServiceName: "worker", ContentSafetyProvider: "managed_http",
|
||||
ContentSafetyEndpoint: "https://content-safety.example.com/v1/classify",
|
||||
}
|
||||
checks, err := externalProbeChecks(cfg)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(checks) != 1 || checks["content_safety_tls"] == nil {
|
||||
t.Fatalf("unexpected external probes: %+v", checks)
|
||||
}
|
||||
cfg.ContentSafetyProvider = "local"
|
||||
checks, err = externalProbeChecks(cfg)
|
||||
if err != nil || len(checks) != 0 {
|
||||
t.Fatalf("local content safety must not create an external probe: checks=%+v err=%v", checks, err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user