MCPcopy
hub / github.com/nats-io/nats.go / TestWSParseControlFrames

Function TestWSParseControlFrames

ws_test.go:176–226  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

174}
175
176func TestWSParseControlFrames(t *testing.T) {
177 mr := &fakeReader{ch: make(chan []byte, 1)}
178 defer mr.close()
179 r := wsNewReader(mr)
180
181 p := make([]byte, 100)
182
183 // Write a PING
184 mr.buf.Write([]byte{137, 0})
185 n, err := r.Read(p)
186 if err != nil || n != 0 {
187 t.Fatalf("Error on read: n=%v err=%v", n, err)
188 }
189
190 // Write a PONG
191 mr.buf.Write([]byte{138, 0})
192 n, err = r.Read(p)
193 if err != nil || n != 0 {
194 t.Fatalf("Error on read: n=%v err=%v", n, err)
195 }
196
197 // Write a CLOSE
198 mr.buf.Write([]byte{136, 6, 3, 232, 't', 'e', 's', 't'})
199 n, err = r.Read(p)
200 if err != io.EOF || n != 0 {
201 t.Fatalf("Error on read: n=%v err=%v", n, err)
202 }
203
204 // Write a CLOSE without payload
205 mr.buf.Write([]byte{136, 2, 3, 232})
206 n, err = r.Read(p)
207 if err != io.EOF || n != 0 {
208 t.Fatalf("Error on read: n=%v err=%v", n, err)
209 }
210
211 // Write a CLOSE with invalid status
212 mr.buf.Write([]byte{136, 1, 100})
213 n, err = r.Read(p)
214 if err != io.EOF || n != 0 {
215 t.Fatalf("Error on read: n=%v err=%v", n, err)
216 }
217
218 // Write CLOSE with valid status and payload but call with a read buffer
219 // that has capacity of 1.
220 mr.buf.Write([]byte{136, 6, 3, 232, 't', 'e', 's', 't'})
221 pl := []byte{136}
222 n, err = r.Read(pl[:])
223 if err != io.EOF || n != 0 {
224 t.Fatalf("Error on read: n=%v err=%v", n, err)
225 }
226}
227
228func TestWSDataBeforeCloseFrame(t *testing.T) {
229 mr := &fakeReader{ch: make(chan []byte, 1)}

Callers

nothing calls this directly

Calls 5

closeMethod · 0.95
wsNewReaderFunction · 0.85
FatalfMethod · 0.80
WriteMethod · 0.45
ReadMethod · 0.45

Tested by

no test coverage detected