aboutsummaryrefslogtreecommitdiff
path: root/server_test.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-31 14:43:29 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-03-31 14:43:29 +0200
commit7cb7f7d4d90714d50331c68e97fc5169c4f67991 (patch)
tree37f04d81512323ee4aa20262396b7dfe5d6f4c58 /server_test.go
parent56b132f7dbd9668426d934a6feaa70f3252ed040 (diff)
Rewrite Test, pass HTTP
Diffstat (limited to 'server_test.go')
-rw-r--r--server_test.go128
1 files changed, 75 insertions, 53 deletions
diff --git a/server_test.go b/server_test.go
index efd6fdf..7f296b5 100644
--- a/server_test.go
+++ b/server_test.go
@@ -1,101 +1,123 @@
package goxy
import (
- "bytes"
"io"
"io/ioutil"
+ "log"
"net/http"
"net/http/httptest"
- "net/url"
- "os"
"testing"
-
- "golang.org/x/net/websocket"
)
+type Cannary string
+
const (
- cannary = "hello from backend"
- dataFile = "test.json"
+ cannary = Cannary("hello from backend")
+ dataFile = "test.json"
+ wwwServer = "localhost:8080"
+ tlsServer = "localhost:8443"
+ rpcServer = "localhost:8000"
)
-func TestReverseProxy(t *testing.T) {
- // Backend server
- backServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- io.WriteString(w, cannary)
- }))
- defer backServer.Close()
+var server Server
- // Websocket echo server
- wsServer := httptest.NewServer(websocket.Handler(func(ws *websocket.Conn) {
- io.Copy(ws, ws)
- }))
- defer wsServer.Close()
- wsURL, err := url.Parse(wsServer.URL)
+func init() {
+ server, err := NewServer(dataFile, wwwServer, tlsServer, rpcServer)
if err != nil {
- t.Error(err)
+ log.Fatal(err)
}
+ go server.Start()
+}
- // RPC Server
- rpcServer := httptest.NewServer(nil)
- defer rpcServer.Close()
- rpcURL, err := url.Parse(rpcServer.URL)
+func get(uri string) (string, error) {
+ resp, err := http.Get(uri)
if err != nil {
- t.Error(err)
+ return "", err
}
-
- // Frontend server
- frontServer := httptest.NewServer(nil)
- defer frontServer.Close()
- frontURL, err := url.Parse(frontServer.URL)
+ defer resp.Body.Close()
+ body, err := ioutil.ReadAll(resp.Body)
if err != nil {
- t.Error(err)
+ return "", err
}
+ return string(body), nil
+}
- // Initialize proxy server
- server, err := NewServer(dataFile, "localhost:8080", "localhost:8443", "localhost:8000")
+func add(e Entry) error {
+ client, err := DialRPC(rpcServer)
if err != nil {
- t.Error(err)
+ return err
}
- defer os.Remove(dataFile)
+ defer client.Close()
+ return client.Call("GoXY.Add", e, nil)
+}
- // Add routing entries
- rpcClient, err := DialRPC(rpcURL.Host)
+func del(host string) error {
+ client, err := DialRPC(rpcServer)
if err != nil {
- t.Error(err)
+ return err
}
+ defer client.Close()
+ return client.Call("GoXY.Del", host, nil)
+}
+
+func (c Cannary) ServeHTTP(w http.ResponseWriter, _ *http.Request) {
+ io.WriteString(w, string(c))
+}
+
+func (c Cannary) Equal(s string) bool {
+ return string(c) == s
+}
+
+func TestReverseProxy(t *testing.T) {
+ // Backend server
+ backServer := httptest.NewServer(cannary)
+ defer backServer.Close()
+ t.Log("start", backServer.URL)
// Test HTTP proxy
e := Entry{
- Host: frontURL.Host,
+ Host: "http://" + wwwServer,
Upstream: backServer.URL,
}
- if err := rpcClient.Call("GoXY.Add", e, nil); err != nil {
+ if err := add(e); err != nil {
t.Error(err)
}
+ t.Log("add", e)
- frontServer.Config.Handler = server.wwwServer.Handler
-
- resp, err := http.Get(frontServer.URL)
+ resp, err := get("http://" + wwwServer)
if err != nil {
t.Error(err)
}
- defer resp.Body.Close()
- b, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- t.Error(err)
+ if !cannary.Equal(resp) {
+ t.Errorf("got %q expected %q", resp, cannary)
}
- if string(b) != cannary {
- t.Error("got", string(b), "expected", cannary)
+ if err := del(wwwServer); err != nil {
+ t.Error(err)
}
+ t.Log("del", wwwServer)
+}
- rpcClient.Call("GoXY.Del", frontURL.Host, nil)
+func TestReverseProxyTLS(t *testing.T) {
+}
+
+func TestWebsocketProxy(t *testing.T) {
+ /*
+ // Websocket echo server
+ wsServer := httptest.NewServer(websocket.Handler(func(ws *websocket.Conn) {
+ io.Copy(ws, ws)
+ }))
+ defer wsServer.Close()
+ t.Log("start ws server @", wsServer.URL)
+ */
+}
+/*
// Test WebSocket proxy
e = Entry{
- Host: frontURL.Host,
- Upstream: "ws://" + wsURL.Host,
+ Host: frontServer.URL,
+ Upstream: wsServer.URL,
}
if err := rpcClient.Call("GoXY.Add", e, nil); err != nil {
t.Error(err)
@@ -120,4 +142,4 @@ func TestReverseProxy(t *testing.T) {
}
rpcClient.Call("GoXY.Del", frontURL.Host, nil)
-}
+*/