about summary refs log tree commit homepage
path: root/test
diff options
context:
space:
mode:
authorIan Ownbey <imownbey@ian-ownbeys-macbook.local>2008-12-01 00:50:24 -0500
committerIan Ownbey <imownbey@ian-ownbeys-macbook.local>2008-12-01 00:50:31 -0500
commitc178815ef6496d3d2dfe83b77a0332138a4ae1ee (patch)
tree391832539fb4299fff99faf4114b66a1f0b72938 /test
parentb1dd32f73eb72d861810bd96305b85d082606c5b (diff)
downloadunicorn-c178815ef6496d3d2dfe83b77a0332138a4ae1ee.tar.gz
Diffstat (limited to 'test')
-rw-r--r--test/unit/test_handlers.rb136
-rw-r--r--test/unit/test_redirect_handler.rb45
-rw-r--r--test/unit/test_response.rb74
3 files changed, 4 insertions, 251 deletions
diff --git a/test/unit/test_handlers.rb b/test/unit/test_handlers.rb
deleted file mode 100644
index 66bf010..0000000
--- a/test/unit/test_handlers.rb
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright (c) 2005 Zed A. Shaw
-# You can redistribute it and/or modify it under the same terms as Ruby.
-#
-# Additional work donated by contributors.  See http://mongrel.rubyforge.org/attributions.html
-# for more information.
-
-require 'test/test_helper'
-
-class SimpleHandler < Mongrel::HttpHandler
-  def process(request, response)
-    response.start do |head,out|
-      head["Content-Type"] = "text/html"
-      results = "<html><body>Your request:<br /><pre>#{request.params.to_yaml}</pre><a href=\"/files\">View the files.</a></body></html>"
-      out << results
-    end
-  end
-end
-
-class DumbHandler < Mongrel::HttpHandler
-  def process(request, response)
-    response.start do |head,out|
-      head["Content-Type"] = "text/html"
-      out.write("test")
-    end
-  end
-end
-
-def check_status(results, expecting)
-  results.each do |res|
-    assert(res.kind_of?(expecting), "Didn't get #{expecting}, got: #{res.class}")
-  end
-end
-
-class HandlersTest < Test::Unit::TestCase
-
-  def setup
-    @port = process_based_port
-    stats = Mongrel::StatisticsFilter.new(:sample_rate => 1)
-
-    @config = Mongrel::Configurator.new :host => '127.0.0.1' do
-      listener :port => process_based_port do
-        uri "/", :handler => SimpleHandler.new
-        uri "/", :handler => stats
-        uri "/404", :handler => Mongrel::Error404Handler.new("Not found")
-        uri "/dumb", :handler => Mongrel::DeflateFilter.new
-        uri "/dumb", :handler => DumbHandler.new, :in_front => true
-        uri "/files", :handler => Mongrel::DirHandler.new("doc")
-        uri "/files_nodir", :handler => Mongrel::DirHandler.new("doc", listing_allowed=false, index_html="none")
-        uri "/status", :handler => Mongrel::StatusHandler.new(:stats_filter => stats)
-        uri "/relative", :handler => Mongrel::DirHandler.new(nil, listing_allowed=false, index_html="none")
-      end
-    end
-    
-    unless windows?
-      File.open('/tmp/testfile', 'w') do
-        # Do nothing
-      end
-    end
-    
-    @config.run
-  end
-
-  def teardown
-    @config.stop(false, true)
-    File.delete '/tmp/testfile' unless windows?
-  end
-  
-  def test_registration_exception_is_not_lost
-    assert_raises(Mongrel::URIClassifier::RegistrationError) do      
-      @config = Mongrel::Configurator.new do
-        listener do
-          uri "bogus", :handler => SimpleHandler.new
-        end
-      end
-    end
-  end
-
-  def test_more_web_server
-    res = hit([ "http://localhost:#{@port}/test",
-          "http://localhost:#{@port}/dumb",
-          "http://localhost:#{@port}/404",
-          "http://localhost:#{@port}/files/rdoc/index.html",
-          "http://localhost:#{@port}/files/rdoc/nothere.html",
-          "http://localhost:#{@port}/files/rdoc/",
-          "http://localhost:#{@port}/files_nodir/rdoc/",
-          "http://localhost:#{@port}/status",
-    ])
-    check_status res, String
-  end
-  
-  def test_nil_dirhandler
-    return if windows?
-    # Camping uses this internally
-    handler = Mongrel::DirHandler.new(nil, false)  
-    assert handler.can_serve("/tmp/testfile")
-    # Not a bug! A nil @file parameter is the only circumstance under which
-    # we are allowed to serve any existing file
-    assert handler.can_serve("../../../../../../../../../../tmp/testfile")
-  end
-  
-  def test_non_nil_dirhandler_is_not_vulnerable_to_path_traversal
-    # The famous security bug of Mongrel 1.1.2
-    handler = Mongrel::DirHandler.new("/doc", false)
-    assert_nil handler.can_serve("/tmp/testfile")
-    assert_nil handler.can_serve("../../../../../../../../../../tmp/testfile")
-  end
-
-  def test_deflate
-    Net::HTTP.start("localhost", @port) do |h|
-      # Test that no accept-encoding returns a non-deflated response
-      req = h.get("/dumb")
-      assert(
-        !req['Content-Encoding'] ||
-        !req['Content-Encoding'].include?('deflate'))
-      assert_equal "test", req.body
-
-      req = h.get("/dumb", {"Accept-Encoding" => "deflate"})
-      # -MAX_WBITS stops zlib from looking for a zlib header
-      inflater = Zlib::Inflate.new(-Zlib::MAX_WBITS)
-      assert req['Content-Encoding'].include?('deflate')
-      assert_equal "test", inflater.inflate(req.body)
-    end
-  end
-
-  # TODO: find out why this fails on win32 but nowhere else
-  #def test_posting_fails_dirhandler
-  #  req = Net::HTTP::Post.new("http://localhost:#{@port}/files/rdoc/")
-  #  req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
-  #  res = hit [["http://localhost:#{@port}/files/rdoc/",req]]
-  #  check_status res, Net::HTTPNotFound
-  #end
-
-  def test_unregister
-    @config.listeners["127.0.0.1:#{@port}"].unregister("/")
-  end
-end
diff --git a/test/unit/test_redirect_handler.rb b/test/unit/test_redirect_handler.rb
deleted file mode 100644
index e990427..0000000
--- a/test/unit/test_redirect_handler.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (c) 2005 Zed A. Shaw
-# You can redistribute it and/or modify it under the same terms as Ruby.
-#
-# Additional work donated by contributors.  See http://mongrel.rubyforge.org/attributions.html
-# for more information.
-
-require 'test/test_helper'
-
-class RedirectHandlerTest < Test::Unit::TestCase
-
-  def setup
-    @port = process_based_port
-    redirect_test_io do
-      @server = Mongrel::HttpServer.new('127.0.0.1', @port)
-    end
-    @server.run
-    @client = Net::HTTP.new('127.0.0.1', @port)
-  end
-
-  def teardown
-    @server.stop(true)
-  end
-
-  def test_simple_redirect
-    tester = Mongrel::RedirectHandler.new('/yo')
-    @server.register("/test", tester)
-
-    sleep(1)
-    res = @client.request_get('/test')
-    assert res != nil, "Didn't get a response"
-    assert_equal ['/yo'], res.get_fields('Location')
-  end
-
-  def test_rewrite
-    tester = Mongrel::RedirectHandler.new(/(\w+)/, '+\1+')
-    @server.register("/test", tester)
-
-    sleep(1)
-    res = @client.request_get('/test/something')
-    assert_equal ['/+test+/+something+'], res.get_fields('Location')
-  end
-
-end
-
-
diff --git a/test/unit/test_response.rb b/test/unit/test_response.rb
index b49c9df..769b0d6 100644
--- a/test/unit/test_response.rb
+++ b/test/unit/test_response.rb
@@ -12,11 +12,7 @@ class ResponseTest < Test::Unit::TestCase
   
   def test_response_headers
     out = StringIO.new
-    resp = HttpResponse.new(out)
-    resp.status = 200
-    resp.header["Accept"] = "text/plain"
-    resp.header["X-Whatever"] = "stuff"
-    resp.body.write("test")
+    resp = HttpResponse.new(out,[200, {"X-Whatever" => "stuff"}, ["cool"]])
     resp.finished
 
     assert out.length > 0, "output didn't have data"
@@ -24,56 +20,7 @@ class ResponseTest < Test::Unit::TestCase
 
   def test_response_200
     io = StringIO.new
-    resp = HttpResponse.new(io)
-    resp.start do |head,out|
-      head["Accept"] = "text/plain"
-      out.write("tested")
-      out.write("hello!")
-    end
-
-    resp.finished
-    assert io.length > 0, "output didn't have data"
-  end
-
-  def test_response_duplicate_header_squash
-    io = StringIO.new
-    resp = HttpResponse.new(io)
-    resp.start do |head,out|
-      head["Content-Length"] = 30
-      head["Content-Length"] = 0
-    end
-
-    resp.finished
-
-    assert_equal io.length, 95, "too much output"
-  end
-
-
-  def test_response_some_duplicates_allowed
-    allowed_duplicates = ["Set-Cookie", "Set-Cookie2", "Warning", "WWW-Authenticate"]
-    io = StringIO.new
-    resp = HttpResponse.new(io)
-    resp.start do |head,out|
-      allowed_duplicates.each do |dup|
-        10.times do |i|
-          head[dup] = i
-        end
-      end
-    end
-
-    resp.finished
-
-    assert_equal io.length, 734, "wrong amount of output"
-  end
-
-  def test_response_404
-    io = StringIO.new
-
-    resp = HttpResponse.new(io)
-    resp.start(404) do |head,out|
-      head['Accept'] = "text/plain"
-      out.write("NOT FOUND")
-    end
+    resp = HttpResponse.new(io, [200, {}, []])
 
     resp.finished
     assert io.length > 0, "output didn't have data"
@@ -101,24 +48,11 @@ class ResponseTest < Test::Unit::TestCase
     assert io.read[-contents.length..-1] == contents, "output doesn't end with file payload"
   end
 
-  def test_response_with_custom_reason
-    reason = "You made a bad request"
-    io = StringIO.new
-    resp = HttpResponse.new(io)
-    resp.start(400, false, reason) { |head,out| }
-    resp.finished
-
-    io.rewind
-    assert_match(/.* #{reason}$/, io.readline.chomp, "wrong custom reason phrase")
-  end
-
   def test_response_with_default_reason
     code = 400
     io = StringIO.new
-    resp = HttpResponse.new(io)
-    resp.start(code) { |head,out| }
-    resp.finished
-
+    resp = HttpResponse.new(io, [code, {}, []])
+    resp.start
     io.rewind
     assert_match(/.* #{HTTP_STATUS_CODES[code]}$/, io.readline.chomp, "wrong default reason phrase")
   end