summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-11-09 22:38:26 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-11-09 22:38:26 +0900
commit223addb898938dec5cd5196f7ad9f0b3aca17a99 (patch)
tree3bbdef6be91abf3d35afe34305886508b94c8034
parente44ecc10fe65ae0a3b5887e1bfcbf16a9acc152f (diff)
downloadplum-223addb898938dec5cd5196f7ad9f0b3aca17a99.tar.gz
tests: add test cases for Client
-rw-r--r--lib/plum/client.rb6
-rw-r--r--test/plum/client/test_client.rb18
-rw-r--r--test/utils/string_socket.rb9
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