#!/usr/bin/env ruby require File.expand_path(File.dirname(__FILE__) + '/../test_helper') require 'action_controller/routing' class RoutesTest < ActionController::TestCase def test_parse_uri assert_routing('', :controller => 'wiki', :action => 'index') assert_routing('x', :controller => 'wiki', :action => 'index', :web => 'x') assert_routing('x/y', :controller => 'wiki', :web => 'x', :action => 'y') assert_routing('x/y/z', :controller => 'wiki', :web => 'x', :action => 'y', :id => 'z') assert_recognizes({:web => 'x', :controller => 'wiki', :action => 'y'}, 'x/y/') assert_recognizes({:web => 'x', :controller => 'wiki', :action => 'y', :id => 'z'}, 'x/y/z/') end def test_parse_uri_interestng_cases assert_routing('_veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery-long_web_/an_action/HomePage', :web => '_veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery-long_web_', :controller => 'wiki', :action => 'an_action', :id => 'HomePage' ) # assert_recognizes({:controller => 'wiki', :action => 'index'}, '///') end def test_parse_uri_liberal_with_pagenames assert_routing('web/show/%24HOME_PAGE', :controller => 'wiki', :web => 'web', :action => 'show', :id => '$HOME_PAGE') # assert_routing('web/show/HomePage%3F', # :controller => 'wiki', :web => 'web', :action => 'show', # :id => 'HomePage') # assert_routing('web/show/HomePage%3Farg1%3Dvalue1%26arg2%3Dvalue2', # :controller => 'wiki', :web => 'web', :action => 'show', # :id => 'HomePage?arg1=value1&arg2=value2') assert_routing('web/files/abc.zip', :web => 'web', :controller => 'file', :action => 'file', :id => 'abc.zip') assert_routing('web/import', :web => 'web', :controller => 'file', :action => 'import') # default option is wiki assert_recognizes({:controller => 'wiki', :web => 'unknown_path', :action => 'index', }, 'unknown_path') end def test_cases_broken_by_routes assert_routing('web/show/Page+With+Spaces', :controller => 'wiki', :web => 'web', :action => 'show', :id => 'Page With Spaces') # assert_routing('web/show/HomePage%2Fsomething_else', # :controller => 'wiki', :web => 'web', :action => 'show', :id => 'HomePage/something_else') end end