vless_route_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package sub
  2. import "testing"
  3. func TestApplyVlessRoute(t *testing.T) {
  4. const id = "11111111-2222-4333-8444-555555555555"
  5. tests := []struct {
  6. name string
  7. id string
  8. route string
  9. want string
  10. }{
  11. {"empty route unchanged", id, "", id},
  12. {"whitespace route unchanged", id, " ", id},
  13. {"443 -> 01bb", id, "443", "11111111-2222-01bb-8444-555555555555"},
  14. {"53 -> 0035", id, "53", "11111111-2222-0035-8444-555555555555"},
  15. {"0 -> 0000", id, "0", "11111111-2222-0000-8444-555555555555"},
  16. {"65535 -> ffff", id, "65535", "11111111-2222-ffff-8444-555555555555"},
  17. {"trimmed value", id, " 443 ", "11111111-2222-01bb-8444-555555555555"},
  18. {"out of range high unchanged", id, "65536", id},
  19. {"negative unchanged", id, "-1", id},
  20. {"non-numeric unchanged", id, "abc", id},
  21. {"legacy multi-segment unchanged", id, "53,443", id},
  22. {"non-uuid id unchanged", "short", "443", "short"},
  23. {"empty id unchanged", "", "443", ""},
  24. }
  25. for _, tt := range tests {
  26. t.Run(tt.name, func(t *testing.T) {
  27. if got := applyVlessRoute(tt.id, tt.route); got != tt.want {
  28. t.Fatalf("applyVlessRoute(%q, %q) = %q, want %q", tt.id, tt.route, got, tt.want)
  29. }
  30. })
  31. }
  32. }
  33. func TestHostVlessRoute(t *testing.T) {
  34. if got := hostVlessRoute(map[string]any{"vlessRoute": "443"}); got != "443" {
  35. t.Fatalf(`hostVlessRoute = %q, want "443"`, got)
  36. }
  37. if got := hostVlessRoute(map[string]any{}); got != "" {
  38. t.Fatalf(`hostVlessRoute(missing) = %q, want ""`, got)
  39. }
  40. }