class TestRoutingMapper

Constants

SprocketsApp

Public Instance Methods

test_absolute_controller_namespace() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3336
def test_absolute_controller_namespace
  draw do
    namespace :foo do
      get "/", to: "/bar#index", as: "root"
    end
  end

  get "/foo"
  assert_equal "bar#index", @response.body
  assert_equal "/foo", foo_root_path
end
test_access_token_rooms() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1317
def test_access_token_rooms
  draw do
    scope ":access_token", constraints: { access_token: /\w{5,5}/ } do
      resources :rooms
    end
  end

  get "/12345/rooms"
  assert_equal "rooms#index", @response.body

  get "/12345/rooms/1"
  assert_equal "rooms#show", @response.body

  get "/12345/rooms/1/edit"
  assert_equal "rooms#edit", @response.body
end
test_account_namespace() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1087
def test_account_namespace
  draw do
    namespace :account do
      resource :subscription, :credit, :credit_card
    end
  end

  get "/account/subscription"
  assert_equal "account/subscriptions#show", @response.body
  assert_equal "/account/subscription", account_subscription_path

  get "/account/credit"
  assert_equal "account/credits#show", @response.body
  assert_equal "/account/credit", account_credit_path

  get "/account/credit_card"
  assert_equal "account/credit_cards#show", @response.body
  assert_equal "/account/credit_card", account_credit_card_path
end
test_action_from_path_is_not_frozen() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3309
def test_action_from_path_is_not_frozen
  draw do
    get "search" => "search"
  end

  get "/search"
  assert !@request.params[:action].frozen?
end
test_admin() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 400
def test_admin
  draw do
    constraints(ip: /192\.168\.1\.\d\d\d/) do
      get "admin" => "queenbee#index"
    end

    constraints ::TestRoutingMapper::IpRestrictor do
      get "admin/accounts" => "queenbee#accounts"
    end

    get "admin/passwords" => "queenbee#passwords", :constraints => ::TestRoutingMapper::IpRestrictor
  end

  get "/admin", headers: { "REMOTE_ADDR" => "192.168.1.100" }
  assert_equal "queenbee#index", @response.body

  get "/admin", headers: { "REMOTE_ADDR" => "10.0.0.100" }
  assert_equal "pass", @response.headers["X-Cascade"]

  get "/admin/accounts", headers: { "REMOTE_ADDR" => "192.168.1.100" }
  assert_equal "queenbee#accounts", @response.body

  get "/admin/accounts", headers: { "REMOTE_ADDR" => "10.0.0.100" }
  assert_equal "pass", @response.headers["X-Cascade"]

  get "/admin/passwords", headers: { "REMOTE_ADDR" => "192.168.1.100" }
  assert_equal "queenbee#passwords", @response.body

  get "/admin/passwords", headers: { "REMOTE_ADDR" => "10.0.0.100" }
  assert_equal "pass", @response.headers["X-Cascade"]
end
test_articles_perma() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1076
def test_articles_perma
  draw do
    get "articles/:year/:month/:day/:title", to: "articles#show", as: :article
  end

  get "/articles/2009/08/18/quails-3"
  assert_equal "articles#show", @response.body

  assert_equal "/articles/2009/8/18/quails-3", article_path(year: 2009, month: 8, day: 18, title: "quails-3")
end
test_articles_with_id() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1297
def test_articles_with_id
  draw do
    controller :articles do
      scope "/articles", as: "article" do
        scope path: "/:title", title: /[a-z]+/, as: :with_title do
          get "/:id", action: :with_id, as: ""
        end
      end
    end
  end

  get "/articles/quails/1"
  assert_equal "articles#with_id", @response.body

  get "/articles/123/1"
  assert_equal "pass", @response.headers["X-Cascade"]

  assert_equal "/articles/quails/1", article_with_title_path(title: "quails", id: 1)
end
test_bookmarks() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 341
def test_bookmarks
  draw do
    scope "bookmark", controller: "bookmarks", as: :bookmark do
      get  :new, path: "build"
      post :create, path: "create", as: ""
      put  :update
      get  :remove, action: :destroy, as: :remove
    end
  end

  get "/bookmark/build"
  assert_equal "bookmarks#new", @response.body
  assert_equal "/bookmark/build", bookmark_new_path

  post "/bookmark/create"
  assert_equal "bookmarks#create", @response.body
  assert_equal "/bookmark/create", bookmark_path

  put "/bookmark/update"
  assert_equal "bookmarks#update", @response.body
  assert_equal "/bookmark/update", bookmark_update_path

  get "/bookmark/remove"
  assert_equal "bookmarks#destroy", @response.body
  assert_equal "/bookmark/remove", bookmark_remove_path
end
test_constraints_are_merged_from_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2559
def test_constraints_are_merged_from_scope
  draw do
    scope constraints: { id: /\d{4}/ } do
      resources :movies do
        resources :reviews
        resource :trailer
      end
    end
  end

  get "/movies/0001"
  assert_equal "movies#show", @response.body
  assert_equal "/movies/0001", movie_path(id: "0001")

  get "/movies/00001"
  assert_equal "Not Found", @response.body
  assert_raises(ActionController::UrlGenerationError) { movie_path(id: "00001") }

  get "/movies/0001/reviews"
  assert_equal "reviews#index", @response.body
  assert_equal "/movies/0001/reviews", movie_reviews_path(movie_id: "0001")

  get "/movies/00001/reviews"
  assert_equal "Not Found", @response.body
  assert_raises(ActionController::UrlGenerationError) { movie_reviews_path(movie_id: "00001") }

  get "/movies/0001/reviews/0001"
  assert_equal "reviews#show", @response.body
  assert_equal "/movies/0001/reviews/0001", movie_review_path(movie_id: "0001", id: "0001")

  get "/movies/00001/reviews/0001"
  assert_equal "Not Found", @response.body
  assert_raises(ActionController::UrlGenerationError) { movie_path(movie_id: "00001", id: "00001") }

  get "/movies/0001/trailer"
  assert_equal "trailers#show", @response.body
  assert_equal "/movies/0001/trailer", movie_trailer_path(movie_id: "0001")

  get "/movies/00001/trailer"
  assert_equal "Not Found", @response.body
  assert_raises(ActionController::UrlGenerationError) { movie_trailer_path(movie_id: "00001") }
end
test_constraints_block_not_carried_to_following_routes() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3043
def test_constraints_block_not_carried_to_following_routes
  draw do
    scope "/italians" do
      get "/writers", to: "italians#writers", constraints: ::TestRoutingMapper::IpRestrictor
      get "/sculptors", to: "italians#sculptors"
      get "/painters/:painter", to: "italians#painters", constraints: { painter: /michelangelo/ }
    end
  end

  get "/italians/writers"
  assert_equal "Not Found", @response.body

  get "/italians/sculptors"
  assert_equal "italians#sculptors", @response.body

  get "/italians/painters/botticelli"
  assert_equal "Not Found", @response.body

  get "/italians/painters/michelangelo"
  assert_equal "italians#painters", @response.body
end
test_controller_name_with_leading_slash_raise_error() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3171
def test_controller_name_with_leading_slash_raise_error
  assert_raise(ArgumentError) do
    draw { get "/feeds/:service", to: "/feeds#show" }
  end

  assert_raise(ArgumentError) do
    draw { get "/feeds/:service", controller: "/feeds", action: "show" }
  end

  assert_raise(ArgumentError) do
    draw { get "/api/feeds/:service", to: "/api/feeds#show" }
  end

  assert_raise(ArgumentError) do
    draw { resources :feeds, controller: "/feeds" }
  end
end
test_controller_option_with_nesting_and_leading_slash() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1531
def test_controller_option_with_nesting_and_leading_slash
  draw do
    scope "/job", controller: "job" do
      scope ":id", action: "manage_applicant" do
        get "/active"
      end
    end
  end

  get "/job/5/active"
  assert_equal "job#manage_applicant", @response.body
end
test_convention_match_nested_and_with_leading_slash() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1574
def test_convention_match_nested_and_with_leading_slash
  draw do
    get "/account/nested/overview"
  end

  assert_equal "/account/nested/overview", account_nested_overview_path
  get "/account/nested/overview"
  assert_equal "account/nested#overview", @response.body
end
test_convention_with_explicit_end() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1584
def test_convention_with_explicit_end
  draw do
    get "sign_in" => "sessions#new"
  end

  get "/sign_in"
  assert_equal "sessions#new", @response.body
  assert_equal "/sign_in", sign_in_path
end
test_custom_param() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3257
def test_custom_param
  draw do
    resources :profiles, param: :username do
      get :details, on: :member
      resources :messages
    end
  end

  get "/profiles/bob"
  assert_equal "profiles#show", @response.body
  assert_equal "bob", @request.params[:username]

  get "/profiles/bob/details"
  assert_equal "bob", @request.params[:username]

  get "/profiles/bob/messages/34"
  assert_equal "bob", @request.params[:profile_username]
  assert_equal "34", @request.params[:id]
end
test_custom_param_constraint() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3277
def test_custom_param_constraint
  draw do
    resources :profiles, param: :username, username: /[a-z]+/ do
      get :details, on: :member
      resources :messages
    end
  end

  get "/profiles/bob1"
  assert_equal 404, @response.status

  get "/profiles/bob1/details"
  assert_equal 404, @response.status

  get "/profiles/bob1/messages/34"
  assert_equal 404, @response.status
end
test_custom_resource_actions_defined_using_string() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3065
def test_custom_resource_actions_defined_using_string
  draw do
    resources :customers do
      resources :invoices do
        get "aged/:months", on: :collection, action: :aged, as: :aged
      end

      get "inactive", on: :collection
      post "deactivate", on: :member
      get "old", on: :collection, as: :stale
    end
  end

  get "/customers/inactive"
  assert_equal "customers#inactive", @response.body
  assert_equal "/customers/inactive", inactive_customers_path

  post "/customers/1/deactivate"
  assert_equal "customers#deactivate", @response.body
  assert_equal "/customers/1/deactivate", deactivate_customer_path(id: "1")

  get "/customers/old"
  assert_equal "customers#old", @response.body
  assert_equal "/customers/old", stale_customers_path

  get "/customers/1/invoices/aged/3"
  assert_equal "invoices#aged", @response.body
  assert_equal "/customers/1/invoices/aged/3", aged_customer_invoices_path(customer_id: "1", months: "3")
end
test_custom_resource_routes_are_scoped() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2331
def test_custom_resource_routes_are_scoped
  draw do
    resources :customers do
      get :recent, on: :collection
      get "profile", on: :member
      get "secret/profile" => "customers#secret", :on => :member
      post "preview" => "customers#preview", :as => :another_preview, :on => :new
      resource :avatar do
        get "thumbnail" => "avatars#thumbnail", :as => :thumbnail, :on => :member
      end
      resources :invoices do
        get "outstanding" => "invoices#outstanding", :on => :collection
        get "overdue", action: :overdue, on: :collection
        get "print" => "invoices#print", :as => :print, :on => :member
        post "preview" => "invoices#preview", :as => :preview, :on => :new
      end
      resources :notes, shallow: true do
        get "preview" => "notes#preview", :as => :preview, :on => :new
        get "print" => "notes#print", :as => :print, :on => :member
      end
    end

    namespace :api do
      resources :customers do
        get "recent" => "customers#recent", :as => :recent, :on => :collection
        get "profile" => "customers#profile", :as => :profile, :on => :member
        post "preview" => "customers#preview", :as => :preview, :on => :new
      end
    end
  end

  assert_equal "/customers/recent", recent_customers_path
  assert_equal "/customers/1/profile", profile_customer_path(id: "1")
  assert_equal "/customers/1/secret/profile", secret_profile_customer_path(id: "1")
  assert_equal "/customers/new/preview", another_preview_new_customer_path
  assert_equal "/customers/1/avatar/thumbnail.jpg", thumbnail_customer_avatar_path(customer_id: "1", format: :jpg)
  assert_equal "/customers/1/invoices/outstanding", outstanding_customer_invoices_path(customer_id: "1")
  assert_equal "/customers/1/invoices/2/print", print_customer_invoice_path(customer_id: "1", id: "2")
  assert_equal "/customers/1/invoices/new/preview", preview_new_customer_invoice_path(customer_id: "1")
  assert_equal "/customers/1/notes/new/preview", preview_new_customer_note_path(customer_id: "1")
  assert_equal "/notes/1/print", print_note_path(id: "1")
  assert_equal "/api/customers/recent", recent_api_customers_path
  assert_equal "/api/customers/1/profile", profile_api_customer_path(id: "1")
  assert_equal "/api/customers/new/preview", preview_new_api_customer_path

  get "/customers/1/invoices/overdue"
  assert_equal "invoices#overdue", @response.body

  get "/customers/1/secret/profile"
  assert_equal "customers#secret", @response.body
end
test_default_integer_params() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1739
def test_default_integer_params
  draw do
    get "inline_pages/(:page)", to: "pages#show", page: 1
    get "default_pages/(:page)", to: "pages#show", defaults: { page: 1 }

    defaults page: 1 do
      get "scoped_pages/(:page)", to: "pages#show"
    end
  end

  get "/inline_pages"
  assert_equal 1, @request.params[:page]

  get "/default_pages"
  assert_equal 1, @request.params[:page]

  get "/scoped_pages"
  assert_equal 1, @request.params[:page]
end
test_default_string_params() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1719
def test_default_string_params
  draw do
    get "inline_pages/(:id)", to: "pages#show", id: "home"
    get "default_pages/(:id)", to: "pages#show", defaults: { id: "home" }

    defaults id: "home" do
      get "scoped_pages/(:id)", to: "pages#show"
    end
  end

  get "/inline_pages"
  assert_equal "home", @request.params[:id]

  get "/default_pages"
  assert_equal "home", @request.params[:id]

  get "/scoped_pages"
  assert_equal "home", @request.params[:id]
end
test_default_string_params_with_match() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1768
def test_default_string_params_with_match
  draw do
    match "/", to: "pages#show", via: :get, id: "home"
  end

  get "/"
  assert_equal "home", @request.params[:id]
end
test_default_string_params_with_root() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1786
def test_default_string_params_with_root
  draw do
    root to: "pages#show", id: "home"
  end

  get "/"
  assert_equal "home", @request.params[:id]
end
test_direct_children_of_shallow_resources() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2189
def test_direct_children_of_shallow_resources
  draw do
    resources :blogs do
      resources :posts, shallow: true do
        resources :comments
      end
    end
  end

  post "/posts/1/comments"
  assert_equal "comments#create", @response.body
  assert_equal "/posts/1/comments", post_comments_path("1")

  get "/posts/2/comments/new"
  assert_equal "comments#new", @response.body
  assert_equal "/posts/2/comments/new", new_post_comment_path("2")

  get "/posts/1/comments"
  assert_equal "comments#index", @response.body
  assert_equal "/posts/1/comments", post_comments_path("1")
end
test_duplicate_route_name_raises_error() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3211
def test_duplicate_route_name_raises_error
  assert_raise(ArgumentError) do
    draw do
      get "/collision", to: "collision#show", as: "collision"
      get "/duplicate", to: "duplicate#show", as: "collision"
    end
  end
end
test_duplicate_route_name_via_resources_raises_error() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3220
def test_duplicate_route_name_via_resources_raises_error
  assert_raise(ArgumentError) do
    draw do
      resources :collisions
      get "/collision", to: "collision#show", as: "collision"
    end
  end
end
test_dynamic_action_segments_are_deprecated() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3661
def test_dynamic_action_segments_are_deprecated
  assert_deprecated do
    draw do
      get "/pages/:action", controller: "pages"
    end
  end
end
test_dynamic_controller_segments_are_deprecated() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3653
def test_dynamic_controller_segments_are_deprecated
  assert_deprecated do
    draw do
      get "/:controller", action: "index"
    end
  end
end
test_dynamically_generated_helpers_on_collection_do_not_clobber_resources_url_helper() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1544
def test_dynamically_generated_helpers_on_collection_do_not_clobber_resources_url_helper
  draw do
    resources :replies do
      collection do
        get "page/:page" => "replies#index", :page => %r{\d+}
        get ":page" => "replies#index", :page => %r{\d+}
      end
    end
  end

  assert_equal "/replies", replies_path
end
test_except_option_should_not_inherit() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2733
def test_except_option_should_not_inherit
  draw do
    scope except: :index do
      namespace :except do
        resources :sectors, except: [:show, :update, :destroy] do
          resources :companies
          resource  :leader
        end
      end
    end
  end

  get "/except/sectors/1/companies/2"
  assert_equal "except/companies#show", @response.body
  assert_equal "/except/sectors/1/companies/2", except_sector_company_path(sector_id: "1", id: "2")

  get "/except/sectors/1/leader"
  assert_equal "except/leaders#show", @response.body
  assert_equal "/except/sectors/1/leader", except_sector_leader_path(sector_id: "1")
end
test_except_option_should_override_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2715
def test_except_option_should_override_scope
  draw do
    scope except: :index do
      namespace :except do
        resources :sectors, except: [:show, :update, :destroy]
      end
    end
  end

  get "/except/sectors"
  assert_equal "except/sectors#index", @response.body
  assert_equal "/except/sectors", except_sectors_path

  get "/except/sectors/1"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { except_sector_path(id: "1") }
end
test_except_option_should_override_scoped_only() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2754
def test_except_option_should_override_scoped_only
  draw do
    scope only: :show do
      namespace :only do
        resources :sectors, only: :index do
          resources :managers, except: [:show, :update, :destroy]
        end
      end
    end
  end

  get "/only/sectors/1/managers"
  assert_equal "only/managers#index", @response.body
  assert_equal "/only/sectors/1/managers", only_sector_managers_path(sector_id: "1")

  get "/only/sectors/1/managers/2"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { only_sector_manager_path(sector_id: "1", id: "2") }
end
test_except_scope_should_override_parent_only_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2842
def test_except_scope_should_override_parent_only_scope
  draw do
    scope only: :show do
      namespace :only do
        resources :sectors, only: :index do
          resources :companies do
            scope except: [:show, :update, :destroy] do
              resources :departments
            end
          end
        end
      end
    end
  end

  get "/only/sectors/1/companies/2/departments"
  assert_equal "only/departments#index", @response.body
  assert_equal "/only/sectors/1/companies/2/departments", only_sector_company_departments_path(sector_id: "1", company_id: "2")

  get "/only/sectors/1/companies/2/departments/3"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { only_sector_company_department_path(sector_id: "1", company_id: "2", id: "3") }
end
test_except_scope_should_override_parent_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2818
def test_except_scope_should_override_parent_scope
  draw do
    scope except: :index do
      namespace :except do
        resources :sectors, except: [:show, :update, :destroy] do
          resources :companies do
            scope except: [:show, :update, :destroy] do
              resources :divisions
            end
          end
        end
      end
    end
  end

  get "/except/sectors/1/companies/2/divisions"
  assert_equal "except/divisions#index", @response.body
  assert_equal "/except/sectors/1/companies/2/divisions", except_sector_company_divisions_path(sector_id: "1", company_id: "2")

  get "/except/sectors/1/companies/2/divisions/3"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { except_sector_company_division_path(sector_id: "1", company_id: "2", id: "3") }
end
test_except_should_be_read_from_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2639
def test_except_should_be_read_from_scope
  draw do
    scope except: [:new, :create, :edit, :update, :destroy] do
      namespace :except do
        resources :clubs do
          resources :players
          resource  :chairman
        end
      end
    end
  end

  get "/except/clubs"
  assert_equal "except/clubs#index", @response.body
  assert_equal "/except/clubs", except_clubs_path

  get "/except/clubs/1/edit"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { edit_except_club_path(id: "1") }

  get "/except/clubs/1/players"
  assert_equal "except/players#index", @response.body
  assert_equal "/except/clubs/1/players", except_club_players_path(club_id: "1")

  get "/except/clubs/1/players/2/edit"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { edit_except_club_player_path(club_id: "1", id: "2") }

  get "/except/clubs/1/chairman"
  assert_equal "except/chairmen#show", @response.body
  assert_equal "/except/clubs/1/chairman", except_club_chairman_path(club_id: "1")

  get "/except/clubs/1/chairman/edit"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { edit_except_club_chairman_path(club_id: "1") }
end
test_explicitly_avoiding_the_named_route() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3159
def test_explicitly_avoiding_the_named_route
  draw do
    scope as: "routes" do
      get "/c/:id", as: :collision, to: "collision#show"
      get "/collision", to: "collision#show"
      get "/no_collision", to: "collision#show", as: nil
    end
  end

  assert !respond_to?(:routes_no_collision_path)
end
test_forum_products() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1050
def test_forum_products
  draw do
    namespace :forum do
      resources :products, path: "" do
        resources :questions
      end
    end
  end

  get "/forum"
  assert_equal "forum/products#index", @response.body
  assert_equal "/forum", forum_products_path

  get "/forum/basecamp"
  assert_equal "forum/products#show", @response.body
  assert_equal "/forum/basecamp", forum_product_path(id: "basecamp")

  get "/forum/basecamp/questions"
  assert_equal "forum/questions#index", @response.body
  assert_equal "/forum/basecamp/questions", forum_product_questions_path(product_id: "basecamp")

  get "/forum/basecamp/questions/1"
  assert_equal "forum/questions#show", @response.body
  assert_equal "/forum/basecamp/questions/1", forum_product_question_path(product_id: "basecamp", id: 1)
end
test_glob_parameter_accepts_regexp() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2447
def test_glob_parameter_accepts_regexp
  draw do
    get "/:locale/*file.:format", to: "files#show", file: /path\/to\/existing\/file/
  end

  get "/en/path/to/existing/file.html"
  assert_equal 200, @response.status
end
test_global() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 432
def test_global
  draw do
    controller(:global) do
      get "global/hide_notice"
      get "global/export",      action: :export, as: :export_request
      get "/export/:id/:file",  action: :export, as: :export_download, constraints: { file: /.*/ }

      ActiveSupport::Deprecation.silence do
        get "global/:action"
      end
    end
  end

  get "/global/dashboard"
  assert_equal "global#dashboard", @response.body

  get "/global/export"
  assert_equal "global#export", @response.body

  get "/global/hide_notice"
  assert_equal "global#hide_notice", @response.body

  get "/export/123/foo.txt"
  assert_equal "global#export", @response.body

  assert_equal "/global/export", export_request_path
  assert_equal "/global/hide_notice", global_hide_notice_path
  assert_equal "/export/123/foo.txt", export_download_path(id: 123, file: "foo.txt")
end
test_greedy_resource_id_regexp_doesnt_match_edit_and_custom_action() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2952
def test_greedy_resource_id_regexp_doesnt_match_edit_and_custom_action
  draw do
    resources :sections, id: /.+/ do
      get :preview, on: :member
    end
  end

  get "/sections/1/edit"
  assert_equal "sections#edit", @response.body
  assert_equal "/sections/1/edit", edit_section_path(id: "1")

  get "/sections/1/preview"
  assert_equal "sections#preview", @response.body
  assert_equal "/sections/1/preview", preview_section_path(id: "1")
end
test_head_fetch_with_mount_on_root() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3614
def test_head_fetch_with_mount_on_root
  draw do
    get "/home" => "test#index"
    mount lambda { |env| [200, {}, [env["REQUEST_METHOD"]]] }, at: "/"
  end

  # HEAD request should match `get /home` rather than the
  # lower-precedence Rack app mounted at `/`.
  head "/home"
  assert_response :ok
  assert_equal "test#index", @response.body

  # But the Rack app can still respond to its own HEAD requests.
  head "/foobar"
  assert_response :ok
  assert_equal "HEAD", @response.body
end
test_index() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1420
def test_index
  draw do
    get "/info" => "projects#info", :as => "info"
  end

  assert_equal "/info", info_path
  get "/info"
  assert_equal "projects#info", @response.body
end
test_invalid_route_name_raises_error() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3189
def test_invalid_route_name_raises_error
  assert_raise(ArgumentError) do
    draw { get "/products", to: "products#index", as: "products " }
  end

  assert_raise(ArgumentError) do
    draw { get "/products", to: "products#index", as: " products" }
  end

  assert_raise(ArgumentError) do
    draw { get "/products", to: "products#index", as: "products!" }
  end

  assert_raise(ArgumentError) do
    draw { get "/products", to: "products#index", as: "products index" }
  end

  assert_raise(ArgumentError) do
    draw { get "/products", to: "products#index", as: "1products" }
  end
end
test_keyed_default_string_params_with_match() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1759
def test_keyed_default_string_params_with_match
  draw do
    match "/", to: "pages#show", via: :get, defaults: { id: "home" }
  end

  get "/"
  assert_equal "home", @request.params[:id]
end
test_keyed_default_string_params_with_root() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1777
def test_keyed_default_string_params_with_root
  draw do
    root to: "pages#show", defaults: { id: "home" }
  end

  get "/"
  assert_equal "home", @request.params[:id]
end
test_local() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 462
def test_local
  draw do
    ActiveSupport::Deprecation.silence do
      get "/local/:action", controller: "local"
    end
  end

  get "/local/dashboard"
  assert_equal "local#dashboard", @response.body
end
test_login() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 44
def test_login
  draw do
    default_url_options host: "rubyonquails.org"

    controller :sessions do
      get  "login" => :new
      post "login" => :create
    end
  end

  get "/login"
  assert_equal "sessions#new", @response.body
  assert_equal "/login", login_path

  post "/login"
  assert_equal "sessions#create", @response.body

  assert_equal "/login", url_for(controller: "sessions", action: "create", only_path: true)
  assert_equal "/login", url_for(controller: "sessions", action: "new", only_path: true)

  assert_equal "http://rubyonquails.org/login", url_for(controller: "sessions", action: "create")
  assert_equal "http://rubyonquails.org/login", login_url
end
test_login_redirect() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 68
def test_login_redirect
  draw do
    get "account/login", to: redirect("/login")
  end

  get "/account/login"
  verify_redirect "http://www.example.com/login"
end
test_logout() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 30
def test_logout
  draw do
    controller :sessions do
      delete "logout" => :destroy
    end
  end

  delete "/logout"
  assert_equal "sessions#destroy", @response.body

  assert_equal "/logout", logout_path
  assert_equal "/logout", url_for(controller: "sessions", action: "destroy", only_path: true)
end
test_logout_redirect_without_to() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 77
def test_logout_redirect_without_to
  draw do
    get "account/logout" => redirect("/logout"), :as => :logout_redirect
  end

  assert_equal "/account/logout", logout_redirect_path
  get "/account/logout"
  verify_redirect "http://www.example.com/logout"
end
test_match_shorthand_inside_namespace() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1455
def test_match_shorthand_inside_namespace
  draw do
    namespace :account do
      get "shorthand"
    end
  end

  assert_equal "/account/shorthand", account_shorthand_path
  get "/account/shorthand"
  assert_equal "account#shorthand", @response.body
end
test_match_shorthand_inside_namespace_with_controller() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1481
def test_match_shorthand_inside_namespace_with_controller
  draw do
    namespace :api do
      get "products/list"
    end
  end

  assert_equal "/api/products/list", api_products_list_path
  get "/api/products/list"
  assert_equal "api/products#list", @response.body
end
test_match_shorthand_inside_nested_namespaces_and_scopes_with_controller() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1505
def test_match_shorthand_inside_nested_namespaces_and_scopes_with_controller
  draw do
    namespace :api do
      namespace :v3 do
        scope ":locale" do
          get "products/list"
        end
      end
    end
  end

  get "/api/v3/en/products/list"
  assert_equal "api/v3/products#list", @response.body
end
test_match_shorthand_inside_scope_with_variables_with_controller() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1493
def test_match_shorthand_inside_scope_with_variables_with_controller
  draw do
    scope ":locale" do
      match "questions/new", via: [:get]
    end
  end

  get "/de/questions/new"
  assert_equal "questions#new", @response.body
  assert_equal "de", @request.params[:locale]
end
test_match_shorthand_with_multiple_paths_inside_namespace() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1467
def test_match_shorthand_with_multiple_paths_inside_namespace
  draw do
    namespace :proposals do
      put "activate", "inactivate"
    end
  end

  put "/proposals/activate"
  assert_equal "proposals#activate", @response.body

  put "/proposals/inactivate"
  assert_equal "proposals#inactivate", @response.body
end
test_match_shorthand_with_no_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1445
def test_match_shorthand_with_no_scope
  draw do
    get "account/overview"
  end

  assert_equal "/account/overview", account_overview_path
  get "/account/overview"
  assert_equal "account#overview", @response.body
end
test_match_with_empty_via() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2439
def test_match_with_empty_via
  assert_raises(ArgumentError) do
    draw do
      match "/foo/bar", to: "files#show", via: []
    end
  end
end
test_match_with_many_paths_containing_a_slash() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1430
def test_match_with_many_paths_containing_a_slash
  draw do
    get "get/first", "get/second", "get/third", to: "get#show"
  end

  get "/get/first"
  assert_equal "get#show", @response.body

  get "/get/second"
  assert_equal "get#show", @response.body

  get "/get/third"
  assert_equal "get#show", @response.body
end
test_match_without_via() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2431
def test_match_without_via
  assert_raises(ArgumentError) do
    draw do
      match "/foo/bar", to: "files#show"
    end
  end
end
test_member_on_resource() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 225
def test_member_on_resource
  draw do
    resource :session do
      member do
        get :crush
      end
    end
  end

  get "/session/crush"
  assert_equal "sessions#crush", @response.body
  assert_equal "/session/crush", crush_session_path
end
test_mix_string_to_action() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3459
def test_mix_string_to_action
  draw do
    get "/projects", action: "index",
                     to: "comments#index"
  end
  get "/projects"
  assert_equal "comments#index", @response.body
end
test_mix_string_to_controller() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3450
def test_mix_string_to_controller
  draw do
    get "/projects", controller: "project_files",
                     to: "comments#index"
  end
  get "/projects"
  assert_equal "comments#index", @response.body
end
test_mix_string_to_controller_action() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3440
def test_mix_string_to_controller_action
  draw do
    get "/projects", controller: "project_files",
                     action: "index",
                     to: "comments#index"
  end
  get "/projects"
  assert_equal "comments#index", @response.body
end
test_module_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1840
def test_module_scope
  draw do
    resource :token, module: :api
  end

  get "/token"
  assert_equal "api/tokens#show", @response.body
  assert_equal "/token", token_path
end
test_multiple_namespaced_roots() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3693
def test_multiple_namespaced_roots
  draw do
    namespace :foo do
      root "test#index"
    end

    root "test#index"

    namespace :bar do
      root "test#index"
    end
  end

  assert_equal "/foo", foo_root_path
  assert_equal "/", root_path
  assert_equal "/bar", bar_root_path
end
test_multiple_positional_args_with_the_same_name() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3318
def test_multiple_positional_args_with_the_same_name
  draw do
    get "/downloads/:id/:id.tar" => "downloads#show", as: :download, format: false
  end

  expected_params = {
    controller: "downloads",
    action:     "show",
    id:         "1"
  }

  get "/downloads/1/1.tar"
  assert_equal "downloads#show", @response.body
  assert_equal expected_params, @request.path_parameters
  assert_equal "/downloads/1/1.tar", download_path("1")
  assert_equal "/downloads/1/1.tar", download_path("1", "1")
end
test_multiple_roots() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3669
def test_multiple_roots
  draw do
    namespace :foo do
      root "pages#index", constraints: { host: "www.example.com" }
      root "admin/pages#index", constraints: { host: "admin.example.com" }
    end

    root "pages#index", constraints: { host: "www.example.com" }
    root "admin/pages#index", constraints: { host: "admin.example.com" }
  end

  get "http://www.example.com/foo"
  assert_equal "foo/pages#index", @response.body

  get "http://admin.example.com/foo"
  assert_equal "foo/admin/pages#index", @response.body

  get "http://www.example.com/"
  assert_equal "pages#index", @response.body

  get "http://admin.example.com/"
  assert_equal "admin/pages#index", @response.body
end
test_named_character_classes_in_regexp_constraints() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3107
def test_named_character_classes_in_regexp_constraints
  draw do
    get "/purchases/:token/:filename",
      to: "purchases#fetch",
      token: /[[:alnum:]]{10}/,
      filename: /(.+)/,
      as: :purchase
  end

  get "/purchases/315004be7e/Ruby_on_Quails_3.pdf"
  assert_equal "purchases#fetch", @response.body
  assert_equal "/purchases/315004be7e/Ruby_on_Quails_3.pdf", purchase_path(token: "315004be7e", filename: "Ruby_on_Quails_3.pdf")
end
test_named_route_check() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3146
def test_named_route_check
  before, after = nil

  draw do
    before = has_named_route?(:hello)
    get "/hello", as: :hello, to: "hello#world"
    after = has_named_route?(:hello)
  end

  assert !before, "expected to not have named route :hello before route definition"
  assert after, "expected to have named route :hello after route definition"
end
test_named_route_with_no_side_effects() click to toggle source

tests the arguments modification free version of define_hash_access

# File actionpack/test/dispatch/routing_test.rb, line 503
def test_named_route_with_no_side_effects
  draw do
    resources :customers do
      get "profile", on: :member
    end
  end

  original_options = { host: "test.host" }
  options = original_options.dup

  profile_customer_url("customer_model", options)

  # verify that the options passed in have not changed from the original ones
  assert_equal original_options, options
end
test_namespace_as_controller() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3348
def test_namespace_as_controller
  draw do
    namespace :foo do
      get "/", to: "/bar#index", as: "root"
    end
  end

  get "/foo"
  assert_equal "bar#index", @response.body
  assert_equal "/foo", foo_root_path
end
test_namespace_containing_numbers() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1285
def test_namespace_containing_numbers
  draw do
    namespace :v2 do
      resources :subscriptions
    end
  end

  get "/v2/subscriptions"
  assert_equal "v2/subscriptions#index", @response.body
  assert_equal "/v2/subscriptions", v2_subscriptions_path
end
test_namespace_nested_in_resources() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1121
def test_namespace_nested_in_resources
  draw do
    resources :clients do
      namespace :google do
        resource :account do
          namespace :secret do
            resource :info
          end
        end
      end
    end
  end

  get "/clients/1/google/account"
  assert_equal "/clients/1/google/account", client_google_account_path(1)
  assert_equal "google/accounts#show", @response.body

  get "/clients/1/google/account/secret/info"
  assert_equal "/clients/1/google/account/secret/info", client_google_account_secret_info_path(1)
  assert_equal "google/secret/infos#show", @response.body
end
test_namespace_redirect() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 87
def test_namespace_redirect
  draw do
    namespace :private do
      root to: redirect("/private/index")
      get "index", to: "private#index"
    end
  end

  get "/private"
  verify_redirect "http://www.example.com/private/index"
end
test_namespace_with_controller_segment() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 117
def test_namespace_with_controller_segment
  assert_raise(ArgumentError) do
    draw do
      namespace :admin do
        ActiveSupport::Deprecation.silence do
          get "/:controller(/:action(/:id(.:format)))"
        end
      end
    end
  end
end
test_namespace_with_options() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1143
def test_namespace_with_options
  draw do
    namespace :users, path: "usuarios" do
      root to: "home#index"
    end
  end

  get "/usuarios"
  assert_equal "/usuarios", users_root_path
  assert_equal "users/home#index", @response.body
end
test_namespace_without_controller_segment() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 129
def test_namespace_without_controller_segment
  draw do
    namespace :admin do
      ActiveSupport::Deprecation.silence do
        get "hello/:controllers/:action"
      end
    end
  end
  get "/admin/hello/foo/new"
  assert_equal "foo", @request.params["controllers"]
end
test_namespaced_roots() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1629
def test_namespaced_roots
  draw do
    namespace :account do
      root to: "account#index"
    end
  end

  assert_equal "/account", account_root_path
  get "/account"
  assert_equal "account/account#index", @response.body
end
test_namespaced_shallow_routes_with_as_option() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1207
def test_namespaced_shallow_routes_with_as_option
  draw do
    namespace :foo, as: "bar" do
      resources :posts, only: [:index, :show] do
        resources :comments, only: [:index, :show], shallow: true
      end
    end
  end

  get "/foo/posts"
  assert_equal "/foo/posts", bar_posts_path
  assert_equal "foo/posts#index", @response.body

  get "/foo/posts/1"
  assert_equal "/foo/posts/1", bar_post_path("1")
  assert_equal "foo/posts#show", @response.body

  get "/foo/posts/1/comments"
  assert_equal "/foo/posts/1/comments", bar_post_comments_path("1")
  assert_equal "foo/comments#index", @response.body

  get "/foo/comments/2"
  assert_equal "/foo/comments/2", bar_comment_path("2")
  assert_equal "foo/comments#show", @response.body
end
test_namespaced_shallow_routes_with_module_option() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1155
def test_namespaced_shallow_routes_with_module_option
  draw do
    namespace :foo, module: "bar" do
      resources :posts, only: [:index, :show] do
        resources :comments, only: [:index, :show], shallow: true
      end
    end
  end

  get "/foo/posts"
  assert_equal "/foo/posts", foo_posts_path
  assert_equal "bar/posts#index", @response.body

  get "/foo/posts/1"
  assert_equal "/foo/posts/1", foo_post_path("1")
  assert_equal "bar/posts#show", @response.body

  get "/foo/posts/1/comments"
  assert_equal "/foo/posts/1/comments", foo_post_comments_path("1")
  assert_equal "bar/comments#index", @response.body

  get "/foo/comments/2"
  assert_equal "/foo/comments/2", foo_comment_path("2")
  assert_equal "bar/comments#show", @response.body
end
test_namespaced_shallow_routes_with_path_option() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1181
def test_namespaced_shallow_routes_with_path_option
  draw do
    namespace :foo, path: "bar" do
      resources :posts, only: [:index, :show] do
        resources :comments, only: [:index, :show], shallow: true
      end
    end
  end

  get "/bar/posts"
  assert_equal "/bar/posts", foo_posts_path
  assert_equal "foo/posts#index", @response.body

  get "/bar/posts/1"
  assert_equal "/bar/posts/1", foo_post_path("1")
  assert_equal "foo/posts#show", @response.body

  get "/bar/posts/1/comments"
  assert_equal "/bar/posts/1/comments", foo_post_comments_path("1")
  assert_equal "foo/comments#index", @response.body

  get "/bar/comments/2"
  assert_equal "/bar/comments/2", foo_comment_path("2")
  assert_equal "foo/comments#show", @response.body
end
test_namespaced_shallow_routes_with_shallow_path_option() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1233
def test_namespaced_shallow_routes_with_shallow_path_option
  draw do
    namespace :foo, shallow_path: "bar" do
      resources :posts, only: [:index, :show] do
        resources :comments, only: [:index, :show], shallow: true
      end
    end
  end

  get "/foo/posts"
  assert_equal "/foo/posts", foo_posts_path
  assert_equal "foo/posts#index", @response.body

  get "/foo/posts/1"
  assert_equal "/foo/posts/1", foo_post_path("1")
  assert_equal "foo/posts#show", @response.body

  get "/foo/posts/1/comments"
  assert_equal "/foo/posts/1/comments", foo_post_comments_path("1")
  assert_equal "foo/comments#index", @response.body

  get "/bar/comments/2"
  assert_equal "/bar/comments/2", foo_comment_path("2")
  assert_equal "foo/comments#show", @response.body
end
test_namespaced_shallow_routes_with_shallow_prefix_option() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1259
def test_namespaced_shallow_routes_with_shallow_prefix_option
  draw do
    namespace :foo, shallow_prefix: "bar" do
      resources :posts, only: [:index, :show] do
        resources :comments, only: [:index, :show], shallow: true
      end
    end
  end

  get "/foo/posts"
  assert_equal "/foo/posts", foo_posts_path
  assert_equal "foo/posts#index", @response.body

  get "/foo/posts/1"
  assert_equal "/foo/posts/1", foo_post_path("1")
  assert_equal "foo/posts#show", @response.body

  get "/foo/posts/1/comments"
  assert_equal "/foo/posts/1/comments", foo_post_comments_path("1")
  assert_equal "foo/comments#index", @response.body

  get "/foo/comments/2"
  assert_equal "/foo/comments/2", bar_comment_path("2")
  assert_equal "foo/comments#show", @response.body
end
test_nested_namespace() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1107
def test_nested_namespace
  draw do
    namespace :account do
      namespace :admin do
        resource :subscription
      end
    end
  end

  get "/account/admin/subscription"
  assert_equal "account/admin/subscriptions#show", @response.body
  assert_equal "/account/admin/subscription", account_admin_subscription_path
end
test_nested_optional_path_shorthand() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1705
def test_nested_optional_path_shorthand
  draw do
    scope "(:locale)", locale: /en|pl/ do
      get "registrations/new"
    end
  end

  get "/registrations/new"
  assert_nil @request.params[:locale]

  get "/en/registrations/new"
  assert_equal "en", @request.params[:locale]
end
test_nested_optional_scoped_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1678
def test_nested_optional_scoped_path
  draw do
    namespace :admin do
      scope "(:locale)", locale: /en|pl/ do
        resources :descriptions
      end
    end
  end

  assert_equal "/admin/en/descriptions", admin_descriptions_path("en")
  assert_equal "/admin/descriptions", admin_descriptions_path(nil)
  assert_equal "/admin/en/descriptions/1", admin_description_path("en", 1)
  assert_equal "/admin/descriptions/1", admin_description_path(nil, 1)

  get "/admin/en/descriptions"
  assert_equal "admin/descriptions#index", @response.body

  get "/admin/descriptions"
  assert_equal "admin/descriptions#index", @response.body

  get "/admin/en/descriptions/1"
  assert_equal "admin/descriptions#show", @response.body

  get "/admin/descriptions/1"
  assert_equal "admin/descriptions#show", @response.body
end
test_nested_resource_constraints() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3121
def test_nested_resource_constraints
  draw do
    resources :lists, id: /([A-Za-z0-9]{25})|default/ do
      resources :todos, id: /\d+/
    end
  end

  get "/lists/01234012340123401234fffff"
  assert_equal "lists#show", @response.body
  assert_equal "/lists/01234012340123401234fffff", list_path(id: "01234012340123401234fffff")

  get "/lists/01234012340123401234fffff/todos/1"
  assert_equal "todos#show", @response.body
  assert_equal "/lists/01234012340123401234fffff/todos/1", list_todo_path(list_id: "01234012340123401234fffff", id: "1")

  get "/lists/2/todos/1"
  assert_equal "Not Found", @response.body
  assert_raises(ActionController::UrlGenerationError) { list_todo_path(list_id: "2", id: "1") }
end
test_nested_route_in_nested_resource() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3229
def test_nested_route_in_nested_resource
  draw do
    resources :posts, only: [:index, :show] do
      resources :comments, except: :destroy do
        get "views" => "comments#views", :as => :views
      end
    end
  end

  get "/posts/1/comments/2/views"
  assert_equal "comments#views", @response.body
  assert_equal "/posts/1/comments/2/views", post_comment_views_path(post_id: "1", comment_id: "2")
end
test_nested_routes_under_format_resource() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3711
def test_nested_routes_under_format_resource
  draw do
    resources :formats do
      resources :items
    end
  end

  get "/formats/1/items.json"
  assert_equal 200, @response.status
  assert_equal "items#index", @response.body
  assert_equal "/formats/1/items.json", format_items_path(1, :json)

  get "/formats/1/items/2.json"
  assert_equal 200, @response.status
  assert_equal "items#show", @response.body
  assert_equal "/formats/1/items/2.json", format_item_path(1, 2, :json)
end
test_non_greedy_regexp() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2401
def test_non_greedy_regexp
  draw do
    namespace :api do
      scope(":version", version: /.+/) do
        resources :users, id: /.+?/, format: /json|xml/
      end
    end
  end

  get "/api/1.0/users"
  assert_equal "api/users#index", @response.body
  assert_equal "/api/1.0/users", api_users_path(version: "1.0")

  get "/api/1.0/users.json"
  assert_equal "api/users#index", @response.body
  assert_equal true, @request.format.json?
  assert_equal "/api/1.0/users.json", api_users_path(version: "1.0", format: :json)

  get "/api/1.0/users/first.last"
  assert_equal "api/users#show", @response.body
  assert_equal "first.last", @request.params[:id]
  assert_equal "/api/1.0/users/first.last", api_user_path(version: "1.0", id: "first.last")

  get "/api/1.0/users/first.last.xml"
  assert_equal "api/users#show", @response.body
  assert_equal "first.last", @request.params[:id]
  assert_equal true, @request.format.xml?
  assert_equal "/api/1.0/users/first.last.xml", api_user_path(version: "1.0", id: "first.last", format: :xml)
end
test_normalize_namespaced_matches() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1616
def test_normalize_namespaced_matches
  draw do
    namespace :account do
      get "description", action: :description, as: "description"
    end
  end

  assert_equal "/account/description", account_description_path

  get "/account/description"
  assert_equal "account#description", @response.body
end
test_not_matching_shorthand_with_dynamic_parameters() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1520
def test_not_matching_shorthand_with_dynamic_parameters
  draw do
    ActiveSupport::Deprecation.silence do
      get ":controller/:action/admin"
    end
  end

  get "/finances/overview/admin"
  assert_equal "finances#overview", @response.body
end
test_only_option_should_not_inherit() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2694
def test_only_option_should_not_inherit
  draw do
    scope only: :show do
      namespace :only do
        resources :sectors, only: :index do
          resources :companies
          resource  :leader
        end
      end
    end
  end

  get "/only/sectors/1/companies/2"
  assert_equal "only/companies#show", @response.body
  assert_equal "/only/sectors/1/companies/2", only_sector_company_path(sector_id: "1", id: "2")

  get "/only/sectors/1/leader"
  assert_equal "only/leaders#show", @response.body
  assert_equal "/only/sectors/1/leader", only_sector_leader_path(sector_id: "1")
end
test_only_option_should_override_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2676
def test_only_option_should_override_scope
  draw do
    scope only: :show do
      namespace :only do
        resources :sectors, only: :index
      end
    end
  end

  get "/only/sectors"
  assert_equal "only/sectors#index", @response.body
  assert_equal "/only/sectors", only_sectors_path

  get "/only/sectors/1"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { only_sector_path(id: "1") }
end
test_only_option_should_override_scoped_except() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2774
def test_only_option_should_override_scoped_except
  draw do
    scope except: :index do
      namespace :except do
        resources :sectors, except: [:show, :update, :destroy] do
          resources :managers, only: :index
        end
      end
    end
  end

  get "/except/sectors/1/managers"
  assert_equal "except/managers#index", @response.body
  assert_equal "/except/sectors/1/managers", except_sector_managers_path(sector_id: "1")

  get "/except/sectors/1/managers/2"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { except_sector_manager_path(sector_id: "1", id: "2") }
end
test_only_scope_should_override_parent_except_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2866
def test_only_scope_should_override_parent_except_scope
  draw do
    scope except: :index do
      namespace :except do
        resources :sectors, except: [:show, :update, :destroy] do
          resources :companies do
            scope only: :index do
              resources :departments
            end
          end
        end
      end
    end
  end

  get "/except/sectors/1/companies/2/departments"
  assert_equal "except/departments#index", @response.body
  assert_equal "/except/sectors/1/companies/2/departments", except_sector_company_departments_path(sector_id: "1", company_id: "2")

  get "/except/sectors/1/companies/2/departments/3"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { except_sector_company_department_path(sector_id: "1", company_id: "2", id: "3") }
end
test_only_scope_should_override_parent_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2794
def test_only_scope_should_override_parent_scope
  draw do
    scope only: :show do
      namespace :only do
        resources :sectors, only: :index do
          resources :companies do
            scope only: :index do
              resources :divisions
            end
          end
        end
      end
    end
  end

  get "/only/sectors/1/companies/2/divisions"
  assert_equal "only/divisions#index", @response.body
  assert_equal "/only/sectors/1/companies/2/divisions", only_sector_company_divisions_path(sector_id: "1", company_id: "2")

  get "/only/sectors/1/companies/2/divisions/3"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { only_sector_company_division_path(sector_id: "1", company_id: "2", id: "3") }
end
test_only_should_be_read_from_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2602
def test_only_should_be_read_from_scope
  draw do
    scope only: [:index, :show] do
      namespace :only do
        resources :clubs do
          resources :players
          resource  :chairman
        end
      end
    end
  end

  get "/only/clubs"
  assert_equal "only/clubs#index", @response.body
  assert_equal "/only/clubs", only_clubs_path

  get "/only/clubs/1/edit"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { edit_only_club_path(id: "1") }

  get "/only/clubs/1/players"
  assert_equal "only/players#index", @response.body
  assert_equal "/only/clubs/1/players", only_club_players_path(club_id: "1")

  get "/only/clubs/1/players/2/edit"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { edit_only_club_player_path(club_id: "1", id: "2") }

  get "/only/clubs/1/chairman"
  assert_equal "only/chairmen#show", @response.body
  assert_equal "/only/clubs/1/chairman", only_club_chairman_path(club_id: "1")

  get "/only/clubs/1/chairman/edit"
  assert_equal "Not Found", @response.body
  assert_raise(NoMethodError) { edit_only_club_chairman_path(club_id: "1") }
end
test_openid() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 329
def test_openid
  draw do
    match "openid/login", via: [:get, :post], to: "openid#login"
  end

  get "/openid/login"
  assert_equal "openid#login", @response.body

  post "/openid/login"
  assert_equal "openid#login", @response.body
end
test_optional_scoped_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1653
def test_optional_scoped_path
  draw do
    scope "(:locale)", locale: /en|pl/ do
      resources :descriptions
    end
  end

  assert_equal "/en/descriptions", descriptions_path("en")
  assert_equal "/descriptions", descriptions_path(nil)
  assert_equal "/en/descriptions/1", description_path("en", 1)
  assert_equal "/descriptions/1", description_path(nil, 1)

  get "/en/descriptions"
  assert_equal "descriptions#index", @response.body

  get "/descriptions"
  assert_equal "descriptions#index", @response.body

  get "/en/descriptions/1"
  assert_equal "descriptions#show", @response.body

  get "/descriptions/1"
  assert_equal "descriptions#show", @response.body
end
test_optional_scoped_root() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1641
def test_optional_scoped_root
  draw do
    scope "(:locale)", locale: /en|pl/ do
      root to: "projects#index"
    end
  end

  assert_equal "/en", root_path("en")
  get "/en"
  assert_equal "projects#index", @response.body
end
test_pagemarks() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 368
def test_pagemarks
  draw do
    scope "pagemark", controller: "pagemarks", as: :pagemark do
      get "build", action: "new", as: "new"
      post "create", as: ""
      put  "update"
      get  "remove", action: :destroy, as: :remove
      get "", action: :show, as: :show
    end
  end

  get "/pagemark/build"
  assert_equal "pagemarks#new", @response.body
  assert_equal "/pagemark/build", pagemark_new_path

  post "/pagemark/create"
  assert_equal "pagemarks#create", @response.body
  assert_equal "/pagemark/create", pagemark_path

  put "/pagemark/update"
  assert_equal "pagemarks#update", @response.body
  assert_equal "/pagemark/update", pagemark_update_path

  get "/pagemark/remove"
  assert_equal "pagemarks#destroy", @response.body
  assert_equal "/pagemark/remove", pagemark_remove_path

  get "/pagemark"
  assert_equal "pagemarks#show", @response.body
  assert_equal "/pagemark", pagemark_show_path
end
test_passing_action_parameters_to_url_helpers_is_allowed_if_parameters_are_permitted() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3643
def test_passing_action_parameters_to_url_helpers_is_allowed_if_parameters_are_permitted
  draw do
    root to: "projects#index"
  end
  params = ActionController::Parameters.new(id: "1")
  params.permit!

  assert_equal "/?id=1", root_path(params)
end
test_passing_action_parameters_to_url_helpers_raises_error_if_parameters_are_not_permitted() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3632
def test_passing_action_parameters_to_url_helpers_raises_error_if_parameters_are_not_permitted
  draw do
    root to: "projects#index"
  end
  params = ActionController::Parameters.new(id: "1")

  assert_raises ActionController::UnfilteredParameters do
    root_path(params)
  end
end
test_path_names() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 969
def test_path_names
  draw do
    scope "pt", as: "pt" do
      resources :projects, path_names: { edit: "editar", new: "novo" }, path: "projetos"
      resource  :admin, path_names: { new: "novo", activate: "ativar" }, path: "administrador" do
        put :activate, on: :member
      end
    end
  end

  get "/pt/projetos"
  assert_equal "projects#index", @response.body
  assert_equal "/pt/projetos", pt_projects_path

  get "/pt/projetos/1/editar"
  assert_equal "projects#edit", @response.body
  assert_equal "/pt/projetos/1/editar", edit_pt_project_path(1)

  get "/pt/administrador"
  assert_equal "admins#show", @response.body
  assert_equal "/pt/administrador", pt_admin_path

  get "/pt/administrador/novo"
  assert_equal "admins#new", @response.body
  assert_equal "/pt/administrador/novo", new_pt_admin_path

  put "/pt/administrador/ativar"
  assert_equal "admins#activate", @response.body
  assert_equal "/pt/administrador/ativar", activate_pt_admin_path
end
test_path_option_override() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1000
def test_path_option_override
  draw do
    scope "pt", as: "pt" do
      resources :projects, path_names: { new: "novo" }, path: "projetos" do
        put :close, on: :member, path: "fechar"
        get :open, on: :new, path: "abrir"
      end
    end
  end

  get "/pt/projetos/novo/abrir"
  assert_equal "projects#open", @response.body
  assert_equal "/pt/projetos/novo/abrir", open_new_pt_project_path

  put "/pt/projetos/1/fechar"
  assert_equal "projects#close", @response.body
  assert_equal "/pt/projetos/1/fechar", close_pt_project_path(1)
end
test_path_parameters_is_not_stale() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3020
def test_path_parameters_is_not_stale
  draw do
    scope "/countries/:country", constraints: lambda { |params, req| %w(all France).include?(params[:country]) } do
      get "/",       to: "countries#index"
      get "/cities", to: "countries#cities"
    end

    get "/countries/:country/(*other)", to: redirect { |params, req| params[:other] ? "/countries/all/#{params[:other]}" : "/countries/all" }
  end

  get "/countries/France"
  assert_equal "countries#index", @response.body

  get "/countries/France/cities"
  assert_equal "countries#cities", @response.body

  get "/countries/UK"
  verify_redirect "http://www.example.com/countries/all"

  get "/countries/UK/cities"
  verify_redirect "http://www.example.com/countries/all/cities"
end
test_path_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1850
def test_path_scope
  draw do
    scope path: "api" do
      resource :me
      get "/" => "mes#index"
    end
  end

  get "/api/me"
  assert_equal "mes#show", @response.body
  assert_equal "/api/me", me_path

  get "/api"
  assert_equal "mes#index", @response.body
end
test_project_images() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 716
def test_project_images
  draw do
    resources :projects do
      resources :images, as: :funny_images do
        post :revise, on: :member
      end
    end
  end

  get "/projects/1/images"
  assert_equal "images#index", @response.body
  assert_equal "/projects/1/images", project_funny_images_path(project_id: "1")

  get "/projects/1/images/new"
  assert_equal "images#new", @response.body
  assert_equal "/projects/1/images/new", new_project_funny_image_path(project_id: "1")

  post "/projects/1/images/1/revise"
  assert_equal "images#revise", @response.body
  assert_equal "/projects/1/images/1/revise", revise_project_funny_image_path(project_id: "1", id: "1")
end
test_project_manager() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 694
def test_project_manager
  draw do
    resources :projects do
      resource :manager, as: :super_manager do
        post :fire
      end
    end
  end

  get "/projects/1/manager"
  assert_equal "managers#show", @response.body
  assert_equal "/projects/1/manager", project_super_manager_path(project_id: "1")

  get "/projects/1/manager/new"
  assert_equal "managers#new", @response.body
  assert_equal "/projects/1/manager/new", new_project_super_manager_path(project_id: "1")

  post "/projects/1/manager/fire"
  assert_equal "managers#fire", @response.body
  assert_equal "/projects/1/manager/fire", fire_project_super_manager_path(project_id: "1")
end
test_projects() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 528
def test_projects
  draw do
    resources :projects, controller: :project
  end

  get "/projects"
  assert_equal "project#index", @response.body
  assert_equal "/projects", projects_path

  post "/projects"
  assert_equal "project#create", @response.body

  get "/projects.xml"
  assert_equal "project#index", @response.body
  assert_equal "/projects.xml", projects_path(format: "xml")

  get "/projects/new"
  assert_equal "project#new", @response.body
  assert_equal "/projects/new", new_project_path

  get "/projects/new.xml"
  assert_equal "project#new", @response.body
  assert_equal "/projects/new.xml", new_project_path(format: "xml")

  get "/projects/1"
  assert_equal "project#show", @response.body
  assert_equal "/projects/1", project_path(id: "1")

  get "/projects/1.xml"
  assert_equal "project#show", @response.body
  assert_equal "/projects/1.xml", project_path(id: "1", format: "xml")

  get "/projects/1/edit"
  assert_equal "project#edit", @response.body
  assert_equal "/projects/1/edit", edit_project_path(id: "1")
end
test_projects_attachments() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 641
def test_projects_attachments
  draw do
    resources :projects, controller: :project do
      resources :involvements, :attachments
    end
  end

  get "/projects/1/attachments"
  assert_equal "attachments#index", @response.body
  assert_equal "/projects/1/attachments", project_attachments_path(project_id: "1")
end
test_projects_companies() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 671
def test_projects_companies
  draw do
    resources :projects, controller: :project do
      resources :companies do
        resources :people
        resource  :avatar, controller: :avatar
      end
    end
  end

  get "/projects/1/companies"
  assert_equal "companies#index", @response.body
  assert_equal "/projects/1/companies", project_companies_path(project_id: "1")

  get "/projects/1/companies/1/people"
  assert_equal "people#index", @response.body
  assert_equal "/projects/1/companies/1/people", project_company_people_path(project_id: "1", company_id: "1")

  get "/projects/1/companies/1/avatar"
  assert_equal "avatar#show", @response.body
  assert_equal "/projects/1/companies/1/avatar", project_company_avatar_path(project_id: "1", company_id: "1")
end
test_projects_for_api_app() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 565
def test_projects_for_api_app
  config = ActionDispatch::Routing::RouteSet::Config.new
  config.api_only = true

  self.class.stub_controllers(config) do |routes|
    routes.draw do
      resources :projects, controller: :project
    end
    @app = RoutedRackApp.new routes
  end

  get "/projects"
  assert_equal "project#index", @response.body
  assert_equal "/projects", projects_path

  post "/projects"
  assert_equal "project#create", @response.body

  get "/projects.xml"
  assert_equal "project#index", @response.body
  assert_equal "/projects.xml", projects_path(format: "xml")

  get "/projects/1"
  assert_equal "project#show", @response.body
  assert_equal "/projects/1", project_path(id: "1")

  get "/projects/1.xml"
  assert_equal "project#show", @response.body
  assert_equal "/projects/1.xml", project_path(id: "1", format: "xml")

  get "/projects/1/edit"
  assert_equal "Not Found", @response.body
end
test_projects_involvements() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 611
def test_projects_involvements
  draw do
    resources :projects, controller: :project do
      resources :involvements, :attachments
    end
  end

  get "/projects/1/involvements"
  assert_equal "involvements#index", @response.body
  assert_equal "/projects/1/involvements", project_involvements_path(project_id: "1")

  get "/projects/1/involvements/new"
  assert_equal "involvements#new", @response.body
  assert_equal "/projects/1/involvements/new", new_project_involvement_path(project_id: "1")

  get "/projects/1/involvements/1"
  assert_equal "involvements#show", @response.body
  assert_equal "/projects/1/involvements/1", project_involvement_path(project_id: "1", id: "1")

  put "/projects/1/involvements/1"
  assert_equal "involvements#update", @response.body

  delete "/projects/1/involvements/1"
  assert_equal "involvements#destroy", @response.body

  get "/projects/1/involvements/1/edit"
  assert_equal "involvements#edit", @response.body
  assert_equal "/projects/1/involvements/1/edit", edit_project_involvement_path(project_id: "1", id: "1")
end
test_projects_participants() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 653
def test_projects_participants
  draw do
    resources :projects, controller: :project do
      resources :participants do
        put :update_all, on: :collection
      end
    end
  end

  get "/projects/1/participants"
  assert_equal "participants#index", @response.body
  assert_equal "/projects/1/participants", project_participants_path(project_id: "1")

  put "/projects/1/participants/update_all"
  assert_equal "participants#update_all", @response.body
  assert_equal "/projects/1/participants/update_all", update_all_project_participants_path(project_id: "1")
end
test_projects_people() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 738
def test_projects_people
  draw do
    resources :projects do
      resources :people do
        nested do
          scope "/:access_token" do
            resource :avatar
          end
        end

        member do
          put  :accessible_projects
          post :resend, :generate_new_password
        end
      end
    end
  end

  get "/projects/1/people"
  assert_equal "people#index", @response.body
  assert_equal "/projects/1/people", project_people_path(project_id: "1")

  get "/projects/1/people/1"
  assert_equal "people#show", @response.body
  assert_equal "/projects/1/people/1", project_person_path(project_id: "1", id: "1")

  get "/projects/1/people/1/7a2dec8/avatar"
  assert_equal "avatars#show", @response.body
  assert_equal "/projects/1/people/1/7a2dec8/avatar", project_person_avatar_path(project_id: "1", person_id: "1", access_token: "7a2dec8")

  put "/projects/1/people/1/accessible_projects"
  assert_equal "people#accessible_projects", @response.body
  assert_equal "/projects/1/people/1/accessible_projects", accessible_projects_project_person_path(project_id: "1", id: "1")

  post "/projects/1/people/1/resend"
  assert_equal "people#resend", @response.body
  assert_equal "/projects/1/people/1/resend", resend_project_person_path(project_id: "1", id: "1")

  post "/projects/1/people/1/generate_new_password"
  assert_equal "people#generate_new_password", @response.body
  assert_equal "/projects/1/people/1/generate_new_password", generate_new_password_project_person_path(project_id: "1", id: "1")
end
test_projects_posts() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 795
def test_projects_posts
  draw do
    resources :projects do
      resources :posts do
        get  :archive, :toggle_view, on: :collection
        post :preview, on: :member

        resource :subscription

        resources :comments do
          post :preview, on: :collection
        end
      end
    end
  end

  get "/projects/1/posts"
  assert_equal "posts#index", @response.body
  assert_equal "/projects/1/posts", project_posts_path(project_id: "1")

  get "/projects/1/posts/archive"
  assert_equal "posts#archive", @response.body
  assert_equal "/projects/1/posts/archive", archive_project_posts_path(project_id: "1")

  get "/projects/1/posts/toggle_view"
  assert_equal "posts#toggle_view", @response.body
  assert_equal "/projects/1/posts/toggle_view", toggle_view_project_posts_path(project_id: "1")

  post "/projects/1/posts/1/preview"
  assert_equal "posts#preview", @response.body
  assert_equal "/projects/1/posts/1/preview", preview_project_post_path(project_id: "1", id: "1")

  get "/projects/1/posts/1/subscription"
  assert_equal "subscriptions#show", @response.body
  assert_equal "/projects/1/posts/1/subscription", project_post_subscription_path(project_id: "1", post_id: "1")

  get "/projects/1/posts/1/comments"
  assert_equal "comments#index", @response.body
  assert_equal "/projects/1/posts/1/comments", project_post_comments_path(project_id: "1", post_id: "1")

  post "/projects/1/posts/1/comments/preview"
  assert_equal "comments#preview", @response.body
  assert_equal "/projects/1/posts/1/comments/preview", preview_project_post_comments_path(project_id: "1", post_id: "1")
end
test_projects_status() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 519
def test_projects_status
  draw do
    get "/projects/status(.:format)"
  end

  assert_equal "/projects/status", url_for(controller: "projects", action: "status", only_path: true)
  assert_equal "/projects/status.json", url_for(controller: "projects", action: "status", format: "json", only_path: true)
end
test_projects_with_post_action_and_new_path_on_collection() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 599
def test_projects_with_post_action_and_new_path_on_collection
  draw do
    resources :projects, controller: :project do
      post "new", action: "new", on: :collection, as: :new
    end
  end

  post "/projects/new"
  assert_equal "project#new", @response.body
  assert_equal "/projects/new", new_projects_path
end
test_projects_with_resources_path_names() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 781
def test_projects_with_resources_path_names
  draw do
    resources_path_names correlation_indexes: "info_about_correlation_indexes"

    resources :projects do
      get :correlation_indexes, on: :collection
    end
  end

  get "/projects/info_about_correlation_indexes"
  assert_equal "projects#correlation_indexes", @response.body
  assert_equal "/projects/info_about_correlation_indexes", correlation_indexes_projects_path
end
test_redirect_argument_error() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3141
def test_redirect_argument_error
  routes = Class.new { include ActionDispatch::Routing::Redirection }.new
  assert_raises(ArgumentError) { routes.redirect Object.new }
end
test_redirect_class() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 320
def test_redirect_class
  draw do
    get "youtube_favorites/:youtube_id/:name", to: redirect(YoutubeFavoritesRedirector)
  end

  get "/youtube_favorites/oHg5SJYRHA0/rick-rolld"
  verify_redirect "http://www.youtube.com/watch?v=oHg5SJYRHA0"
end
test_redirect_hash_path_substitution() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 302
def test_redirect_hash_path_substitution
  draw do
    get "stores/:name", to: redirect(subdomain: "stores", path: "/%{name}")
  end

  get "/stores/iernest"
  verify_redirect "http://stores.example.com/iernest"
end
test_redirect_hash_path_substitution_with_catch_all() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 311
def test_redirect_hash_path_substitution_with_catch_all
  draw do
    get "stores/:name(*rest)", to: redirect(subdomain: "stores", path: "/%{name}%{rest}")
  end

  get "/stores/iernest/products"
  verify_redirect "http://stores.example.com/iernest/products"
end
test_redirect_hash_with_domain_and_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 275
def test_redirect_hash_with_domain_and_path
  draw do
    get "documentation", to: redirect(domain: "example-documentation.com", path: "")
  end

  get "/documentation"
  verify_redirect "http://www.example-documentation.com"
end
test_redirect_hash_with_host() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 293
def test_redirect_hash_with_host
  draw do
    get "super_new_documentation", to: redirect(host: "super-docs.com")
  end

  get "/super_new_documentation?section=top"
  verify_redirect "http://super-docs.com/super_new_documentation?section=top"
end
test_redirect_hash_with_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 284
def test_redirect_hash_with_path
  draw do
    get "new_documentation", to: redirect(path: "/documentation/new")
  end

  get "/new_documentation"
  verify_redirect "http://www.example.com/documentation/new"
end
test_redirect_hash_with_subdomain() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 266
def test_redirect_hash_with_subdomain
  draw do
    get "mobile", to: redirect(subdomain: "mobile")
  end

  get "/mobile"
  verify_redirect "http://mobile.example.com/mobile"
end
test_redirect_https() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3009
def test_redirect_https
  draw do
    get "secure", to: redirect("/secure/login")
  end

  with_https do
    get "/secure"
    verify_redirect "https://www.example.com/secure/login"
  end
end
test_redirect_modulo() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 239
def test_redirect_modulo
  draw do
    get "account/modulo/:name", to: redirect("/%{name}s")
  end

  get "/account/modulo/name"
  verify_redirect "http://www.example.com/names"
end
test_redirect_proc() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 248
def test_redirect_proc
  draw do
    get "account/proc/:name", to: redirect { |params, req| "/#{params[:name].pluralize}" }
  end

  get "/account/proc/person"
  verify_redirect "http://www.example.com/people"
end
test_redirect_proc_with_request() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 257
def test_redirect_proc_with_request
  draw do
    get "account/proc_req" => redirect { |params, req| "/#{req.method}" }
  end

  get "/account/proc_req"
  verify_redirect "http://www.example.com/GET"
end
test_redirect_with_complete_url_and_status() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1594
def test_redirect_with_complete_url_and_status
  draw do
    get "account/google" => redirect("http://www.google.com/", status: 302)
  end

  get "/account/google"
  verify_redirect "http://www.google.com/", 302
end
test_redirect_with_failing_constraint() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 99
def test_redirect_with_failing_constraint
  draw do
    get "hi", to: redirect("/foo"), constraints: ::TestRoutingMapper::GrumpyRestrictor
  end

  get "/hi"
  assert_equal 404, status
end
test_redirect_with_passing_constraint() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 108
def test_redirect_with_passing_constraint
  draw do
    get "hi", to: redirect("/foo"), constraints: ->(req) { true }
  end

  get "/hi"
  assert_equal 301, status
end
test_redirect_with_port() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1603
def test_redirect_with_port
  draw do
    get "account/login", to: redirect("/login")
  end

  previous_host, self.host = host, "www.example.com:3000"

  get "/account/login"
  verify_redirect "http://www.example.com:3000/login"
ensure
  self.host = previous_host
end
test_replies() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 840
def test_replies
  draw do
    resources :replies do
      member do
        put :answer, action: :mark_as_answer
        delete :answer, action: :unmark_as_answer
      end
    end
  end

  put "/replies/1/answer"
  assert_equal "replies#mark_as_answer", @response.body

  delete "/replies/1/answer"
  assert_equal "replies#unmark_as_answer", @response.body
end
test_resource_constraints() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1795
def test_resource_constraints
  draw do
    resources :products, constraints: { id: /\d{4}/ } do
      root to: "products#root"
      get :favorite, on: :collection
      resources :images
    end

    resource :dashboard, constraints: { ip: /192\.168\.1\.\d{1,3}/ }
  end

  get "/products/1"
  assert_equal "pass", @response.headers["X-Cascade"]
  get "/products"
  assert_equal "products#root", @response.body
  get "/products/favorite"
  assert_equal "products#favorite", @response.body
  get "/products/0001"
  assert_equal "products#show", @response.body

  get "/products/1/images"
  assert_equal "pass", @response.headers["X-Cascade"]
  get "/products/0001/images"
  assert_equal "images#index", @response.body
  get "/products/0001/images/0001"
  assert_equal "images#show", @response.body

  get "/dashboard", headers: { "REMOTE_ADDR" => "10.0.0.100" }
  assert_equal "pass", @response.headers["X-Cascade"]
  get "/dashboard", headers: { "REMOTE_ADDR" => "192.168.1.100" }
  assert_equal "dashboards#show", @response.body
end
test_resource_constraints_are_pushed_to_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2968
def test_resource_constraints_are_pushed_to_scope
  draw do
    namespace :wiki do
      resources :articles, id: /[^\/]+/ do
        resources :comments, only: [:create, :new]
      end
    end
  end

  get "/wiki/articles/Ruby_on_Quails_3.0"
  assert_equal "wiki/articles#show", @response.body
  assert_equal "/wiki/articles/Ruby_on_Quails_3.0", wiki_article_path(id: "Ruby_on_Quails_3.0")

  get "/wiki/articles/Ruby_on_Quails_3.0/comments/new"
  assert_equal "wiki/comments#new", @response.body
  assert_equal "/wiki/articles/Ruby_on_Quails_3.0/comments/new", new_wiki_article_comment_path(article_id: "Ruby_on_Quails_3.0")

  post "/wiki/articles/Ruby_on_Quails_3.0/comments"
  assert_equal "wiki/comments#create", @response.body
  assert_equal "/wiki/articles/Ruby_on_Quails_3.0/comments", wiki_article_comments_path(article_id: "Ruby_on_Quails_3.0")
end
test_resource_does_not_modify_passed_options() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 957
def test_resource_does_not_modify_passed_options
  options = { id: /.+?/, format: /json|xml/ }
  draw { resource :user, options }
  assert_equal({ id: /.+?/, format: /json|xml/ }, options)
end
test_resource_merges_options_from_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1978
def test_resource_merges_options_from_scope
  draw do
    scope only: :show do
      resource :account
    end
  end

  assert_raise(NoMethodError) { new_account_path }

  get "/account/new"
  assert_equal 404, status
end
test_resource_new_actions() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1925
def test_resource_new_actions
  draw do
    resources :replies do
      new do
        post :preview
      end
    end

    scope "pt", as: "pt" do
      resources :projects, path_names: { new: "novo" }, path: "projetos" do
        post :preview, on: :new
      end

      resource :admin, path_names: { new: "novo" }, path: "administrador" do
        post :preview, on: :new
      end

      resources :products, path_names: { new: "novo" } do
        new do
          post :preview
        end
      end
    end

    resource :profile do
      new do
        post :preview
      end
    end
  end

  assert_equal "/replies/new/preview", preview_new_reply_path
  assert_equal "/pt/projetos/novo/preview", preview_new_pt_project_path
  assert_equal "/pt/administrador/novo/preview", preview_new_pt_admin_path
  assert_equal "/pt/products/novo/preview", preview_new_pt_product_path
  assert_equal "/profile/new/preview", preview_new_profile_path

  post "/replies/new/preview"
  assert_equal "replies#preview", @response.body

  post "/pt/projetos/novo/preview"
  assert_equal "projects#preview", @response.body

  post "/pt/administrador/novo/preview"
  assert_equal "admins#preview", @response.body

  post "/pt/products/novo/preview"
  assert_equal "products#preview", @response.body

  post "/profile/new/preview"
  assert_equal "profiles#preview", @response.body
end
test_resource_routes_only_create_update_destroy() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 886
def test_resource_routes_only_create_update_destroy
  draw do
    resource  :past, only: :destroy
    resource  :present, only: :update
    resource  :future, only: :create
  end

  delete "/past"
  assert_equal "pasts#destroy", @response.body
  assert_equal "/past", past_path

  patch "/present"
  assert_equal "presents#update", @response.body
  assert_equal "/present", present_path

  put "/present"
  assert_equal "presents#update", @response.body
  assert_equal "/present", present_path

  post "/future"
  assert_equal "futures#create", @response.body
  assert_equal "/future", future_path
end
test_resource_routes_with_dashes_in_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3398
def test_resource_routes_with_dashes_in_path
  draw do
    resources :photos, only: [:show] do
      get "user-favorites", on: :collection
      get "preview-photo", on: :member
      get "summary-text"
    end
  end

  get "/photos/user-favorites"
  assert_equal "photos#user_favorites", @response.body
  assert_equal "/photos/user-favorites", user_favorites_photos_path

  get "/photos/1/preview-photo"
  assert_equal "photos#preview_photo", @response.body
  assert_equal "/photos/1/preview-photo", preview_photo_photo_path("1")

  get "/photos/1/summary-text"
  assert_equal "photos#summary_text", @response.body
  assert_equal "/photos/1/summary-text", photo_summary_text_path("1")

  get "/photos/1"
  assert_equal "photos#show", @response.body
  assert_equal "/photos/1", photo_path("1")
end
test_resource_routes_with_only_and_except() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 857
def test_resource_routes_with_only_and_except
  draw do
    resources :posts, only: [:index, :show] do
      resources :comments, except: :destroy
    end
  end

  get "/posts"
  assert_equal "posts#index", @response.body
  assert_equal "/posts", posts_path

  get "/posts/1"
  assert_equal "posts#show", @response.body
  assert_equal "/posts/1", post_path(id: 1)

  get "/posts/1/comments"
  assert_equal "comments#index", @response.body
  assert_equal "/posts/1/comments", post_comments_path(post_id: 1)

  post "/posts"
  assert_equal "pass", @response.headers["X-Cascade"]
  put "/posts/1"
  assert_equal "pass", @response.headers["X-Cascade"]
  delete "/posts/1"
  assert_equal "pass", @response.headers["X-Cascade"]
  delete "/posts/1/comments"
  assert_equal "pass", @response.headers["X-Cascade"]
end
test_resource_where_as_is_empty() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3576
def test_resource_where_as_is_empty
  draw do
    resource :post, as: ""

    scope "post", as: "post" do
      resource :comment, as: ""
    end
  end

  assert_equal "/post/new", new_path
  assert_equal "/post/comment/new", new_post_path
end
test_resource_with_slugs_in_ids() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 933
def test_resource_with_slugs_in_ids
  draw do
    resources :posts
  end

  get "/posts/quails-rocks"
  assert_equal "posts#show", @response.body
  assert_equal "/posts/quails-rocks", post_path(id: "quails-rocks")
end
test_resources_are_not_pluralized() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2890
def test_resources_are_not_pluralized
  draw do
    namespace :transport do
      resources :taxis
    end
  end

  get "/transport/taxis"
  assert_equal "transport/taxis#index", @response.body
  assert_equal "/transport/taxis", transport_taxis_path

  get "/transport/taxis/new"
  assert_equal "transport/taxis#new", @response.body
  assert_equal "/transport/taxis/new", new_transport_taxi_path

  post "/transport/taxis"
  assert_equal "transport/taxis#create", @response.body

  get "/transport/taxis/1"
  assert_equal "transport/taxis#show", @response.body
  assert_equal "/transport/taxis/1", transport_taxi_path(id: "1")

  get "/transport/taxis/1/edit"
  assert_equal "transport/taxis#edit", @response.body
  assert_equal "/transport/taxis/1/edit", edit_transport_taxi_path(id: "1")

  put "/transport/taxis/1"
  assert_equal "transport/taxis#update", @response.body

  delete "/transport/taxis/1"
  assert_equal "transport/taxis#destroy", @response.body
end
test_resources_controller_name_is_not_pluralized() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2456
def test_resources_controller_name_is_not_pluralized
  draw do
    resources :content
  end

  get "/content"
  assert_equal "content#index", @response.body
end
test_resources_does_not_modify_passed_options() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 963
def test_resources_does_not_modify_passed_options
  options = { id: /.+?/, format: /json|xml/ }
  draw { resources :users, options }
  assert_equal({ id: /.+?/, format: /json|xml/ }, options)
end
test_resources_for_uncountable_names() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 943
def test_resources_for_uncountable_names
  draw do
    resources :sheep do
      get "_it", on: :member
    end
  end

  assert_equal "/sheep", sheep_index_path
  assert_equal "/sheep/1", sheep_path(1)
  assert_equal "/sheep/new", new_sheep_path
  assert_equal "/sheep/1/edit", edit_sheep_path(1)
  assert_equal "/sheep/1/_it", _it_sheep_path(1)
end
test_resources_merges_options_from_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1991
def test_resources_merges_options_from_scope
  draw do
    scope only: [:index, :show] do
      resources :products do
        resources :images
      end
    end
  end

  assert_raise(NoMethodError) { edit_product_path("1") }

  get "/products/1/edit"
  assert_equal 404, status

  assert_raise(NoMethodError) { edit_product_image_path("1", "2") }

  post "/products/1/images/2/edit"
  assert_equal 404, status
end
test_resources_path_can_be_a_symbol() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2990
def test_resources_path_can_be_a_symbol
  draw do
    resources :wiki_pages, path: :pages
    resource :wiki_account, path: :my_account
  end

  get "/pages"
  assert_equal "wiki_pages#index", @response.body
  assert_equal "/pages", wiki_pages_path

  get "/pages/Ruby_on_Quails"
  assert_equal "wiki_pages#show", @response.body
  assert_equal "/pages/Ruby_on_Quails", wiki_page_path(id: "Ruby_on_Quails")

  get "/my_account"
  assert_equal "wiki_accounts#show", @response.body
  assert_equal "/my_account", wiki_account_path
end
test_resources_routes_only_create_update_destroy() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 910
def test_resources_routes_only_create_update_destroy
  draw do
    resources :relationships, only: [:create, :destroy]
    resources :friendships,   only: [:update]
  end

  post "/relationships"
  assert_equal "relationships#create", @response.body
  assert_equal "/relationships", relationships_path

  delete "/relationships/1"
  assert_equal "relationships#destroy", @response.body
  assert_equal "/relationships/1", relationship_path(1)

  patch "/friendships/1"
  assert_equal "friendships#update", @response.body
  assert_equal "/friendships/1", friendship_path(1)

  put "/friendships/1"
  assert_equal "friendships#update", @response.body
  assert_equal "/friendships/1", friendship_path(1)
end
test_resources_where_as_is_empty() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3589
def test_resources_where_as_is_empty
  draw do
    resources :posts, as: ""

    scope "posts", as: "posts" do
      resources :comments, as: ""
    end
  end

  assert_equal "/posts/new", new_path
  assert_equal "/posts/comments/new", new_posts_path
end
test_resources_with_format_false_from_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1391
def test_resources_with_format_false_from_scope
  draw do
    scope format: false do
      resources :posts
      resource :user
    end
  end

  get "/posts"
  assert_response :success
  assert_equal "posts#index", @response.body
  assert_equal "/posts", posts_path

  get "/posts.html"
  assert_response :not_found
  assert_equal "Not Found", @response.body
  assert_equal "/posts?format=html", posts_path(format: "html")

  get "/user"
  assert_response :success
  assert_equal "users#show", @response.body
  assert_equal "/user", user_path

  get "/user.html"
  assert_response :not_found
  assert_equal "Not Found", @response.body
  assert_equal "/user?format=html", user_path(format: "html")
end
test_root() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1334
def test_root
  draw do
    root to: "projects#index"
  end

  assert_equal "/", root_path
  get "/"
  assert_equal "projects#index", @response.body
end
test_root_in_deeply_nested_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3243
def test_root_in_deeply_nested_scope
  draw do
    resources :posts, only: [:index, :show] do
      namespace :admin do
        root to: "index#index"
      end
    end
  end

  get "/posts/1/admin"
  assert_equal "admin/index#index", @response.body
  assert_equal "/posts/1/admin", post_admin_root_path(post_id: "1")
end
test_root_works_in_the_resources_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1828
def test_root_works_in_the_resources_scope
  draw do
    resources :products do
      root to: "products#root"
    end
  end

  get "/products"
  assert_equal "products#root", @response.body
  assert_equal "/products", products_root_path
end
test_route_defined_in_resources_scope_level() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3095
def test_route_defined_in_resources_scope_level
  draw do
    resources :customers do
      get "export"
    end
  end

  get "/customers/1/export"
  assert_equal "customers#export", @response.body
  assert_equal "/customers/1/export", customer_export_path(customer_id: "1")
end
test_route_with_dashes_in_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3378
def test_route_with_dashes_in_path
  draw do
    get "/contact-us", to: "pages#contact_us"
  end

  get "/contact-us"
  assert_equal "pages#contact_us", @response.body
  assert_equal "/contact-us", contact_us_path
end
test_router_removes_invalid_conditions() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2547
def test_router_removes_invalid_conditions
  draw do
    scope constraints: { id: /\d+/ } do
      get "/tickets", to: "tickets#index", as: :tickets
    end
  end

  get "/tickets"
  assert_equal "tickets#index", @response.body
  assert_equal "/tickets", tickets_path
end
test_scope_as_is_copied_to_shallow_prefix() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3540
def test_scope_as_is_copied_to_shallow_prefix
  draw do
    scope as: "foo" do
      resources :posts do
        resources :comments, shallow: true
      end
    end
  end

  assert_equal "/comments/1", foo_comment_path("1")
end
test_scope_path_is_copied_to_shallow_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3528
def test_scope_path_is_copied_to_shallow_path
  draw do
    scope path: "foo" do
      resources :posts do
        resources :comments, shallow: true
      end
    end
  end

  assert_equal "/foo/comments/1", comment_path("1")
end
test_scope_shallow_path_is_not_overwritten_by_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3564
def test_scope_shallow_path_is_not_overwritten_by_path
  draw do
    scope path: "foo", shallow_path: "bar" do
      resources :posts do
        resources :comments, shallow: true
      end
    end
  end

  assert_equal "/bar/comments/1", comment_path("1")
end
test_scope_shallow_prefix_is_not_overwritten_by_as() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3552
def test_scope_shallow_prefix_is_not_overwritten_by_as
  draw do
    scope as: "foo", shallow_prefix: "bar" do
      resources :posts do
        resources :comments, shallow: true
      end
    end
  end

  assert_equal "/comments/1", bar_comment_path("1")
end
test_scope_where_as_is_empty() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3602
def test_scope_where_as_is_empty
  draw do
    scope "post", as: "" do
      resource :user
      resources :comments
    end
  end

  assert_equal "/post/user/new", new_user_path
  assert_equal "/post/comments/new", new_comment_path
end
test_scope_with_format_option() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1369
def test_scope_with_format_option
  draw do
    get "direct/index", as: :no_format_direct, format: false

    scope format: false do
      get "scoped/index", as: :no_format_scoped
    end
  end

  assert_equal "/direct/index", no_format_direct_path
  assert_equal "/direct/index?format=html", no_format_direct_path(format: "html")

  assert_equal "/scoped/index", no_format_scoped_path
  assert_equal "/scoped/index?format=html", no_format_scoped_path(format: "html")

  get "/scoped/index"
  assert_equal "scoped#index", @response.body

  get "/scoped/index.html"
  assert_equal "Not Found", @response.body
end
test_scoped_controller_with_namespace_and_action() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1557
def test_scoped_controller_with_namespace_and_action
  draw do
    namespace :account do
      ActiveSupport::Deprecation.silence do
        get ":action/callback", action: /twitter|github/, controller: "callbacks", as: :callback
      end
    end
  end

  assert_equal "/account/twitter/callback", account_callback_path("twitter")
  get "/account/twitter/callback"
  assert_equal "account/callbacks#twitter", @response.body

  get "/account/whatever/callback"
  assert_equal "Not Found", @response.body
end
test_scoped_root() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1344
def test_scoped_root
  draw do
    scope "(:locale)", locale: /en|pl/ do
      root to: "projects#index"
    end
  end

  assert_equal "/en", root_path(locale: "en")
  get "/en"
  assert_equal "projects#index", @response.body
end
test_scoped_root_as_name() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1356
def test_scoped_root_as_name
  draw do
    scope "(:locale)", locale: /en|pl/ do
      root to: "projects#index", as: "projects"
    end
  end

  assert_equal "/en", projects_path(locale: "en")
  assert_equal "/", projects_path
  get "/en"
  assert_equal "projects#index", @response.body
end
test_session_info_nested_singleton_resource() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 213
def test_session_info_nested_singleton_resource
  draw do
    resource :session do
      resource :info
    end
  end

  get "/session/info"
  assert_equal "infos#show", @response.body
  assert_equal "/session/info", session_info_path
end
test_session_singleton_resource() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 141
def test_session_singleton_resource
  draw do
    resource :session do
      get :create
      post :reset
    end
  end

  get "/session"
  assert_equal "sessions#create", @response.body
  assert_equal "/session", session_path

  post "/session"
  assert_equal "sessions#create", @response.body

  put "/session"
  assert_equal "sessions#update", @response.body

  delete "/session"
  assert_equal "sessions#destroy", @response.body

  get "/session/new"
  assert_equal "sessions#new", @response.body
  assert_equal "/session/new", new_session_path

  get "/session/edit"
  assert_equal "sessions#edit", @response.body
  assert_equal "/session/edit", edit_session_path

  post "/session/reset"
  assert_equal "sessions#reset", @response.body
  assert_equal "/session/reset", reset_session_path
end
test_session_singleton_resource_for_api_app() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 175
def test_session_singleton_resource_for_api_app
  config = ActionDispatch::Routing::RouteSet::Config.new
  config.api_only = true

  self.class.stub_controllers(config) do |routes|
    routes.draw do
      resource :session do
        get :create
        post :reset
      end
    end
    @app = RoutedRackApp.new routes
  end

  get "/session"
  assert_equal "sessions#create", @response.body
  assert_equal "/session", session_path

  post "/session"
  assert_equal "sessions#create", @response.body

  put "/session"
  assert_equal "sessions#update", @response.body

  delete "/session"
  assert_equal "sessions#destroy", @response.body

  post "/session/reset"
  assert_equal "sessions#reset", @response.body
  assert_equal "/session/reset", reset_session_path

  get "/session/new"
  assert_equal "Not Found", @response.body

  get "/session/edit"
  assert_equal "Not Found", @response.body
end
test_shallow_custom_param() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3295
def test_shallow_custom_param
  draw do
    resources :orders do
      constraints download: /[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}/ do
        resources :downloads, param: :download, shallow: true
      end
    end
  end

  get "/downloads/0c0c0b68-d24b-11e1-a861-001ff3fffe6f.zip"
  assert_equal "downloads#show", @response.body
  assert_equal "0c0c0b68-d24b-11e1-a861-001ff3fffe6f", @request.params[:download]
end
test_shallow_deeply_nested_resources() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2171
def test_shallow_deeply_nested_resources
  draw do
    resources :blogs do
      resources :posts do
        resources :comments, shallow: true
      end
    end
  end

  get "/comments/1"
  assert_equal "comments#show", @response.body

  assert_equal "/comments/1", comment_path("1")
  assert_equal "/blogs/new", new_blog_path
  assert_equal "/blogs/1/posts/new", new_blog_post_path(blog_id: 1)
  assert_equal "/blogs/1/posts/2/comments/new", new_blog_post_comment_path(blog_id: 1, post_id: 2)
end
test_shallow_nested_resources() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2011
def test_shallow_nested_resources
  draw do
    shallow do
      namespace :api do
        resources :teams do
          resources :players
          resource :captain
        end
      end
    end

    resources :threads, shallow: true do
      resource :owner
      resources :messages do
        resources :comments do
          member do
            post :preview
          end
        end
      end
    end
  end

  get "/api/teams"
  assert_equal "api/teams#index", @response.body
  assert_equal "/api/teams", api_teams_path

  get "/api/teams/new"
  assert_equal "api/teams#new", @response.body
  assert_equal "/api/teams/new", new_api_team_path

  get "/api/teams/1"
  assert_equal "api/teams#show", @response.body
  assert_equal "/api/teams/1", api_team_path(id: "1")

  get "/api/teams/1/edit"
  assert_equal "api/teams#edit", @response.body
  assert_equal "/api/teams/1/edit", edit_api_team_path(id: "1")

  get "/api/teams/1/players"
  assert_equal "api/players#index", @response.body
  assert_equal "/api/teams/1/players", api_team_players_path(team_id: "1")

  get "/api/teams/1/players/new"
  assert_equal "api/players#new", @response.body
  assert_equal "/api/teams/1/players/new", new_api_team_player_path(team_id: "1")

  get "/api/players/2"
  assert_equal "api/players#show", @response.body
  assert_equal "/api/players/2", api_player_path(id: "2")

  get "/api/players/2/edit"
  assert_equal "api/players#edit", @response.body
  assert_equal "/api/players/2/edit", edit_api_player_path(id: "2")

  get "/api/teams/1/captain"
  assert_equal "api/captains#show", @response.body
  assert_equal "/api/teams/1/captain", api_team_captain_path(team_id: "1")

  get "/api/teams/1/captain/new"
  assert_equal "api/captains#new", @response.body
  assert_equal "/api/teams/1/captain/new", new_api_team_captain_path(team_id: "1")

  get "/api/teams/1/captain/edit"
  assert_equal "api/captains#edit", @response.body
  assert_equal "/api/teams/1/captain/edit", edit_api_team_captain_path(team_id: "1")

  get "/threads"
  assert_equal "threads#index", @response.body
  assert_equal "/threads", threads_path

  get "/threads/new"
  assert_equal "threads#new", @response.body
  assert_equal "/threads/new", new_thread_path

  get "/threads/1"
  assert_equal "threads#show", @response.body
  assert_equal "/threads/1", thread_path(id: "1")

  get "/threads/1/edit"
  assert_equal "threads#edit", @response.body
  assert_equal "/threads/1/edit", edit_thread_path(id: "1")

  get "/threads/1/owner"
  assert_equal "owners#show", @response.body
  assert_equal "/threads/1/owner", thread_owner_path(thread_id: "1")

  get "/threads/1/messages"
  assert_equal "messages#index", @response.body
  assert_equal "/threads/1/messages", thread_messages_path(thread_id: "1")

  get "/threads/1/messages/new"
  assert_equal "messages#new", @response.body
  assert_equal "/threads/1/messages/new", new_thread_message_path(thread_id: "1")

  get "/messages/2"
  assert_equal "messages#show", @response.body
  assert_equal "/messages/2", message_path(id: "2")

  get "/messages/2/edit"
  assert_equal "messages#edit", @response.body
  assert_equal "/messages/2/edit", edit_message_path(id: "2")

  get "/messages/2/comments"
  assert_equal "comments#index", @response.body
  assert_equal "/messages/2/comments", message_comments_path(message_id: "2")

  get "/messages/2/comments/new"
  assert_equal "comments#new", @response.body
  assert_equal "/messages/2/comments/new", new_message_comment_path(message_id: "2")

  get "/comments/3"
  assert_equal "comments#show", @response.body
  assert_equal "/comments/3", comment_path(id: "3")

  get "/comments/3/edit"
  assert_equal "comments#edit", @response.body
  assert_equal "/comments/3/edit", edit_comment_path(id: "3")

  post "/comments/3/preview"
  assert_equal "comments#preview", @response.body
  assert_equal "/comments/3/preview", preview_comment_path(id: "3")
end
test_shallow_nested_resources_inside_resource() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2135
def test_shallow_nested_resources_inside_resource
  draw do
    resource :membership, shallow: true do
      resources :cards
    end
  end

  get "/membership/cards"
  assert_equal "cards#index", @response.body
  assert_equal "/membership/cards", membership_cards_path

  get "/membership/cards/new"
  assert_equal "cards#new", @response.body
  assert_equal "/membership/cards/new", new_membership_card_path

  post "/membership/cards"
  assert_equal "cards#create", @response.body

  get "/cards/1"
  assert_equal "cards#show", @response.body
  assert_equal "/cards/1", card_path("1")

  get "/cards/1/edit"
  assert_equal "cards#edit", @response.body
  assert_equal "/cards/1/edit", edit_card_path("1")

  put "/cards/1"
  assert_equal "cards#update", @response.body

  patch "/cards/1"
  assert_equal "cards#update", @response.body

  delete "/cards/1"
  assert_equal "cards#destroy", @response.body
end
test_shallow_nested_resources_within_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2211
def test_shallow_nested_resources_within_scope
  draw do
    scope "/hello" do
      shallow do
        resources :notes do
          resources :trackbacks
        end
      end
    end
  end

  get "/hello/notes/1/trackbacks"
  assert_equal "trackbacks#index", @response.body
  assert_equal "/hello/notes/1/trackbacks", note_trackbacks_path(note_id: 1)

  get "/hello/notes/1/edit"
  assert_equal "notes#edit", @response.body
  assert_equal "/hello/notes/1/edit", edit_note_path(id: "1")

  get "/hello/notes/1/trackbacks/new"
  assert_equal "trackbacks#new", @response.body
  assert_equal "/hello/notes/1/trackbacks/new", new_note_trackback_path(note_id: 1)

  get "/hello/trackbacks/1"
  assert_equal "trackbacks#show", @response.body
  assert_equal "/hello/trackbacks/1", trackback_path(id: "1")

  get "/hello/trackbacks/1/edit"
  assert_equal "trackbacks#edit", @response.body
  assert_equal "/hello/trackbacks/1/edit", edit_trackback_path(id: "1")

  put "/hello/trackbacks/1"
  assert_equal "trackbacks#update", @response.body

  post "/hello/notes/1/trackbacks"
  assert_equal "trackbacks#create", @response.body

  delete "/hello/trackbacks/1"
  assert_equal "trackbacks#destroy", @response.body

  get "/hello/notes"
  assert_equal "notes#index", @response.body

  post "/hello/notes"
  assert_equal "notes#create", @response.body

  get "/hello/notes/new"
  assert_equal "notes#new", @response.body
  assert_equal "/hello/notes/new", new_note_path

  get "/hello/notes/1"
  assert_equal "notes#show", @response.body
  assert_equal "/hello/notes/1", note_path(id: 1)

  put "/hello/notes/1"
  assert_equal "notes#update", @response.body

  delete "/hello/notes/1"
  assert_equal "notes#destroy", @response.body
end
test_shallow_nested_routes_ignore_module() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2383
def test_shallow_nested_routes_ignore_module
  draw do
    scope module: :api do
      resources :errors, shallow: true do
        resources :notices
      end
    end
  end

  get "/errors/1/notices"
  assert_equal "api/notices#index", @response.body
  assert_equal "/errors/1/notices", error_notices_path(error_id: "1")

  get "/notices/1"
  assert_equal "api/notices#show", @response.body
  assert_equal "/notices/1", notice_path(id: "1")
end
test_shallow_option_nested_resources_within_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2272
def test_shallow_option_nested_resources_within_scope
  draw do
    scope "/hello" do
      resources :notes, shallow: true do
        resources :trackbacks
      end
    end
  end

  get "/hello/notes/1/trackbacks"
  assert_equal "trackbacks#index", @response.body
  assert_equal "/hello/notes/1/trackbacks", note_trackbacks_path(note_id: 1)

  get "/hello/notes/1/edit"
  assert_equal "notes#edit", @response.body
  assert_equal "/hello/notes/1/edit", edit_note_path(id: "1")

  get "/hello/notes/1/trackbacks/new"
  assert_equal "trackbacks#new", @response.body
  assert_equal "/hello/notes/1/trackbacks/new", new_note_trackback_path(note_id: 1)

  get "/hello/trackbacks/1"
  assert_equal "trackbacks#show", @response.body
  assert_equal "/hello/trackbacks/1", trackback_path(id: "1")

  get "/hello/trackbacks/1/edit"
  assert_equal "trackbacks#edit", @response.body
  assert_equal "/hello/trackbacks/1/edit", edit_trackback_path(id: "1")

  put "/hello/trackbacks/1"
  assert_equal "trackbacks#update", @response.body

  post "/hello/notes/1/trackbacks"
  assert_equal "trackbacks#create", @response.body

  delete "/hello/trackbacks/1"
  assert_equal "trackbacks#destroy", @response.body

  get "/hello/notes"
  assert_equal "notes#index", @response.body

  post "/hello/notes"
  assert_equal "notes#create", @response.body

  get "/hello/notes/new"
  assert_equal "notes#new", @response.body
  assert_equal "/hello/notes/new", new_note_path

  get "/hello/notes/1"
  assert_equal "notes#show", @response.body
  assert_equal "/hello/notes/1", note_path(id: 1)

  put "/hello/notes/1"
  assert_equal "notes#update", @response.body

  delete "/hello/notes/1"
  assert_equal "notes#destroy", @response.body
end
test_shallow_path_and_prefix_are_not_added_to_non_shallow_routes() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3468
def test_shallow_path_and_prefix_are_not_added_to_non_shallow_routes
  draw do
    scope shallow_path: "projects", shallow_prefix: "project" do
      resources :projects do
        resources :files, controller: "project_files", shallow: true
      end
    end
  end

  get "/projects"
  assert_equal "projects#index", @response.body
  assert_equal "/projects", projects_path

  get "/projects/new"
  assert_equal "projects#new", @response.body
  assert_equal "/projects/new", new_project_path

  post "/projects"
  assert_equal "projects#create", @response.body

  get "/projects/1"
  assert_equal "projects#show", @response.body
  assert_equal "/projects/1", project_path("1")

  get "/projects/1/edit"
  assert_equal "projects#edit", @response.body
  assert_equal "/projects/1/edit", edit_project_path("1")

  patch "/projects/1"
  assert_equal "projects#update", @response.body

  delete "/projects/1"
  assert_equal "projects#destroy", @response.body

  get "/projects/1/files"
  assert_equal "project_files#index", @response.body
  assert_equal "/projects/1/files", project_files_path("1")

  get "/projects/1/files/new"
  assert_equal "project_files#new", @response.body
  assert_equal "/projects/1/files/new", new_project_file_path("1")

  post "/projects/1/files"
  assert_equal "project_files#create", @response.body

  get "/projects/files/2"
  assert_equal "project_files#show", @response.body
  assert_equal "/projects/files/2", project_file_path("2")

  get "/projects/files/2/edit"
  assert_equal "project_files#edit", @response.body
  assert_equal "/projects/files/2/edit", edit_project_file_path("2")

  patch "/projects/files/2"
  assert_equal "project_files#update", @response.body

  delete "/projects/files/2"
  assert_equal "project_files#destroy", @response.body
end
test_shallow_path_inside_namespace_is_not_added_twice() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3424
def test_shallow_path_inside_namespace_is_not_added_twice
  draw do
    namespace :admin do
      shallow do
        resources :posts do
          resources :comments
        end
      end
    end
  end

  get "/admin/posts/1/comments"
  assert_equal "admin/comments#index", @response.body
  assert_equal "/admin/posts/1/comments", admin_post_comments_path("1")
end
test_shorthand_route_with_dashes_in_path() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3388
def test_shorthand_route_with_dashes_in_path
  draw do
    get "/about-us/index"
  end

  get "/about-us/index"
  assert_equal "about_us#index", @response.body
  assert_equal "/about-us/index", about_us_index_path
end
test_singleton_resources_are_not_singularized() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2923
def test_singleton_resources_are_not_singularized
  draw do
    namespace :medical do
      resource :taxis
    end
  end

  get "/medical/taxis/new"
  assert_equal "medical/taxis#new", @response.body
  assert_equal "/medical/taxis/new", new_medical_taxis_path

  post "/medical/taxis"
  assert_equal "medical/taxis#create", @response.body

  get "/medical/taxis"
  assert_equal "medical/taxis#show", @response.body
  assert_equal "/medical/taxis", medical_taxis_path

  get "/medical/taxis/edit"
  assert_equal "medical/taxis#edit", @response.body
  assert_equal "/medical/taxis/edit", edit_medical_taxis_path

  put "/medical/taxis"
  assert_equal "medical/taxis#update", @response.body

  delete "/medical/taxis"
  assert_equal "medical/taxis#destroy", @response.body
end
test_sprockets() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1019
def test_sprockets
  draw do
    get "sprockets.js" => ::TestRoutingMapper::SprocketsApp
  end

  get "/sprockets.js"
  assert_equal "javascripts", @response.body
end
test_symbol_scope() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1866
def test_symbol_scope
  draw do
    scope path: "api" do
      scope :v2 do
        resource :me, as: "v2_me"
        get "/" => "mes#index"
      end

      scope :v3, :admin do
        resource :me, as: "v3_me"
      end
    end
  end

  get "/api/v2/me"
  assert_equal "mes#show", @response.body
  assert_equal "/api/v2/me", v2_me_path

  get "/api/v2"
  assert_equal "mes#index", @response.body

  get "/api/v3/admin/me"
  assert_equal "mes#show", @response.body
end
test_trailing_slash() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3360
def test_trailing_slash
  draw do
    resources :streams
  end

  get "/streams"
  assert @response.ok?, "route without trailing slash should work"

  get "/streams/"
  assert @response.ok?, "route with trailing slash should work"

  get "/streams?foobar"
  assert @response.ok?, "route without trailing slash and with QUERY_STRING should work"

  get "/streams/?foobar"
  assert @response.ok?, "route with trailing slash and with QUERY_STRING should work"
end
test_update_person_route() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1028
def test_update_person_route
  draw do
    get "people/:id/update", to: "people#update", as: :update_person
  end

  get "/people/1/update"
  assert_equal "people#update", @response.body

  assert_equal "/people/1/update", update_person_path(id: 1)
end
test_update_project_person() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1039
def test_update_project_person
  draw do
    get "/projects/:project_id/people/:id/update", to: "people#update", as: :update_project_person
  end

  get "/projects/1/people/2/update"
  assert_equal "people#update", @response.body

  assert_equal "/projects/1/people/2/update", update_project_person_path(project_id: 1, id: 2)
end
test_url_for_does_not_modify_controller() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 489
def test_url_for_does_not_modify_controller
  draw do
    get "/projects/status(.:format)"
  end

  controller = "/projects"
  options = { controller: controller, action: "status", only_path: true }
  url = url_for(options)

  assert_equal "/projects/status", url
  assert_equal "/projects", controller
end
test_url_for_with_no_side_effects() click to toggle source

tests the use of dup in url_for

# File actionpack/test/dispatch/routing_test.rb, line 474
def test_url_for_with_no_side_effects
  draw do
    get "/projects/status(.:format)"
  end

  # without dup, additional (and possibly unwanted) values will be present in the options (eg. :host)
  original_options = { controller: "projects", action: "status" }
  options = original_options.dup

  url_for options

  # verify that the options passed in have not changed from the original ones
  assert_equal original_options, options
end
test_url_generator_for_generic_route() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1891
def test_url_generator_for_generic_route
  draw do
    ActiveSupport::Deprecation.silence do
      get "whatever/:controller(/:action(/:id))"
    end
  end

  get "/whatever/foo/bar"
  assert_equal "foo#bar", @response.body

  assert_equal "http://www.example.com/whatever/foo/bar/1",
    url_for(controller: "foo", action: "bar", id: 1)
end
test_url_generator_for_namespaced_generic_route() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 1905
def test_url_generator_for_namespaced_generic_route
  draw do
    ActiveSupport::Deprecation.silence do
      get "whatever/:controller(/:action(/:id))", id: /\d+/
    end
  end

  get "/whatever/foo/bar/show"
  assert_equal "foo/bar#show", @response.body

  get "/whatever/foo/bar/show/1"
  assert_equal "foo/bar#show", @response.body

  assert_equal "http://www.example.com/whatever/foo/bar/show",
    url_for(controller: "foo/bar", action: "show")

  assert_equal "http://www.example.com/whatever/foo/bar/show/1",
    url_for(controller: "foo/bar", action: "show", id: "1")
end
test_url_generator_for_optional_prefix_dynamic_segment() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2465
def test_url_generator_for_optional_prefix_dynamic_segment
  draw do
    get "(/:username)/followers" => "followers#index"
  end

  get "/bob/followers"
  assert_equal "followers#index", @response.body
  assert_equal "http://www.example.com/bob/followers",
    url_for(controller: "followers", action: "index", username: "bob")

  get "/followers"
  assert_equal "followers#index", @response.body
  assert_equal "http://www.example.com/followers",
    url_for(controller: "followers", action: "index", username: nil)
end
test_url_generator_for_optional_prefix_static_and_dynamic_segment() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2497
def test_url_generator_for_optional_prefix_static_and_dynamic_segment
  draw do
    get "(/user/:username)/photos" => "photos#index"
  end

  get "/user/bob/photos"
  assert_equal "photos#index", @response.body
  assert_equal "http://www.example.com/user/bob/photos",
    url_for(controller: "photos", action: "index", username: "bob")

  get "/photos"
  assert_equal "photos#index", @response.body
  assert_equal "http://www.example.com/photos",
    url_for(controller: "photos", action: "index", username: nil)
end
test_url_generator_for_optional_suffix_static_and_dynamic_segment() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2481
def test_url_generator_for_optional_suffix_static_and_dynamic_segment
  draw do
    get "/groups(/user/:username)" => "groups#index"
  end

  get "/groups/user/bob"
  assert_equal "groups#index", @response.body
  assert_equal "http://www.example.com/groups/user/bob",
    url_for(controller: "groups", action: "index", username: "bob")

  get "/groups"
  assert_equal "groups#index", @response.body
  assert_equal "http://www.example.com/groups",
    url_for(controller: "groups", action: "index", username: nil)
end
test_url_recognition_for_optional_static_segments() click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 2513
def test_url_recognition_for_optional_static_segments
  draw do
    scope "(groups)" do
      scope "(discussions)" do
        resources :messages
      end
    end
  end

  get "/groups/discussions/messages"
  assert_equal "messages#index", @response.body

  get "/groups/discussions/messages/1"
  assert_equal "messages#show", @response.body

  get "/groups/messages"
  assert_equal "messages#index", @response.body

  get "/groups/messages/1"
  assert_equal "messages#show", @response.body

  get "/discussions/messages"
  assert_equal "messages#index", @response.body

  get "/discussions/messages/1"
  assert_equal "messages#show", @response.body

  get "/messages"
  assert_equal "messages#index", @response.body

  get "/messages/1"
  assert_equal "messages#show", @response.body
end

Private Instance Methods

draw(&block) click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3731
def draw(&block)
  self.class.stub_controllers do |routes|
    routes.default_url_options = { host: "www.example.com" }
    routes.draw(&block)
    @app = RoutedRackApp.new routes
  end
end
expected_redirect_body(url) click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3765
def expected_redirect_body(url)
  %(<html><body>You are being <a href="#{ERB::Util.h(url)}">redirected</a>.</body></html>)
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File actionpack/test/dispatch/routing_test.rb, line 3743
def method_missing(method, *args, &block)
  if method.to_s =~ /_(path|url)$/
    @app.routes.url_helpers.send(method, *args, &block)
  else
    super
  end
end
url_for(options = {}) click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3739
def url_for(options = {})
  @app.routes.url_helpers.url_for(options)
end
verify_redirect(url, status = 301) click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3759
def verify_redirect(url, status = 301)
  assert_equal status, @response.status
  assert_equal url, @response.headers["Location"]
  assert_equal expected_redirect_body(url), @response.body
end
with_https() { || ... } click to toggle source
# File actionpack/test/dispatch/routing_test.rb, line 3751
def with_https
  old_https = https?
  https!
  yield
ensure
  https!(old_https)
end