diff options
author | evanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9> | 2008-05-24 23:06:53 +0000 |
---|---|---|
committer | evanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9> | 2008-05-24 23:06:53 +0000 |
commit | 45ff7b22b67123dd8345f3c50151e89cc91ce2b7 (patch) | |
tree | e85c8aa353e3e9f05e90ee8bf76a6593520e1b01 /test/unit/test_configurator.rb | |
parent | f69f3602b11dc839bb09f8c783b5ec27c54694fd (diff) | |
parent | fa3f48f65222eb5591ef3dd9c05b6c958d564fa4 (diff) | |
download | unicorn-45ff7b22b67123dd8345f3c50151e89cc91ce2b7.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@1020 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'test/unit/test_configurator.rb')
-rw-r--r-- | test/unit/test_configurator.rb | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/test/unit/test_configurator.rb b/test/unit/test_configurator.rb new file mode 100644 index 0000000..dc9713a --- /dev/null +++ b/test/unit/test_configurator.rb @@ -0,0 +1,88 @@ +# 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' + +$test_plugin_fired = 0 + +class TestPlugin < GemPlugin::Plugin "/handlers" + include Mongrel::HttpHandlerPlugin + + def process(request, response) + $test_plugin_fired += 1 + end +end + + +class Sentinel < GemPlugin::Plugin "/handlers" + include Mongrel::HttpHandlerPlugin + + def process(request, response) + raise "This Sentinel plugin shouldn't run." + end +end + + +class ConfiguratorTest < Test::Unit::TestCase + + def test_base_handler_config + @port = process_based_port + @config = nil + + redirect_test_io do + @config = Mongrel::Configurator.new :host => "localhost" do + listener :port => process_based_port do + # 2 in front should run, but the sentinel shouldn't since dirhandler processes the request + uri "/", :handler => plugin("/handlers/testplugin") + uri "/", :handler => plugin("/handlers/testplugin") + uri "/", :handler => Mongrel::DirHandler.new(".") + uri "/", :handler => plugin("/handlers/testplugin") + + uri "/test", :handler => plugin("/handlers/testplugin") + uri "/test", :handler => plugin("/handlers/testplugin") + uri "/test", :handler => Mongrel::DirHandler.new(".") + uri "/test", :handler => plugin("/handlers/testplugin") + + debug "/" + setup_signals + + run_config(HERE + "/mongrel.conf") + load_mime_map(HERE + "/mime.yaml") + + run + end + end + end + + # pp @config.listeners.values.first.classifier.routes + + @config.listeners.each do |host,listener| + assert listener.classifier.uris.length == 3, "Wrong number of registered URIs" + assert listener.classifier.uris.include?("/"), "/ not registered" + assert listener.classifier.uris.include?("/test"), "/test not registered" + end + + res = Net::HTTP.get(URI.parse("http://localhost:#{@port}/test")) + assert res != nil, "Didn't get a response" + assert $test_plugin_fired == 3, "Test filter plugin didn't run 3 times." + + redirect_test_io do + res = Net::HTTP.get(URI.parse("http://localhost:#{@port}/")) + + assert res != nil, "Didn't get a response" + assert $test_plugin_fired == 6, "Test filter plugin didn't run 6 times." + end + + redirect_test_io do + @config.stop(false, true) + end + + assert_raise Errno::EBADF, Errno::ECONNREFUSED do + res = Net::HTTP.get(URI.parse("http://localhost:#{@port}/")) + end + end + +end |