default_json_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package sub
  2. import (
  3. "encoding/json"
  4. "strings"
  5. "testing"
  6. )
  7. // xray-core moves freedom settings.domainStrategy to sockopt with a warning on
  8. // every load (#6482); the embed omits it and gets the AsIs default.
  9. func TestDefaultJSON_FreedomOutboundHasNoLegacyDomainStrategy(t *testing.T) {
  10. var cfg map[string]any
  11. if err := json.Unmarshal([]byte(defaultJson), &cfg); err != nil {
  12. t.Fatalf("unmarshal embedded default.json: %v", err)
  13. }
  14. outbounds, _ := cfg["outbounds"].([]any)
  15. var sawFreedom bool
  16. for _, raw := range outbounds {
  17. ob, _ := raw.(map[string]any)
  18. proto, _ := ob["protocol"].(string)
  19. if !strings.EqualFold(proto, "freedom") {
  20. continue
  21. }
  22. sawFreedom = true
  23. settings, _ := ob["settings"].(map[string]any)
  24. if _, ok := settings["domainStrategy"]; ok {
  25. t.Fatalf("freedom outbound %q still has settings.domainStrategy=%v; use sockopt or omit (AsIs default)", ob["tag"], settings["domainStrategy"])
  26. }
  27. if _, ok := settings["targetStrategy"]; ok {
  28. t.Fatalf("freedom outbound %q still has settings.targetStrategy", ob["tag"])
  29. }
  30. if _, ok := ob["targetStrategy"]; ok {
  31. t.Fatalf("freedom outbound %q still has root targetStrategy", ob["tag"])
  32. }
  33. }
  34. if !sawFreedom {
  35. t.Fatal("embedded default.json has no freedom outbound to check")
  36. }
  37. }