Files
cheesy-arena-lite/web/web_test.go

79 lines
2.3 KiB
Go
Raw Normal View History

2014-06-06 21:26:55 -07:00
// Copyright 2014 Team 254. All Rights Reserved.
// Author: pat@patfairbank.com (Patrick Fairbank)
package web
2014-06-06 21:26:55 -07:00
import (
"github.com/Team254/cheesy-arena/field"
"github.com/Team254/cheesy-arena/websocket"
2014-06-06 21:26:55 -07:00
"github.com/stretchr/testify/assert"
"net/http"
"net/http/httptest"
"strings"
"testing"
"time"
2014-06-06 21:26:55 -07:00
)
func TestIndex(t *testing.T) {
web := setupTestWeb(t)
2014-06-06 21:26:55 -07:00
recorder := web.getHttpResponse("/")
2014-06-06 21:26:55 -07:00
assert.Equal(t, 200, recorder.Code)
2014-07-13 01:13:17 -07:00
assert.Contains(t, recorder.Body.String(), "Home - Untitled Event - Cheesy Arena")
2014-06-06 21:26:55 -07:00
}
func (web *Web) getHttpResponse(path string) *httptest.ResponseRecorder {
2014-06-06 21:26:55 -07:00
recorder := httptest.NewRecorder()
req, _ := http.NewRequest("GET", path, nil)
web.newHandler().ServeHTTP(recorder, req)
2014-06-06 21:26:55 -07:00
return recorder
}
func (web *Web) postHttpResponse(path string, body string) *httptest.ResponseRecorder {
2014-06-06 21:26:55 -07:00
recorder := httptest.NewRecorder()
req, _ := http.NewRequest("POST", path, strings.NewReader(body))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value")
web.newHandler().ServeHTTP(recorder, req)
2014-06-06 21:26:55 -07:00
return recorder
}
// Starts a real local HTTP server that can be used by more sophisticated tests.
func (web *Web) startTestServer() (*httptest.Server, string) {
server := httptest.NewServer(web.newHandler())
return server, "ws" + server.URL[len("http"):]
}
2014-07-27 16:41:09 -07:00
// Receives the next websocket message and asserts that it is an error.
func readWebsocketError(t *testing.T, ws *websocket.Websocket) string {
2014-07-27 16:41:09 -07:00
messageType, data, err := ws.Read()
if assert.Nil(t, err) && assert.Equal(t, "error", messageType) {
return data.(string)
}
return "error"
}
// Receives the next websocket message and asserts that it is of the given type.
func readWebsocketType(t *testing.T, ws *websocket.Websocket, expectedMessageType string) interface{} {
messageType, message, err := ws.ReadWithTimeout(time.Second)
2014-07-27 16:41:09 -07:00
if assert.Nil(t, err) {
assert.Equal(t, expectedMessageType, messageType)
}
return message
}
2014-08-02 19:43:45 -07:00
func readWebsocketMultiple(t *testing.T, ws *websocket.Websocket, count int) map[string]interface{} {
2014-08-02 19:43:45 -07:00
messages := make(map[string]interface{})
for i := 0; i < count; i++ {
messageType, message, err := ws.ReadWithTimeout(time.Second)
2014-08-02 19:43:45 -07:00
if assert.Nil(t, err) {
messages[messageType] = message
}
}
return messages
}
func setupTestWeb(t *testing.T) *Web {
arena := field.SetupTestArena(t, "web")
return NewWeb(arena)
}