package config import ( "os" "path/filepath" "strings" "testing" ) func setCurrentDispatcherRuntimeEnvironment(t *testing.T) string { t.Helper() database := setDispatcherEnvironment(t) root := t.TempDir() for name, value := range map[string]string{ "DISPATCHER_GRPC_LISTEN": "127.0.0.1:0", "DISPATCHER_AGENT_ENDPOINTS_FILE": filepath.Join(root, "agent-endpoints.json"), "DISPATCHER_OSS_CONFIG_FILE": filepath.Join(root, "oss.json"), "MTLS_CA_FILE": filepath.Join(root, "ca.pem"), "MTLS_CERT_FILE": filepath.Join(root, "dispatcher.pem"), "MTLS_KEY_FILE": filepath.Join(root, "dispatcher.key"), "MTLS_PEER_CERT_FINGERPRINTS": strings.Repeat("a", 64), } { t.Setenv(name, value) } return database } func TestLoadSIPOnlyDispatcherRequiresNoRecordingOrCallListener(t *testing.T) { setCurrentDispatcherRuntimeEnvironment(t) t.Setenv("DISPATCHER_GRPC_LISTEN", "") t.Setenv("DISPATCHER_OSS_CONFIG_FILE", "") t.Setenv("MTLS_PEER_CERT_FINGERPRINTS", "") settings, err := LoadDispatcherRuntimeEnvironment("sip-only") if err != nil || settings.AgentEndpointsFile == "" || settings.OSSConfigFile != "" || settings.Listen != "" { t.Fatalf("SIP-only process inherited Mock business listeners: %+v %v", settings, err) } } func TestLoadDispatcherRuntimeEnvironmentRequiresExplicitMockDeployment(t *testing.T) { database := setCurrentDispatcherRuntimeEnvironment(t) settings, err := LoadDispatcherRuntimeEnvironment("mock") if err != nil { t.Fatal(err) } if settings.DispatcherID != dispatcherFixtureID || settings.SQLitePath != database || settings.Listen != "127.0.0.1:0" || settings.AgentEndpointsFile == "" || settings.OSSConfigFile == "" || len(settings.PeerFingerprints) != 1 { t.Fatal("Dispatcher deployment values were lost or replaced by a default") } if _, err := os.Stat(database); !os.IsNotExist(err) { t.Fatalf("preflight opened the business database: %v", err) } for _, name := range []string{ "DISPATCHER_GRPC_LISTEN", "DISPATCHER_AGENT_ENDPOINTS_FILE", "DISPATCHER_OSS_CONFIG_FILE", "MTLS_CA_FILE", "MTLS_CERT_FILE", "MTLS_KEY_FILE", "MTLS_PEER_CERT_FINGERPRINTS", } { t.Run(name, func(t *testing.T) { setCurrentDispatcherRuntimeEnvironment(t) t.Setenv(name, "") if _, err := LoadDispatcherRuntimeEnvironment("mock"); err == nil || !strings.Contains(err.Error(), name) { t.Fatalf("missing Dispatcher setting silently inherited an old default: %v", err) } }) } } func TestLoadDispatcherRuntimeEnvironmentRejectsExternalOrUnsupportedModeWithoutIO(t *testing.T) { for _, mode := range []string{"real", "mixed", ""} { t.Run(mode, func(t *testing.T) { database := setCurrentDispatcherRuntimeEnvironment(t) if _, err := LoadDispatcherRuntimeEnvironment(mode); err == nil || !strings.Contains(err.Error(), "Mock") { t.Fatalf("unapproved mode was admitted: %v", err) } if _, err := os.Stat(database); !os.IsNotExist(err) { t.Fatalf("mode rejection opened SQLite: %v", err) } }) } setCurrentDispatcherRuntimeEnvironment(t) const external = "0.0.0.0:19443" t.Setenv("DISPATCHER_GRPC_LISTEN", external) if _, err := LoadDispatcherRuntimeEnvironment("mock"); err == nil || !strings.Contains(err.Error(), "DISPATCHER_GRPC_LISTEN") || strings.Contains(err.Error(), external) { t.Fatalf("external Mock listener was admitted or echoed: %v", err) } setCurrentDispatcherRuntimeEnvironment(t) const invalid = "not-a-fingerprint" t.Setenv("MTLS_PEER_CERT_FINGERPRINTS", invalid) if _, err := LoadDispatcherRuntimeEnvironment("mock"); err == nil || !strings.Contains(err.Error(), "MTLS_PEER_CERT_FINGERPRINTS") || strings.Contains(err.Error(), invalid) { t.Fatalf("unapproved peer fingerprint was accepted or echoed: %v", err) } }