47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package mesh
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestFabricTransportRejectsWebSocketTransport(t *testing.T) {
|
|
for _, target := range []FabricTransportTarget{
|
|
{Transport: "wss", Endpoint: "wss://node-a.example/fabric/session"},
|
|
{Transport: "relay", Endpoint: "quic://node-r.example:19443"},
|
|
{Transport: "outbound_reverse", Endpoint: "quic://node-b.example:19443"},
|
|
} {
|
|
_, _, err := FabricTransportForTarget(target, nil)
|
|
if err == nil || !strings.Contains(err.Error(), "quic is required") {
|
|
t.Fatalf("target = %+v err = %v, want quic-only rejection", target, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFabricTransportForTargetSelectsQUICByScheme(t *testing.T) {
|
|
transport, target, err := FabricTransportForTarget(FabricTransportTarget{
|
|
Endpoint: "quic://127.0.0.1:4433",
|
|
}, nil)
|
|
if err != nil {
|
|
t.Fatalf("select transport: %v", err)
|
|
}
|
|
if _, ok := transport.(*QUICFabricTransport); !ok {
|
|
t.Fatalf("transport = %T, want QUIC", transport)
|
|
}
|
|
if target.Endpoint != "127.0.0.1:4433" {
|
|
t.Fatalf("endpoint = %q", target.Endpoint)
|
|
}
|
|
}
|
|
|
|
func TestFabricTransportForTargetRejectsNonQUICByDefault(t *testing.T) {
|
|
_, target, err := FabricTransportForTarget(FabricTransportTarget{
|
|
Endpoint: "https://node.example",
|
|
}, nil)
|
|
if err == nil {
|
|
t.Fatal("non-QUIC target unexpectedly selected a transport")
|
|
}
|
|
if target.Endpoint != "https://node.example" {
|
|
t.Fatalf("endpoint = %q", target.Endpoint)
|
|
}
|
|
}
|