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