@@ -16,9 +16,10 @@ var httpclient = &http.Client{
1616 Timeout : time .Second * 15 ,
1717}
1818
19- func TestHandshake (t * testing.T ) {
19+ func TestConnection (t * testing.T ) {
2020 t .Parallel ()
2121
22+ obj := make (chan interface {})
2223 s := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
2324 c , err := websocket .Accept (w , r ,
2425 websocket .AcceptSubprotocols ("myproto" ),
@@ -27,19 +28,34 @@ func TestHandshake(t *testing.T) {
2728 t .Errorf ("failed to accept connection: %v" , err )
2829 return
2930 }
30- _ = c
31+ defer c .Close (websocket .StatusInternalError , "" )
32+
33+ ctx , cancel := context .WithTimeout (context .Background (), time .Second * 5 )
34+ defer cancel ()
35+
36+ var v interface {}
37+ err = websocket .ReadJSON (ctx , c , & v )
38+ if err != nil {
39+ t .Error (err )
40+ return
41+ }
42+
43+ t .Log ("success" , v )
44+ obj <- v
45+
46+ c .Close (websocket .StatusNormalClosure , "" )
3147 }))
3248 defer s .Close ()
3349
34- ctx , cancel := context .WithTimeout (context .Background (), time .Second * 30 )
50+ ctx , cancel := context .WithTimeout (context .Background (), time .Second * 5 )
3551 defer cancel ()
3652 c , resp , err := websocket .Dial (ctx , s .URL ,
3753 websocket .DialSubprotocols ("myproto" ),
3854 )
3955 if err != nil {
4056 t .Fatalf ("failed to do handshake request: %v" , err )
4157 }
42- _ = c
58+ defer c . Close ( websocket . StatusInternalError , "" )
4359
4460 checkHeader := func (h , exp string ) {
4561 t .Helper ()
@@ -53,4 +69,21 @@ func TestHandshake(t *testing.T) {
5369 checkHeader ("Upgrade" , "websocket" )
5470 checkHeader ("Sec-WebSocket-Accept" , "ICX+Yqv66kxgM0FcWaLWlFLwTAI=" )
5571 checkHeader ("Sec-WebSocket-Protocol" , "myproto" )
72+
73+ v := map [string ]interface {}{
74+ "anmol" : "wowow" ,
75+ }
76+ err = websocket .WriteJSON (ctx , c , v )
77+ if err != nil {
78+ t .Fatal (err )
79+ }
80+
81+ select {
82+ case v2 := <- obj :
83+ if ! cmp .Equal (v , v2 ) {
84+ t .Fatalf ("unexpected value read: %v" , cmp .Diff (v , v2 ))
85+ }
86+ case <- time .After (time .Second * 10 ):
87+ t .Fatalf ("test timed out" )
88+ }
5689}
0 commit comments