| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package tuic
- import (
- "encoding/json"
- "testing"
- )
- func TestGenerateConfig(t *testing.T) {
- inst := Instance{
- Id: 1,
- Port: 8443,
- Listen: "0.0.0.0",
- Certificate: "/etc/ssl/cert.pem",
- PrivateKey: "/etc/ssl/key.pem",
- CongestionControl: "bbr",
- ALPN: []string{"h3", "spdy/3.1"},
- UDPRelayMode: "native",
- ZeroRTTHandshake: true,
- LogLevel: "info",
- MaxIdleTime: 15,
- AuthenticationTimeout: 3,
- MaxUdpRelayPacketSize: 1500,
- Clients: []TuicClientSettings{
- {UUID: "uuid-1", Password: "pass-1", Email: "e1"},
- {UUID: "uuid-2", Password: "pass-2", Email: "e2"},
- },
- }
- data, err := GenerateConfig(inst, "127.0.0.1:4433")
- if err != nil {
- t.Fatalf("GenerateConfig error: %v", err)
- }
- var parsed map[string]any
- if err := json.Unmarshal(data, &parsed); err != nil {
- t.Fatalf("Unmarshal error: %v", err)
- }
- if parsed["server"] != "127.0.0.1:4433" {
- t.Fatalf("expected the sidecar bound to the relay's loopback port, got %v", parsed["server"])
- }
- if parsed["certificate"] != "/etc/ssl/cert.pem" || parsed["private_key"] != "/etc/ssl/key.pem" {
- t.Fatalf("unexpected cert/key in json: %v", parsed)
- }
- users, ok := parsed["users"].(map[string]any)
- if !ok {
- t.Fatalf("expected users map, got %T", parsed["users"])
- }
- if users["uuid-1"] != "pass-1" || users["uuid-2"] != "pass-2" {
- t.Fatalf("unexpected users in json: %v", users)
- }
- }
- func TestGenerateConfigLogLevel(t *testing.T) {
- tests := []struct {
- input string
- expected string
- }{
- {"info", "info"},
- {"warn", "warn"},
- {"error", "error"},
- {"", "info"},
- {"debug", "debug"},
- {"trace", "trace"},
- }
- for _, tc := range tests {
- inst := Instance{
- Id: 1,
- Port: 8443,
- Listen: "0.0.0.0",
- LogLevel: tc.input,
- }
- data, err := GenerateConfig(inst, "127.0.0.1:4433")
- if err != nil {
- t.Fatalf("GenerateConfig error for %s: %v", tc.input, err)
- }
- var parsed map[string]any
- if err := json.Unmarshal(data, &parsed); err != nil {
- t.Fatalf("Unmarshal error for %s: %v", tc.input, err)
- }
- if parsed["log_level"] != tc.expected {
- t.Fatalf("expected log_level %s for input %s, got %v", tc.expected, tc.input, parsed["log_level"])
- }
- }
- }
|