(t *testing.T)
| 174 | } |
| 175 | |
| 176 | func 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 | |
| 228 | func TestWSDataBeforeCloseFrame(t *testing.T) { |
| 229 | mr := &fakeReader{ch: make(chan []byte, 1)} |
nothing calls this directly
no test coverage detected