1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* test/cgi/test_cgi_modruby.rb: add test for mod_ruby adaptor.

Patch by Takeyuki Fujioka. [ruby-dev:36013]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2008-08-28 00:22:57 +00:00
parent f30670001b
commit 692395b81f
2 changed files with 150 additions and 0 deletions

View file

@ -1,3 +1,8 @@
Thu Aug 28 09:22:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
* 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@ruby-lang.org> Thu Aug 28 09:17:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
* test/cgi/test_cgi_header.rb: add test for CGI::Header. * test/cgi/test_cgi_header.rb: add test for CGI::Header.

145
test/cgi/test_cgi_modruby.rb Executable file
View file

@ -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