08-27-周三_17-09-29
This commit is contained in:
72
node_modules/faye-websocket/spec/faye/websocket/draft75parser_spec.js
generated
vendored
Normal file
72
node_modules/faye-websocket/spec/faye/websocket/draft75parser_spec.js
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
var Draft75Parser = require('../../../lib/faye/websocket/draft75_parser')
|
||||
|
||||
JS.ENV.Draft75ParserSpec = JS.Test.describe("Draft75Parser", function() { with(this) {
|
||||
before(function() { with(this) {
|
||||
this.webSocket = {dispatchEvent: function() {}}
|
||||
this.parser = new Draft75Parser(webSocket)
|
||||
}})
|
||||
|
||||
describe("parse", function() { with(this) {
|
||||
sharedBehavior("draft-75 parser", function() { with(this) {
|
||||
it("parses text frames", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Hello")
|
||||
parser.parse([0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff])
|
||||
}})
|
||||
|
||||
it("parses multiple frames from the same packet", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Hello").exactly(2)
|
||||
parser.parse([0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff, 0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff])
|
||||
}})
|
||||
|
||||
it("parses text frames beginning 0x00-0x7F", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Hello")
|
||||
parser.parse([0x66, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff])
|
||||
}})
|
||||
|
||||
it("ignores frames with a length header", function() { with(this) {
|
||||
expect(webSocket, "receive").exactly(0)
|
||||
parser.parse([0x80, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f])
|
||||
}})
|
||||
|
||||
it("parses text following an ignored block", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Hello")
|
||||
parser.parse([0x80, 0x02, 0x48, 0x65, 0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff])
|
||||
}})
|
||||
|
||||
it("parses multibyte text frames", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Apple = ")
|
||||
parser.parse([0x00, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0xef, 0xa3, 0xbf, 0xff])
|
||||
}})
|
||||
|
||||
it("parses frames received in several packets", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Apple = ")
|
||||
parser.parse([0x00, 0x41, 0x70, 0x70, 0x6c, 0x65])
|
||||
parser.parse([0x20, 0x3d, 0x20, 0xef, 0xa3, 0xbf, 0xff])
|
||||
}})
|
||||
|
||||
it("parses fragmented frames", function() { with(this) {
|
||||
expect(webSocket, "receive").given("Hello")
|
||||
parser.parse([0x00, 0x48, 0x65, 0x6c])
|
||||
parser.parse([0x6c, 0x6f, 0xff])
|
||||
}})
|
||||
}})
|
||||
|
||||
behavesLike("draft-75 parser")
|
||||
|
||||
it("does not close the socket if a 76 close frame is received", function() { with(this) {
|
||||
expect(webSocket, "close").exactly(0)
|
||||
expect(webSocket, "receive").given("")
|
||||
parser.parse([0xFF, 0x00])
|
||||
}})
|
||||
}})
|
||||
|
||||
describe("frame", function() { with(this) {
|
||||
it("returns the given string formatted as a WebSocket frame", function() { with(this) {
|
||||
assertBufferEqual( [0x00, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xff], parser.frame("Hello") )
|
||||
}})
|
||||
|
||||
it("encodes multibyte characters correctly", function() { with(this) {
|
||||
assertBufferEqual( [0x00, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0xef, 0xa3, 0xbf, 0xff], parser.frame("Apple = ") )
|
||||
}})
|
||||
}})
|
||||
}})
|
Reference in New Issue
Block a user