instiki/test/unit/url_rewriting_hack_test.rb

94 lines
3.6 KiB
Ruby
Executable file

#!/bin/env ruby -w
require File.dirname(__FILE__) + '/../test_helper'
require 'url_rewriting_hack'
class UrlRewritingHackTest < Test::Unit::TestCase
def test_parse_uri
assert_equal({:controller => 'wiki', :action => 'x', :web => nil},
DispatchServlet.parse_uri('/x/'))
assert_equal({:web => 'x', :controller => 'wiki', :action => 'y'},
DispatchServlet.parse_uri('/x/y'))
assert_equal({:web => 'x', :controller => 'wiki', :action => 'y'},
DispatchServlet.parse_uri('/x/y/'))
assert_equal({:web => 'x', :controller => 'wiki', :action => 'y', :id => 'z'},
DispatchServlet.parse_uri('/x/y/z'))
assert_equal({:web => 'x', :controller => 'wiki', :action => 'y', :id => 'z'},
DispatchServlet.parse_uri('/x/y/z/'))
end
def test_parse_uri_approot
assert_equal({:controller => 'wiki', :action => 'index', :web => nil},
DispatchServlet.parse_uri('/wiki/'))
end
def test_parse_uri_interestng_cases
assert_equal({:web => '_veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery-long_web_',
:controller => 'wiki',
:action => 'an_action', :id => 'HomePage'
},
DispatchServlet.parse_uri(
'/_veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery-long_web_/an_action/HomePage')
)
assert_equal false, DispatchServlet.parse_uri('')
assert_equal false, DispatchServlet.parse_uri('//')
assert_equal false, DispatchServlet.parse_uri('web')
end
def test_parse_uri_liberal_with_pagenames
assert_equal({:controller => 'wiki', :web => 'web', :action => 'show', :id => '$HOME_PAGE'},
DispatchServlet.parse_uri('/web/show/$HOME_PAGE'))
assert_equal({:controller => 'wiki', :web => 'web', :action => 'show',
:id => 'HomePage/something_else'},
DispatchServlet.parse_uri('/web/show/HomePage/something_else'))
assert_equal({:controller => 'wiki', :web => 'web', :action => 'show',
:id => 'HomePage?arg1=value1&arg2=value2'},
DispatchServlet.parse_uri('/web/show/HomePage?arg1=value1&arg2=value2'))
assert_equal({:controller => 'wiki', :web => 'web', :action => 'show',
:id => 'Page+With+Spaces'},
DispatchServlet.parse_uri('/web/show/Page+With+Spaces'))
end
def test_url_rewriting
request = ActionController::TestRequest.new
ur = ActionController::UrlRewriter.new(request, 'wiki', 'show')
assert_equal 'http://test.host/myweb/myaction',
ur.rewrite(:web => 'myweb', :controller => 'wiki', :action => 'myaction')
assert_equal 'http://test.host/myOtherWeb/',
ur.rewrite(:web => 'myOtherWeb', :controller => 'wiki')
assert_equal 'http://test.host/myaction',
ur.rewrite(:controller => 'wiki', :action => 'myaction')
assert_equal 'http://test.host/',
ur.rewrite(:controller => 'wiki')
end
def test_controller_mapping
request = ActionController::TestRequest.new
ur = ActionController::UrlRewriter.new(request, 'wiki', 'show')
assert_equal 'http://test.host/file',
ur.rewrite(:controller => 'file', :action => 'file')
assert_equal 'http://test.host/pic/abc.jpg',
ur.rewrite(:controller => 'file', :action => 'pic', :id => 'abc.jpg')
assert_equal 'http://test.host/web/pic/abc.jpg',
ur.rewrite(:web => 'web', :controller => 'file', :action => 'pic', :id => 'abc.jpg')
assert_equal 'http://test.host/web/import',
ur.rewrite(:web => 'web', :controller => 'file', :action => 'import')
# default option is wiki
assert_equal 'http://test.host/unknown_action',
ur.rewrite(:controller => 'wiki', :action => 'unknown_action')
end
end