@@ -2,11 +2,10 @@ package carrier
22
33import (
44 "context"
5- "crypto/rand"
65 "crypto/tls"
76 "crypto/x509"
87 "fmt"
9- "math/big "
8+ "math/rand "
109 "testing"
1110 "time"
1211
@@ -24,19 +23,28 @@ import (
2423func websocketClientTLSConfig (t * testing.T ) * tls.Config {
2524 certPool := x509 .NewCertPool ()
2625 helloCert , err := tlsconfig .GetHelloCertificateX509 ()
27- require .NoError (t , err )
26+ assert .NoError (t , err )
2827 certPool .AddCert (helloCert )
2928 assert .NotNil (t , certPool )
3029 return & tls.Config {RootCAs : certPool }
3130}
3231
32+ func TestWebsocketHeaders (t * testing.T ) {
33+ req := testRequest (t , "http://example.com" , nil )
34+ wsHeaders := websocketHeaders (req )
35+ for _ , header := range stripWebsocketHeaders {
36+ assert .Empty (t , wsHeaders [header ])
37+ }
38+ assert .Equal (t , "curl/7.59.0" , wsHeaders .Get ("User-Agent" ))
39+ }
40+
3341func TestServe (t * testing.T ) {
3442 log := zerolog .Nop ()
3543 shutdownC := make (chan struct {})
3644 errC := make (chan error )
3745 listener , err := hello .CreateTLSListener ("localhost:1111" )
38- require .NoError (t , err )
39- defer func () { _ = listener .Close () } ()
46+ assert .NoError (t , err )
47+ defer listener .Close ()
4048
4149 go func () {
4250 errC <- hello .StartHelloWorldServer (& log , listener , shutdownC )
@@ -48,25 +56,19 @@ func TestServe(t *testing.T) {
4856 assert .NotNil (t , tlsConfig )
4957 d := gws.Dialer {TLSClientConfig : tlsConfig }
5058 conn , resp , err := clientConnect (req , & d )
51- require .NoError (t , err )
52- defer func () { _ = resp .Body .Close () }()
59+ assert .NoError (t , err )
5360 assert .Equal (t , "websocket" , resp .Header .Get ("Upgrade" ))
5461
55- for range 1000 {
56- messageSize , err := rand .Int (rand .Reader , big .NewInt (2048 ))
57- require .NoError (t , err )
58- clientMessage := make ([]byte , messageSize .Int64 ()+ 1 )
59- for i := range clientMessage {
60- n , err := rand .Int (rand .Reader , big .NewInt (256 ))
61- n8 := uint8 (n .Uint64 ()) //nolint:gosec // test-only
62- require .NoError (t , err )
63- clientMessage [i ] = n8
64- }
62+ for i := 0 ; i < 1000 ; i ++ {
63+ messageSize := rand .Int ()% 2048 + 1
64+ clientMessage := make ([]byte , messageSize )
65+ // rand.Read always returns len(clientMessage) and a nil error
66+ rand .Read (clientMessage )
6567 err = conn .WriteMessage (websocket .BinaryFrame , clientMessage )
66- require .NoError (t , err )
68+ assert .NoError (t , err )
6769
6870 messageType , message , err := conn .ReadMessage ()
69- require .NoError (t , err )
71+ assert .NoError (t , err )
7072 assert .Equal (t , websocket .BinaryFrame , messageType )
7173 assert .Equal (t , clientMessage , message )
7274 }
@@ -95,30 +97,27 @@ func TestWebsocketWrapper(t *testing.T) {
9597 req := testRequest (t , testAddr , nil )
9698 conn , resp , err := clientConnect (req , & d )
9799 require .NoError (t , err )
98- defer func () { _ = resp .Body .Close () }()
99100 assert .Equal (t , "websocket" , resp .Header .Get ("Upgrade" ))
100101
101102 // Websocket now connected to test server so lets check our wrapper
102103 wrapper := cfwebsocket.GorillaConn {Conn : conn }
103104 buf := make ([]byte , 100 )
104- _ , err = wrapper .Write ([]byte ("abc" ))
105- require .NoError (t , err )
105+ wrapper .Write ([]byte ("abc" ))
106106 n , err := wrapper .Read (buf )
107107 require .NoError (t , err )
108- require .Equal (t , 3 , n )
108+ require .Equal (t , n , 3 )
109109 require .Equal (t , "abc" , string (buf [:n ]))
110110
111111 // Test partial read, read 1 of 3 bytes in one read and the other 2 in another read
112- _ , err = wrapper .Write ([]byte ("abc" ))
113- require .NoError (t , err )
112+ wrapper .Write ([]byte ("abc" ))
114113 buf = buf [:1 ]
115114 n , err = wrapper .Read (buf )
116115 require .NoError (t , err )
117- require .Equal (t , 1 , n )
116+ require .Equal (t , n , 1 )
118117 require .Equal (t , "a" , string (buf [:n ]))
119118 buf = buf [:cap (buf )]
120119 n , err = wrapper .Read (buf )
121120 require .NoError (t , err )
122- require .Equal (t , 2 , n )
121+ require .Equal (t , n , 2 )
123122 require .Equal (t , "bc" , string (buf [:n ]))
124123}
0 commit comments