spec/integration/draft13_spec.rb in em-websocket-0.3.5 vs spec/integration/draft13_spec.rb in em-websocket-0.3.6

- old
+ new

@@ -45,21 +45,50 @@ end end it "should send back the correct handshake response" do em { - EM.add_timer(0.1) do - EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 12345) { } - - # Create a fake client which sends draft 07 handshake - connection = EM.connect('0.0.0.0', 12345, Draft07FakeWebSocketClient) - connection.send_data(format_request(@request)) - - connection.onopen { - connection.handshake_response.lines.sort. - should == format_response(@response).lines.sort + EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 12345) { } + + # Create a fake client which sends draft 13 handshake + connection = EM.connect('0.0.0.0', 12345, Draft07FakeWebSocketClient) + connection.send_data(format_request(@request)) + + connection.onopen { + connection.handshake_response.lines.sort. + should == format_response(@response).lines.sort + done + } + } + end + + # TODO: This test would be much nicer with a real websocket client... + it "should support sending pings and binding to onpong" do + em { + EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 12345) { |ws| + ws.onopen { + ws.should be_pingable + EM.next_tick { + ws.ping('hello').should == true + } + + } + ws.onpong { |data| + data.should == 'hello' done } - end + } + + # Create a fake client which sends draft 13 handshake + connection = EM.connect('0.0.0.0', 12345, Draft07FakeWebSocketClient) + connection.send_data(format_request(@request)) + + # Confusing, fake onmessage means any data after the handshake + connection.onmessage { |data| + # This is what a ping looks like + data.should == "\x89\x05hello" + # This is what a pong looks like + connection.send_data("\x8a\x05hello") + } } end end