aboutsummaryrefslogtreecommitdiffstats
path: root/test/plum/client/test_legacy_client_session.rb
blob: 16111ff9fec838aff5b9154c914325e2df5c72f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
require "test_helper"

using Plum::BinaryString
class LegacyClientSessionTest < Minitest::Test
  def test_empty?
    io = StringIO.new
    session = LegacyClientSession.new(io, Client::DEFAULT_CONFIG)
    assert(session.empty?)
    res = session.request({}, "aa")
    assert(!session.empty?)
    io.string << "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
    session.succ
    assert(res.finished?)
    assert(session.empty?)
  end

  def test_close_fails_req
    session = LegacyClientSession.new(StringIO.new, Client::DEFAULT_CONFIG)
    res = session.request({})
    assert(!res.failed?)
    session.close
    assert(res.failed?)
  end

  def test_fail
    io = StringIO.new
    session = LegacyClientSession.new(io, Client::DEFAULT_CONFIG)
    res = session.request({}, "aa")
    assert_raises {
      session.succ
    }
    assert(!res.finished?)
    assert(res.failed?)
  end

  def test_request
    io = StringIO.new
    session = LegacyClientSession.new(io, Client::DEFAULT_CONFIG.merge(hostname: "aa"))
    res = session.request({ ":method" => "GET", ":path" => "/aa" }, "aa")
    assert("GET /aa HTTP/1.1\r\nhost: aa\r\n\r\naa")
    io.string << "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\naaa"
    session.succ until res.finished?
    assert(res.finished?)
    assert("aaa", res.body)
    assert({ ":status" => "200", "content-length" => "3" }, res.headers)
  end
end