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) } }