package qaopsorg import ( "testing" "time" ) func TestDirectorySyncSettingsAreExplicitAndServerOwned(t *testing.T) { values := map[string]string{} get := func(k string) string { return values[k] } off, err := LoadSyncSettings(get) if err != nil || off.Enabled { t.Fatal("sync must default off") } values["DOBOTAI_OPS_DIRECTORY_SYNC_ENABLED"] = "true" if _, err = LoadSyncSettings(get); err == nil { t.Fatal("unbound runtime accepted") } values["DOBOTAI_OPS_TENANT_KEY"] = "fixture-tenant" values["DOBOTAI_OPS_DIRECTORY_SYNC_PYTHON"] = "/usr/bin/python3" values["DOBOTAI_OPS_DIRECTORY_SYNC_SCRIPT"] = "/app/scripts/qa_ops_directory_sync.py" values["DOBOTAI_OPS_DIRECTORY_SYNC_RUNTIME_ROOT"] = "/data/weekly-report" values["DOBOTAI_OPS_DIRECTORY_SYNC_SPOOL_ROOT"] = "/data/private-spool" ready, err := LoadSyncSettings(get) if err != nil || !ready.Enabled || ready.Runner.Timeout != 20*time.Minute { t.Fatal("valid runtime not configured") } values["DOBOTAI_OPS_DIRECTORY_SYNC_TIMEOUT"] = "31m" if _, err = LoadSyncSettings(get); err == nil { t.Fatal("unbounded source timeout") } values["DOBOTAI_OPS_DIRECTORY_SYNC_TIMEOUT"] = "10m" values["DOBOTAI_OPS_DIRECTORY_SYNC_SCRIPT"] = "relative/script.py" if _, err = LoadSyncSettings(get); err == nil { t.Fatal("browser-like relative script accepted") } }