ruby-changes:7370
From: naruse <ko1@a...>
Date: Thu, 28 Aug 2008 09:23:17 +0900 (JST)
Subject: [ruby-changes:7370] Ruby:r18889 (trunk): * test/cgi/test_cgi_modruby.rb: add test for mod_ruby adaptor.
naruse 2008-08-28 09:22:57 +0900 (Thu, 28 Aug 2008) New Revision: 18889 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18889 Log: * test/cgi/test_cgi_modruby.rb: add test for mod_ruby adaptor. Patch by Takeyuki Fujioka. [ruby-dev:36013] Added files: trunk/test/cgi/test_cgi_modruby.rb Modified files: trunk/ChangeLog Index: ChangeLog =================================================================== --- ChangeLog (revision 18888) +++ ChangeLog (revision 18889) @@ -1,3 +1,8 @@ +Thu Aug 28 09:22:01 2008 NARUSE, Yui <naruse@r...> + + * test/cgi/test_cgi_modruby.rb: add test for mod_ruby adaptor. + Patch by Takeyuki Fujioka. [ruby-dev:36013] + Thu Aug 28 09:17:10 2008 NARUSE, Yui <naruse@r...> * test/cgi/test_cgi_header.rb: add test for CGI::Header. Index: test/cgi/test_cgi_modruby.rb =================================================================== --- test/cgi/test_cgi_modruby.rb (revision 0) +++ test/cgi/test_cgi_modruby.rb (revision 18889) @@ -0,0 +1,145 @@ +require 'test/unit' +require 'cgi' + + +class CGIModrubyTest < Test::Unit::TestCase + + + def setup + @environ = { + 'SERVER_PROTOCOL' => 'HTTP/1.1', + 'REQUEST_METHOD' => 'GET', + #'QUERY_STRING' => 'a=foo&b=bar', + } + ENV.update(@environ) + CGI.class_eval { const_set(:MOD_RUBY, true) } + Apache._reset() + #@cgi = CGI.new + #@req = Apache.request + end + + + def teardown + @environ.each do |key, val| ENV.delete(key) end + CGI.class_eval { remove_const(:MOD_RUBY) } + end + + + def test_cgi_modruby_simple + req = Apache.request + cgi = CGI.new + assert(req._setup_cgi_env_invoked?) + assert(! req._send_http_header_invoked?) + actual = cgi.header + assert_equal('', actual) + assert_equal('text/html', req.content_type) + assert(req._send_http_header_invoked?) + end + + + def test_cgi_modruby_complex + req = Apache.request + cgi = CGI.new + options = { + 'status' => 'FORBIDDEN', + 'location' => 'http://www.example.com/', + 'type' => 'image/gif', + 'content-encoding' => 'deflate', + 'cookie' => [ CGI::Cookie.new('name1', 'abc', '123'), + CGI::Cookie.new('name'=>'name2', 'value'=>'value2', 'secure'=>true), + ], + } + assert(req._setup_cgi_env_invoked?) + assert(! req._send_http_header_invoked?) + actual = cgi.header(options) + assert_equal('', actual) + assert_equal('image/gif', req.content_type) + assert_equal('403 Forbidden', req.status_line) + assert_equal(403, req.status) + assert_equal('deflate', req.content_encoding) + assert_equal('http://www.example.com/', req.headers_out['location']) + assert_equal(["name1=abc&123; path=", "name2=value2; path=; secure"], + req.headers_out['Set-Cookie']) + assert(req._send_http_header_invoked?) + end + + + def test_cgi_modruby_location + req = Apache.request + cgi = CGI.new + options = { + 'status' => '200 OK', + 'location' => 'http://www.example.com/', + } + actual = cgi.header(options) + assert_equal('200 OK', req.status_line) # should be '302 Found' ? + assert_equal(302, req.status) + assert_equal('http://www.example.com/', req.headers_out['location']) + end + + + def test_cgi_modruby_requestparams + req = Apache.request + req.args = 'a=foo&b=bar' + cgi = CGI.new + assert_equal('foo', cgi['a']) + assert_equal('bar', cgi['b']) + end + + + instance_methods.each do |method| + private method if method =~ /^test_(.*)/ && $1 != ENV['TEST'] + end if ENV['TEST'] + +end + + + +## dummy class for mod_ruby +class Apache #:nodoc: + + def self._reset + @request = Request.new + end + + def self.request + return @request + end + + class Request + + def initialize + hash = {} + def hash.add(name, value) + (self[name] ||= []) << value + end + @headers_out = hash + @status_line = nil + @status = nil + @content_type = nil + @content_encoding = nil + end + attr_accessor :headers_out, :status_line, :status, :content_type, :content_encoding + + attr_accessor :args + #def args + # return ENV['QUERY_STRING'] + #end + + def send_http_header + @http_header = '*invoked*' + end + def _send_http_header_invoked? + @http_header ? true : false + end + + def setup_cgi_env + @cgi_env = '*invoked*' + end + def _setup_cgi_env_invoked? + @cgi_env ? true : false + end + + end + +end Property changes on: test/cgi/test_cgi_modruby.rb ___________________________________________________________________ Name: svn:eol-style + LF Name: svn:executable + no Name: svn:keywords + Author Id Revision -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/