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:
parent
f30670001b
commit
692395b81f
2 changed files with 150 additions and 0 deletions
|
@ -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>
|
||||
|
||||
* test/cgi/test_cgi_header.rb: add test for CGI::Header.
|
||||
|
|
145
test/cgi/test_cgi_modruby.rb
Executable file
145
test/cgi/test_cgi_modruby.rb
Executable 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
|
Loading…
Reference in a new issue