diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-11-09 22:38:26 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-11-09 22:38:26 +0900 |
commit | 223addb898938dec5cd5196f7ad9f0b3aca17a99 (patch) | |
tree | 3bbdef6be91abf3d35afe34305886508b94c8034 | |
parent | e44ecc10fe65ae0a3b5887e1bfcbf16a9acc152f (diff) | |
download | plum-223addb898938dec5cd5196f7ad9f0b3aca17a99.tar.gz |
tests: add test cases for Client
-rw-r--r-- | lib/plum/client.rb | 6 | ||||
-rw-r--r-- | test/plum/client/test_client.rb | 18 | ||||
-rw-r--r-- | test/utils/string_socket.rb | 9 |
3 files changed, 27 insertions, 6 deletions
diff --git a/lib/plum/client.rb b/lib/plum/client.rb index b78e25c..c2a1b83 100644 --- a/lib/plum/client.rb +++ b/lib/plum/client.rb @@ -2,17 +2,17 @@ module Plum class Client DEFAULT_CONFIG = { + http2: true, scheme: "https", + hostname: nil, verify_mode: OpenSSL::SSL::VERIFY_PEER, ssl_context: nil, - hostname: nil, http2_settings: {}, user_agent: "plum/#{Plum::VERSION}", - http2: true, }.freeze attr_reader :host, :port, :config - attr_reader :socket + attr_reader :socket, :session # Creates a new HTTP client and starts communication. # A shorthand for `Plum::Client.new(args).start(&block)` diff --git a/test/plum/client/test_client.rb b/test/plum/client/test_client.rb index 6d6586a..214e30f 100644 --- a/test/plum/client/test_client.rb +++ b/test/plum/client/test_client.rb @@ -80,6 +80,24 @@ class ClientTest < Minitest::Test server_thread.join if server_thread end + def test_session_socket_http2_https + sock = StringSocket.new + client = Client.start(sock, nil, http2: true, scheme: "https") + assert(client.session.class == ClientSession) + end + + def test_session_socket_http2_http + sock = StringSocket.new("HTTP/1.1 100\r\n\r\n") + client = Client.start(sock, nil, http2: true, scheme: "http") + assert(client.session.class == UpgradeClientSession) + end + + def test_session_socket_http1 + sock = StringSocket.new + client = Client.start(sock, nil, http2: false) + assert(client.session.class == LegacyClientSession) + end + private def start_tls_server(&block) ctx = OpenSSL::SSL::SSLContext.new diff --git a/test/utils/string_socket.rb b/test/utils/string_socket.rb index fb59172..0cffa64 100644 --- a/test/utils/string_socket.rb +++ b/test/utils/string_socket.rb @@ -1,12 +1,15 @@ -class StringSocket +class StringSocket < IO + # remove all methods + (IO.instance_methods - Object.instance_methods).each { |symbol| undef_method symbol } + extend Forwardable def_delegators :@rio, :readpartial def_delegators :@wio, :<<, :write attr_reader :rio, :wio - def initialize(str) - @rio = StringIO.new(str) + def initialize(str = nil) + @rio = StringIO.new(str.to_s) @wio = StringIO.new end end |