github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/igm/sockjs-go.v2/sockjs/jsonp_test.gon-place (about) 1 package sockjs 2 3 import ( 4 "net/http" 5 "net/http/httptest" 6 "strings" 7 "testing" 8 "time" 9 ) 10 11 func TestHandler_jsonpNoCallback(t *testing.T) { 12 h := newTestHandler() 13 rw := httptest.NewRecorder() 14 req, _ := http.NewRequest("GET", "/server/session/jsonp", nil) 15 h.jsonp(rw, req) 16 if rw.Code != http.StatusInternalServerError { 17 t.Errorf("Unexpected response code, got '%d', expected '%d'", rw.Code, http.StatusInternalServerError) 18 } 19 expectedContentType := "text/plain; charset=utf-8" 20 if rw.Header().Get("content-type") != expectedContentType { 21 t.Errorf("Unexpected content type, got '%s', expected '%s'", rw.Header().Get("content-type"), expectedContentType) 22 } 23 } 24 25 func TestHandler_jsonp(t *testing.T) { 26 h := newTestHandler() 27 rw := httptest.NewRecorder() 28 req, _ := http.NewRequest("GET", "/server/session/jsonp?c=testCallback", nil) 29 h.jsonp(rw, req) 30 expectedContentType := "application/javascript; charset=UTF-8" 31 if rw.Header().Get("content-type") != expectedContentType { 32 t.Errorf("Unexpected content type, got '%s', expected '%s'", rw.Header().Get("content-type"), expectedContentType) 33 } 34 expectedBody := "testCallback(\"o\");\r\n" 35 if rw.Body.String() != expectedBody { 36 t.Errorf("Unexpected body, got '%s', expected '%s'", rw.Body, expectedBody) 37 } 38 } 39 40 func TestHandler_jsonpSendNoPayload(t *testing.T) { 41 h := newTestHandler() 42 rw := httptest.NewRecorder() 43 req, _ := http.NewRequest("POST", "/server/session/jsonp_send", nil) 44 h.jsonpSend(rw, req) 45 if rw.Code != http.StatusInternalServerError { 46 t.Errorf("Unexpected response code, got '%d', expected '%d'", rw.Code, http.StatusInternalServerError) 47 } 48 } 49 50 func TestHandler_jsonpSendWrongPayload(t *testing.T) { 51 h := newTestHandler() 52 rw := httptest.NewRecorder() 53 req, _ := http.NewRequest("POST", "/server/session/jsonp_send", strings.NewReader("wrong payload")) 54 h.jsonpSend(rw, req) 55 if rw.Code != http.StatusInternalServerError { 56 t.Errorf("Unexpected response code, got '%d', expected '%d'", rw.Code, http.StatusInternalServerError) 57 } 58 } 59 60 func TestHandler_jsonpSendNoSession(t *testing.T) { 61 h := newTestHandler() 62 rw := httptest.NewRecorder() 63 req, _ := http.NewRequest("POST", "/server/session/jsonp_send", strings.NewReader("[\"message\"]")) 64 h.jsonpSend(rw, req) 65 if rw.Code != http.StatusNotFound { 66 t.Errorf("Unexpected response code, got '%d', expected '%d'", rw.Code, http.StatusNotFound) 67 } 68 } 69 70 func TestHandler_jsonpSend(t *testing.T) { 71 h := newTestHandler() 72 sess := newSession("session", time.Second, time.Second) 73 h.sessions["session"] = sess 74 75 rw := httptest.NewRecorder() 76 req, _ := http.NewRequest("POST", "/server/session/jsonp_send", strings.NewReader("[\"message\"]")) 77 var done = make(chan struct{}) 78 go func() { 79 h.jsonpSend(rw, req) 80 close(done) 81 }() 82 msg, _ := sess.Recv() 83 if msg != "message" { 84 t.Errorf("Incorrect message in the channel, should be '%s', was '%s'", "some message", msg) 85 } 86 <-done 87 if rw.Code != http.StatusOK { 88 t.Errorf("Wrong response status received %d, should be %d", rw.Code, http.StatusOK) 89 } 90 if rw.Header().Get("content-type") != "text/plain; charset=UTF-8" { 91 t.Errorf("Wrong content type received '%s'", rw.Header().Get("content-type")) 92 } 93 if rw.Body.String() != "ok" { 94 t.Errorf("Unexpected body, got '%s', expected 'ok'", rw.Body) 95 } 96 }