Sha256: 5e098cfceecb36fe1ffcb1bc06db3c8b1cd39810739880759b902349f262c07f

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

require 'rubygems'
require 'spec'
require 'pp'
require 'em-http'

require 'lib/em-websocket'

class FakeWebSocketClient < EM::Connection
  attr_writer :onopen, :onclose, :onmessage
  attr_reader :handshake_response, :packets

  def initialize
    @state = :new
    @packets = []
  end

  def receive_data(data)
    # puts "RECEIVE DATA #{data}"
    if @state == :new
      @handshake_response = data
      @onopen.call if @onopen
      @state = :open
    else
      @onmessage.call if @onmessage
      @packets << data
    end
  end

  def send(data)
    send_data("\x00#{data}\xff")
  end

  def unbind
    @onclose.call if @onclose
  end
end

def failed
  EventMachine.stop
  fail
end

def format_request(r)
  data = "#{r[:method]} #{r[:path]} HTTP/1.1\r\n"
  header_lines = r[:headers].map { |k,v| "#{k}: #{v}" }
  data << [header_lines, '', r[:body]].join("\r\n")
  data
end

def format_response(r)
  data = "HTTP/1.1 101 WebSocket Protocol Handshake\r\n"
  header_lines = r[:headers].map { |k,v| "#{k}: #{v}" }
  data << [header_lines, '', r[:body]].join("\r\n")
  data
end

def handler(request, secure = false)
  EM::WebSocket::HandlerFactory.build(format_request(request), secure)
end

def send_handshake(response)
  simple_matcher do |given|
    given.handshake.lines.sort == format_response(response).lines.sort
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
em-websocket-0.1.4 spec/helper.rb
em-websocket-0.1.3 spec/helper.rb
em-websocket-0.1.2 spec/helper.rb
em-websocket-0.1.1 spec/helper.rb