package render import ( "encoding/json" "testing" "webui4frpc/internal/store" ) func TestRenderTCPProxy(t *testing.T) { remote := store.Remote{Name: "srv", IP: "1.2.3.4", Port: 7000, Token: "secret"} data, err := Render(remote, []Proxy{ {Name: "web", Type: "tcp", LocalIP: "127.0.0.1", LocalPort: 8080, RemotePort: 8080}, }) if err != nil { t.Fatal(err) } var cfg Config if err := json.Unmarshal(data, &cfg); err != nil { t.Fatal(err) } if cfg.ServerAddr != "1.2.3.4" || cfg.Auth.Token != "secret" { t.Fatalf("cfg = %+v", cfg) } if len(cfg.Proxies) != 1 || cfg.Proxies[0].RemotePort != 8080 { t.Fatalf("proxies = %+v", cfg.Proxies) } } func TestRenderDuplicateServiceGetsPortSuffix(t *testing.T) { remote := store.Remote{Name: "srv", IP: "1.2.3.4", Port: 7000} proxy := []Proxy{ {Name: "web", Type: "tcp", LocalIP: "127.0.0.1", LocalPort: 8080, RemotePort: 8080}, {Name: "web", Type: "tcp", LocalIP: "127.0.0.1", LocalPort: 8080, RemotePort: 8081}, } data, err := Render(remote, proxy) if err != nil { t.Fatal(err) } var cfg Config _ = json.Unmarshal(data, &cfg) if len(cfg.Proxies) != 2 { t.Fatalf("proxies = %+v", cfg.Proxies) } if cfg.Proxies[1].Name != "web-8081" { t.Fatalf("second proxy name = %q", cfg.Proxies[1].Name) } }