aboutsummaryrefslogtreecommitdiff
path: root/server_test.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-28 17:27:56 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-03-28 17:27:56 +0200
commitdbb5e2ce7f1ff71e29d4065957d0ab603d2157c0 (patch)
tree67eef3a081b0eca002557abffd19d85f7b00e104 /server_test.go
parent9a4e0f70c967c3905e4430824f420ce2dd68a92f (diff)
Add WS test
Diffstat (limited to 'server_test.go')
-rw-r--r--server_test.go50
1 files changed, 41 insertions, 9 deletions
diff --git a/server_test.go b/server_test.go
index b83edcd..a514b3c 100644
--- a/server_test.go
+++ b/server_test.go
@@ -1,17 +1,20 @@
package goxy
import (
+ "bytes"
"io"
"io/ioutil"
"net/http"
"net/http/httptest"
"net/url"
"testing"
+
+ "golang.org/x/net/websocket"
)
const cannary = "hello from backend"
-func TestNewServer(t *testing.T) {
+func TestReverseProxy(t *testing.T) {
backServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, cannary)
}))
@@ -24,16 +27,13 @@ func TestNewServer(t *testing.T) {
rpcServer := httptest.NewServer(nil)
defer rpcServer.Close()
-
rpcURL, err := url.Parse(rpcServer.URL)
if err != nil {
t.Error(err)
}
frontServer := httptest.NewServer(nil)
- if err != nil {
- t.Error(err)
- }
+ defer frontServer.Close()
frontURL, err := url.Parse(frontServer.URL)
if err != nil {
t.Error(err)
@@ -43,13 +43,11 @@ func TestNewServer(t *testing.T) {
if err != nil {
t.Error(err)
}
- err = rpcClient.Call("GoXY.Add", Entry{
- ServerName: frontURL.Host,
- Upstream: backServer.URL,
- }, nil)
+ err = rpcClient.Call("GoXY.Add", Entry{ServerName: frontURL.Host, Upstream: backServer.URL}, nil)
if err != nil {
t.Error(err)
}
+ defer rpcClient.Call("GoXY.Del", frontURL.Host, nil)
frontServer.Config.Handler = server.Handler
@@ -67,4 +65,38 @@ func TestNewServer(t *testing.T) {
if string(b) != cannary {
t.Error("got", string(b), "expected", cannary)
}
+
+ // XXX WebSocket
+
+ wsServer := httptest.NewServer(websocket.Handler(func(ws *websocket.Conn) {
+ io.Copy(ws, ws)
+ }))
+ defer wsServer.Close()
+ wsURL, err := url.Parse(wsServer.URL)
+ if err != nil {
+ t.Error(err)
+ }
+
+ err = rpcClient.Call("GoXY.Add", Entry{ServerName: frontURL.Host, Upstream: "ws://" + wsURL.Host}, nil)
+ if err != nil {
+ t.Error(err)
+ }
+ defer rpcClient.Call("GoXY.Del", frontURL.Host, nil)
+
+ frontServer.Config.Handler = server.Handler
+
+ ws, err := websocket.Dial("ws://"+frontURL.Host, "", "http://localhost")
+ if err != nil {
+ t.Error(err)
+ }
+ if _, err := ws.Write([]byte(cannary)); err != nil {
+ t.Error(err)
+ }
+ msg := make([]byte, len(cannary))
+ if _, err := ws.Read(msg); err != nil {
+ t.Error(err)
+ }
+ if !bytes.Equal(msg, []byte(cannary)) {
+ t.Error("got", string(msg), "expected", cannary)
+ }
}