[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]