1
0

config_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package tuic
  2. import (
  3. "encoding/json"
  4. "testing"
  5. )
  6. func TestGenerateConfig(t *testing.T) {
  7. inst := Instance{
  8. Id: 1,
  9. Port: 8443,
  10. Listen: "0.0.0.0",
  11. Certificate: "/etc/ssl/cert.pem",
  12. PrivateKey: "/etc/ssl/key.pem",
  13. CongestionControl: "bbr",
  14. ALPN: []string{"h3", "spdy/3.1"},
  15. UDPRelayMode: "native",
  16. ZeroRTTHandshake: true,
  17. LogLevel: "info",
  18. MaxIdleTime: 15,
  19. AuthenticationTimeout: 3,
  20. MaxUdpRelayPacketSize: 1500,
  21. Clients: []TuicClientSettings{
  22. {UUID: "uuid-1", Password: "pass-1", Email: "e1"},
  23. {UUID: "uuid-2", Password: "pass-2", Email: "e2"},
  24. },
  25. }
  26. data, err := GenerateConfig(inst, "127.0.0.1:4433")
  27. if err != nil {
  28. t.Fatalf("GenerateConfig error: %v", err)
  29. }
  30. var parsed map[string]any
  31. if err := json.Unmarshal(data, &parsed); err != nil {
  32. t.Fatalf("Unmarshal error: %v", err)
  33. }
  34. if parsed["server"] != "127.0.0.1:4433" {
  35. t.Fatalf("expected the sidecar bound to the relay's loopback port, got %v", parsed["server"])
  36. }
  37. if parsed["certificate"] != "/etc/ssl/cert.pem" || parsed["private_key"] != "/etc/ssl/key.pem" {
  38. t.Fatalf("unexpected cert/key in json: %v", parsed)
  39. }
  40. users, ok := parsed["users"].(map[string]any)
  41. if !ok {
  42. t.Fatalf("expected users map, got %T", parsed["users"])
  43. }
  44. if users["uuid-1"] != "pass-1" || users["uuid-2"] != "pass-2" {
  45. t.Fatalf("unexpected users in json: %v", users)
  46. }
  47. }
  48. func TestGenerateConfigLogLevel(t *testing.T) {
  49. tests := []struct {
  50. input string
  51. expected string
  52. }{
  53. {"info", "info"},
  54. {"warn", "warn"},
  55. {"error", "error"},
  56. {"", "info"},
  57. {"debug", "debug"},
  58. {"trace", "trace"},
  59. }
  60. for _, tc := range tests {
  61. inst := Instance{
  62. Id: 1,
  63. Port: 8443,
  64. Listen: "0.0.0.0",
  65. LogLevel: tc.input,
  66. }
  67. data, err := GenerateConfig(inst, "127.0.0.1:4433")
  68. if err != nil {
  69. t.Fatalf("GenerateConfig error for %s: %v", tc.input, err)
  70. }
  71. var parsed map[string]any
  72. if err := json.Unmarshal(data, &parsed); err != nil {
  73. t.Fatalf("Unmarshal error for %s: %v", tc.input, err)
  74. }
  75. if parsed["log_level"] != tc.expected {
  76. t.Fatalf("expected log_level %s for input %s, got %v", tc.expected, tc.input, parsed["log_level"])
  77. }
  78. }
  79. }