38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package frp
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestValidateMultipleHTTPAndTCPProxies(t *testing.T) {
|
|
s := New()
|
|
cfg, err := s.Validate(map[string]interface{}{
|
|
"mode": "client",
|
|
"server_addr": "frps.example.com",
|
|
"proxies": []interface{}{
|
|
map[string]interface{}{"name": "ssh", "type": "tcp", "local_port": float64(22), "remote_port": float64(2222)},
|
|
map[string]interface{}{"name": "web", "type": "https", "local_port": float64(443), "custom_domains": []interface{}{"vpn.example.com"}},
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
text := s.frpcConfig(cfg, "test-token")
|
|
for _, expected := range []string{"name = \"ssh\"", "remotePort = 2222", "name = \"web\"", "customDomains = [\"vpn.example.com\"]"} {
|
|
if !strings.Contains(text, expected) {
|
|
t.Errorf("generated config missing %q:\n%s", expected, text)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestHTTPProxyNeedsDomain(t *testing.T) {
|
|
_, err := New().Validate(map[string]interface{}{
|
|
"mode": "client", "server_addr": "127.0.0.1",
|
|
"proxies": []interface{}{map[string]interface{}{"name": "web", "type": "http", "local_port": float64(8080)}},
|
|
})
|
|
if err == nil {
|
|
t.Fatal("expected HTTP domain validation error")
|
|
}
|
|
}
|