2016-08-06 12:54:50 -04:00
|
|
|
require "abstract_unit"
|
|
|
|
require "controller/fake_controllers"
|
2011-02-13 18:24:46 -05:00
|
|
|
|
|
|
|
class SecureArticlesController < ArticlesController; end
|
|
|
|
class BlockArticlesController < ArticlesController; end
|
2012-02-24 08:16:31 -05:00
|
|
|
class QueryArticlesController < ArticlesController; end
|
2011-02-13 18:24:46 -05:00
|
|
|
|
|
|
|
class RoutingAssertionsTest < ActionController::TestCase
|
|
|
|
|
|
|
|
def setup
|
|
|
|
@routes = ActionDispatch::Routing::RouteSet.new
|
|
|
|
@routes.draw do
|
|
|
|
resources :articles
|
|
|
|
|
2016-08-06 12:54:50 -04:00
|
|
|
scope "secure", :constraints => { :protocol => "https://" } do
|
|
|
|
resources :articles, :controller => "secure_articles"
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
2016-08-06 12:54:50 -04:00
|
|
|
scope "block", :constraints => lambda { |r| r.ssl? } do
|
|
|
|
resources :articles, :controller => "block_articles"
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
2012-02-24 08:16:31 -05:00
|
|
|
|
2016-08-06 12:54:50 -04:00
|
|
|
scope "query", :constraints => lambda { |r| r.params[:use_query] == "true" } do
|
|
|
|
resources :articles, :controller => "query_articles"
|
2012-02-24 08:16:31 -05:00
|
|
|
end
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_generates
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_generates("/articles", { :controller => "articles", :action => "index" })
|
|
|
|
assert_generates("/articles/1", { :controller => "articles", :action => "show", :id => "1" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_generates_with_defaults
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_generates("/articles/1/edit", { :controller => "articles", :action => "edit" }, { :id => "1" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_generates_with_extras
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_generates("/articles", { :controller => "articles", :action => "index", :page => "1" }, {}, { :page => "1" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_recognizes
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "articles", :action => "index" }, "/articles")
|
|
|
|
assert_recognizes({ :controller => "articles", :action => "show", :id => "1" }, "/articles/1")
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_recognizes_with_extras
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "articles", :action => "index", :page => "1" }, "/articles", { :page => "1" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
2012-05-11 02:23:24 -04:00
|
|
|
|
2011-02-13 18:24:46 -05:00
|
|
|
def test_assert_recognizes_with_method
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "articles", :action => "create" }, { :path => "/articles", :method => :post })
|
|
|
|
assert_recognizes({ :controller => "articles", :action => "update", :id => "1" }, { :path => "/articles/1", :method => :put })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_recognizes_with_hash_constraint
|
2012-05-19 17:28:14 -04:00
|
|
|
assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "secure_articles", :action => "index" }, "http://test.host/secure/articles")
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "secure_articles", :action => "index", :protocol => "https://" }, "https://test.host/secure/articles")
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_recognizes_with_block_constraint
|
2012-05-19 17:28:14 -04:00
|
|
|
assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "block_articles", :action => "index" }, "http://test.host/block/articles")
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "block_articles", :action => "index" }, "https://test.host/block/articles")
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
2012-02-24 08:16:31 -05:00
|
|
|
def test_assert_recognizes_with_query_constraint
|
2012-05-19 17:28:14 -04:00
|
|
|
assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "query_articles", :action => "index", :use_query => "false" }, "/query/articles", { :use_query => "false" })
|
2012-02-24 08:16:31 -05:00
|
|
|
end
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "query_articles", :action => "index", :use_query => "true" }, "/query/articles", { :use_query => "true" })
|
2012-02-24 08:16:31 -05:00
|
|
|
end
|
|
|
|
|
2014-09-05 15:47:00 -04:00
|
|
|
def test_assert_recognizes_raises_message
|
|
|
|
err = assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_recognizes({ :controller => "secure_articles", :action => "index" }, "http://test.host/secure/articles", {}, "This is a really bad msg")
|
2014-09-05 15:47:00 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
assert_match err.message, "This is a really bad msg"
|
|
|
|
end
|
|
|
|
|
2011-02-13 18:24:46 -05:00
|
|
|
def test_assert_routing
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("/articles", :controller => "articles", :action => "index")
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
2014-04-29 21:26:16 -04:00
|
|
|
def test_assert_routing_raises_message
|
|
|
|
err = assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("/thisIsNotARoute", { :controller => "articles", :action => "edit", :id => "1" }, { :id => "1" }, {}, "This is a really bad msg")
|
2014-04-29 21:26:16 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
assert_match err.message, "This is a really bad msg"
|
|
|
|
end
|
|
|
|
|
2011-02-13 18:24:46 -05:00
|
|
|
def test_assert_routing_with_defaults
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("/articles/1/edit", { :controller => "articles", :action => "edit", :id => "1" }, { :id => "1" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_routing_with_extras
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("/articles", { :controller => "articles", :action => "index", :page => "1" }, { }, { :page => "1" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_routing_with_hash_constraint
|
2012-05-19 17:28:14 -04:00
|
|
|
assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("http://test.host/secure/articles", { :controller => "secure_articles", :action => "index" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("https://test.host/secure/articles", { :controller => "secure_articles", :action => "index", :protocol => "https://" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_routing_with_block_constraint
|
2012-05-19 17:28:14 -04:00
|
|
|
assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("http://test.host/block/articles", { :controller => "block_articles", :action => "index" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("https://test.host/block/articles", { :controller => "block_articles", :action => "index" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_with_routing
|
|
|
|
with_routing do |routes|
|
|
|
|
routes.draw do
|
2016-08-06 12:54:50 -04:00
|
|
|
resources :articles, :path => "artikel"
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("/artikel", :controller => "articles", :action => "index")
|
2012-05-19 17:28:14 -04:00
|
|
|
assert_raise(Assertion) do
|
2016-08-06 12:54:50 -04:00
|
|
|
assert_routing("/articles", { :controller => "articles", :action => "index" })
|
2011-02-13 18:24:46 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|