add RequestHeader option for websocket conn

This commit is contained in:
Jasper Rädisch
2023-02-21 13:12:23 +01:00
committed by fiatjaf_
parent 17a7c3a678
commit 74c646fe21
2 changed files with 25 additions and 5 deletions

View File

@ -121,9 +121,7 @@ func TestConnectContext(t *testing.T) {
func TestConnectContextCanceled(t *testing.T) {
// fake relay server
ws := newWebsocketServer(func(conn *websocket.Conn) {
io.ReadAll(conn) // discard all input
})
ws := newWebsocketServer(discardingHandler)
defer ws.Close()
// relay client
@ -135,6 +133,26 @@ func TestConnectContextCanceled(t *testing.T) {
}
}
func TestConnectWithOrigin(t *testing.T) {
// fake relay server
// default handler requires origin golang.org/x/net/websocket
ws := httptest.NewServer(websocket.Handler(discardingHandler))
defer ws.Close()
// relay client
r := &Relay{URL: NormalizeURL(ws.URL), RequestHeader: http.Header{"origin": {"https://example.com"}}}
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err := r.Connect(ctx)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
}
func discardingHandler(conn *websocket.Conn) {
io.ReadAll(conn) // discard all input
}
func newWebsocketServer(handler func(*websocket.Conn)) *httptest.Server {
return httptest.NewServer(&websocket.Server{
Handshake: anyOriginHandshake,