inbound_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package xray
  2. import (
  3. "testing"
  4. "github.com/mhsanaei/3x-ui/v3/util/json_util"
  5. )
  6. func makeInbound() InboundConfig {
  7. return InboundConfig{
  8. Listen: json_util.RawMessage(`"0.0.0.0"`),
  9. Port: 1234,
  10. Protocol: "vless",
  11. Settings: json_util.RawMessage(`{"clients":[{"id":"abc"}]}`),
  12. StreamSettings: json_util.RawMessage(`{"network":"tcp"}`),
  13. Tag: "inbound-1234",
  14. Sniffing: json_util.RawMessage(`{"enabled":false}`),
  15. }
  16. }
  17. func TestInboundConfigEquals_Identical(t *testing.T) {
  18. a := makeInbound()
  19. b := makeInbound()
  20. if !a.Equals(&b) {
  21. t.Fatal("two identical inbounds should be Equals")
  22. }
  23. }
  24. func TestInboundConfigEquals_MutationsBreakEquality(t *testing.T) {
  25. cases := []struct {
  26. name string
  27. mutator func(c *InboundConfig)
  28. }{
  29. {"Listen", func(c *InboundConfig) { c.Listen = json_util.RawMessage(`"127.0.0.1"`) }},
  30. {"Port", func(c *InboundConfig) { c.Port = 9999 }},
  31. {"Protocol", func(c *InboundConfig) { c.Protocol = "vmess" }},
  32. {"Settings", func(c *InboundConfig) { c.Settings = json_util.RawMessage(`{"clients":[]}`) }},
  33. {"StreamSettings", func(c *InboundConfig) { c.StreamSettings = json_util.RawMessage(`{"network":"ws"}`) }},
  34. {"Tag", func(c *InboundConfig) { c.Tag = "inbound-other" }},
  35. {"Sniffing", func(c *InboundConfig) { c.Sniffing = json_util.RawMessage(`{"enabled":true}`) }},
  36. }
  37. for _, tc := range cases {
  38. t.Run(tc.name, func(t *testing.T) {
  39. a := makeInbound()
  40. b := makeInbound()
  41. tc.mutator(&b)
  42. if a.Equals(&b) {
  43. t.Fatalf("mutating %s should break Equals", tc.name)
  44. }
  45. })
  46. }
  47. }