08-27-周三_17-09-29
This commit is contained in:
175
node_modules/faye-websocket/spec/faye/websocket/client_spec.js
generated
vendored
Normal file
175
node_modules/faye-websocket/spec/faye/websocket/client_spec.js
generated
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
var Client = require('../../../lib/faye/websocket/client')
|
||||
|
||||
JS.ENV.WebSocketSteps = JS.Test.asyncSteps({
|
||||
server: function(port, secure, callback) {
|
||||
this._adapter = new EchoServer()
|
||||
this._adapter.listen(port, secure)
|
||||
this._port = port
|
||||
setTimeout(callback, 100)
|
||||
},
|
||||
|
||||
stop: function(callback) {
|
||||
this._adapter.stop()
|
||||
setTimeout(callback, 100)
|
||||
},
|
||||
|
||||
open_socket: function(url, protocols, callback) {
|
||||
var done = false,
|
||||
self = this,
|
||||
|
||||
resume = function(open) {
|
||||
if (done) return
|
||||
done = true
|
||||
self._open = open
|
||||
callback()
|
||||
}
|
||||
|
||||
this._ws = new Client(url, protocols, {verify: false})
|
||||
|
||||
this._ws.onopen = function() { resume(true) }
|
||||
this._ws.onclose = function() { resume(false) }
|
||||
},
|
||||
|
||||
close_socket: function(callback) {
|
||||
var self = this
|
||||
this._ws.onclose = function() {
|
||||
self._open = false
|
||||
callback()
|
||||
}
|
||||
this._ws.close()
|
||||
},
|
||||
|
||||
check_open: function(callback) {
|
||||
this.assert( this._open )
|
||||
callback()
|
||||
},
|
||||
|
||||
check_closed: function(callback) {
|
||||
this.assert( !this._open )
|
||||
callback()
|
||||
},
|
||||
|
||||
check_protocol: function(protocol, callback) {
|
||||
this.assertEqual( protocol, this._ws.protocol )
|
||||
callback()
|
||||
},
|
||||
|
||||
listen_for_message: function(callback) {
|
||||
var self = this
|
||||
this._ws.addEventListener('message', function(message) { self._message = message.data })
|
||||
callback()
|
||||
},
|
||||
|
||||
send_message: function(message, callback) {
|
||||
this._ws.send(message)
|
||||
setTimeout(callback, 100)
|
||||
},
|
||||
|
||||
check_response: function(message, callback) {
|
||||
this.assertEqual( message, this._message )
|
||||
callback()
|
||||
},
|
||||
|
||||
check_no_response: function(callback) {
|
||||
this.assert( !this._message )
|
||||
callback()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
JS.ENV.ClientSpec = JS.Test.describe("Client", function() { with(this) {
|
||||
include(WebSocketSteps)
|
||||
|
||||
before(function() {
|
||||
this.protocols = ["foo", "echo"]
|
||||
this.plain_text_url = "ws://localhost:8000/bayeux"
|
||||
this.secure_url = "wss://localhost:8000/bayeux"
|
||||
})
|
||||
|
||||
sharedBehavior("socket client", function() { with(this) {
|
||||
it("can open a connection", function() { with(this) {
|
||||
open_socket(socket_url, protocols)
|
||||
check_open()
|
||||
check_protocol("echo")
|
||||
}})
|
||||
|
||||
it("cannot open a connection with unacceptable protocols", function() { with(this) {
|
||||
open_socket(socket_url, ["foo"])
|
||||
check_closed()
|
||||
}})
|
||||
|
||||
it("can close the connection", function() { with(this) {
|
||||
open_socket(socket_url, protocols)
|
||||
close_socket()
|
||||
check_closed()
|
||||
}})
|
||||
|
||||
describe("in the OPEN state", function() { with(this) {
|
||||
before(function() { with(this) {
|
||||
open_socket(socket_url, protocols)
|
||||
}})
|
||||
|
||||
it("can send and receive messages", function() { with(this) {
|
||||
listen_for_message()
|
||||
send_message("I expect this to be echoed")
|
||||
check_response("I expect this to be echoed")
|
||||
}})
|
||||
|
||||
it("sends numbers as strings", function() { with(this) {
|
||||
listen_for_message()
|
||||
send_message(13)
|
||||
check_response("13")
|
||||
}})
|
||||
|
||||
it("sends booleans as strings", function() { with(this) {
|
||||
listen_for_message()
|
||||
send_message(false)
|
||||
check_response("false")
|
||||
}})
|
||||
|
||||
it("sends arrays as strings", function() { with(this) {
|
||||
listen_for_message()
|
||||
send_message([13,14,15])
|
||||
check_response("13,14,15")
|
||||
}})
|
||||
}})
|
||||
|
||||
describe("in the CLOSED state", function() { with(this) {
|
||||
before(function() { with(this) {
|
||||
open_socket(socket_url, protocols)
|
||||
close_socket()
|
||||
}})
|
||||
|
||||
it("cannot send and receive messages", function() { with(this) {
|
||||
listen_for_message()
|
||||
send_message("I expect this to be echoed")
|
||||
check_no_response()
|
||||
}})
|
||||
}})
|
||||
}})
|
||||
|
||||
describe("with a plain-text server", function() { with(this) {
|
||||
before(function() {
|
||||
this.socket_url = this.plain_text_url
|
||||
this.blocked_url = this.secure_url
|
||||
})
|
||||
|
||||
before(function() { this.server(8000, false) })
|
||||
after (function() { this.stop() })
|
||||
|
||||
behavesLike("socket client")
|
||||
}})
|
||||
|
||||
describe("with a secure server", function() { with(this) {
|
||||
before(function() {
|
||||
this.socket_url = this.secure_url
|
||||
this.blocked_url = this.plain_text_url
|
||||
})
|
||||
|
||||
before(function() { this.server(8000, true) })
|
||||
after (function() { this.stop() })
|
||||
|
||||
behavesLike("socket client")
|
||||
}})
|
||||
}})
|
||||
|
Reference in New Issue
Block a user