Sha256: e74dc4daab12a48b6b08f43b53cf85ebd7bc4ee556c835318daf90e0a651d52e

Contents?: true

Size: 1.93 KB

Versions: 11

Compression:

Stored size: 1.93 KB

Contents

# frozen_string_literal: true

require_relative 'helper'
require 'tipi'

class String
  def http_lines
    gsub "\n", "\r\n"
  end
end

class RequestHeadersTest < MiniTest::Test
  def teardown
    @server&.interrupt if @server&.alive?
    snooze
    super
  end

  def spin_server(opts = {}, &handler)
    server_connection, client_connection = IO.server_client_mockup
    coproc = spin do
      Tipi.client_loop(server_connection, opts, &handler)
    end
    [coproc, client_connection, server_connection]
  end

  def test_request_headers
    req = nil
    @server, connection = spin_server do |r|
      req = r
      req.respond('Hello, world!')
    end

    connection << "GET /titi HTTP/1.1\r\nHost: blah.com\r\nFoo: bar\r\nhi: 1\r\nHi: 2\r\nhi: 3\r\n\r\n"

    sleep 0.01

    assert_kind_of Qeweney::Request, req
    assert_equal 'blah.com', req.headers['host']
    assert_equal 'bar', req.headers['foo']
    assert_equal ['1', '2', '3'], req.headers['hi']
    assert_equal 'GET', req.headers[':method']
    assert_equal '/titi', req.headers[':path']
  end

  def test_request_host
    req = nil
    @server, connection = spin_server do |r|
      req = r
      req.respond('Hello, world!')
    end

    connection << "GET /titi HTTP/1.1\nHost: blah.com\nFoo: bar\nhi: 1\nHi: 2\nhi: 3\n\n"
    sleep 0.01
    assert_equal 'blah.com', req.host
  end

  def test_request_connection
    req = nil
    @server, connection = spin_server do |r|
      req = r
      req.respond('Hello, world!')
    end

    connection << "GET /titi HTTP/1.1\nConnection: keep-alive\nFoo: bar\nhi: 1\nHi: 2\nhi: 3\n\n"
    sleep 0.01
    assert_equal 'keep-alive', req.connection
  end

  def test_request_upgrade_protocol
    req = nil
    @server, connection = spin_server do |r|
      req = r
      req.respond('Hello, world!')
    end

    connection << "GET /titi HTTP/1.1\nConnection: upgrade\nUpgrade: foobar\n\n"
    sleep 0.01
    assert_equal 'foobar', req.upgrade_protocol
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
tipi-0.55 test/test_request.rb
tipi-0.54 test/test_request.rb
tipi-0.53 test/test_request.rb
tipi-0.52 test/test_request.rb
tipi-0.51 test/test_request.rb
tipi-0.50 test/test_request.rb
tipi-0.49 test/test_request.rb
tipi-0.47 test/test_request.rb
tipi-0.46 test/test_request.rb
tipi-0.45 test/test_request.rb
tipi-0.43 test/test_request.rb