about summary refs log tree commit homepage
path: root/test/test_ssl.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_ssl.rb')
-rw-r--r--test/test_ssl.rb25
1 files changed, 24 insertions, 1 deletions
diff --git a/test/test_ssl.rb b/test/test_ssl.rb
index a8e3bea..172d8e4 100644
--- a/test/test_ssl.rb
+++ b/test/test_ssl.rb
@@ -64,9 +64,22 @@ AQjjxMXhwULlmuR/K+WwlaZPiLIBYalLAZQ7ZbOPeVkJ8ePao0eLAgEC
   def test_ssl_basic
     err, cfg, host, port = @err, Yahns::Config.new, @srv.addr[3], @srv.addr[1]
     ctx = srv_ctx
+    raw = File.read(__FILE__)
     pid = mkserver(cfg) do
       cfg.instance_eval do
-        ru = lambda { |_| [ 200, {'Content-Length'=>'2'}, ['HI'] ] }
+        ru = lambda do |env|
+          case env['PATH_INFO']
+          when '/static'
+            f = File.open(__FILE__)
+            [ 200, {
+                'Content-Length' => f.size.to_s,
+                'Content-Type'=>'text/plain',
+              },
+              f ]
+          else
+            [ 200, {'Content-Length'=>'2'}, ['HI'] ]
+          end
+        end
         app(:rack, ru) { listen "#{host}:#{port}", ssl_ctx: ctx }
         logger(Logger.new(err.path))
       end
@@ -81,6 +94,16 @@ AQjjxMXhwULlmuR/K+WwlaZPiLIBYalLAZQ7ZbOPeVkJ8ePao0eLAgEC
     assert_equal "HI", body
     assert_match %r{\AHTTP/1\.\d 200 OK\r\n}, head
 
+    # read static file
+    client.write("GET /static HTTP/1.1\r\nHost: example.com\r\n\r\n")
+    buf.clear
+    Timeout.timeout(60) do
+      buf << client.readpartial(8192) until buf.include?(raw)
+    end
+    head, body = buf.split("\r\n\r\n", 2)
+    assert_match %r{\AHTTP/1\.\d 200 OK\r\n}, head
+    assert_equal raw, body
+
     client.write("GET / HTTP/1.0\r\n\r\n")
     head, body = client.read.split("\r\n\r\n", 2)
     assert_equal "HI", body