]> git.openstreetmap.org Git - rails.git/blob - test/integration/short_links_test.rb
use a controller method to handle cancan denials
[rails.git] / test / integration / short_links_test.rb
1 require "test_helper"
2
3 class ShortLinksTest < ActionDispatch::IntegrationTest
4   ##
5   # test the short link with various parameters and ensure they're
6   # kept in the redirect.
7   def test_short_link_params
8     assert_short_link_redirect("1N8H@P_5W")
9     assert_short_link_redirect(ShortLink.encode(-0.107846, 51.50771, 18))
10   end
11
12   ##
13   # utility method to test short links
14   def assert_short_link_redirect(short_link)
15     lon, lat, zoom = ShortLink.decode(short_link)
16     anchor = "map=#{zoom}/#{lat}/#{lon}"
17
18     # test without marker
19     get "/go/" + short_link
20     assert_redirected_to :controller => "site", :action => "index", :anchor => anchor
21
22     # test with marker
23     get "/go/" + short_link + "?m"
24     assert_redirected_to :controller => "site", :action => "index", :mlat => lat.to_s, :mlon => lon.to_s, :anchor => anchor
25
26     # test with layers and a marker
27     get "/go/" + short_link + "?m&layers=B000FTF"
28     assert_redirected_to :controller => "site", :action => "index", :mlat => lat.to_s, :mlon => lon.to_s, :anchor => "#{anchor}&layers=B000FTF"
29     get "/go/" + short_link + "?layers=B000FTF&m"
30     assert_redirected_to :controller => "site", :action => "index", :mlat => lat.to_s, :mlon => lon.to_s, :anchor => "#{anchor}&layers=B000FTF"
31
32     # test with some random query parameters we haven't even implemented yet
33     get "/go/" + short_link + "?foobar=yes"
34     assert_redirected_to :controller => "site", :action => "index", :foobar => "yes", :anchor => anchor
35   end
36 end