]> git.openstreetmap.org Git - rails.git/blob - test/integration/user_terms_seen_test.rb
Fix migration to work with mass assignment protection
[rails.git] / test / integration / user_terms_seen_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2
3 class UserTermsSeenTest < ActionController::IntegrationTest
4   fixtures :users
5
6   def auth_header(user, pass)
7     {"HTTP_AUTHORIZATION" => "Basic %s" % Base64.encode64("#{user}:#{pass}")}
8   end
9
10   def test_api_blocked
11     if REQUIRE_TERMS_SEEN
12       user = users(:terms_not_seen_user)
13
14       get "/api/#{API_VERSION}/user/preferences", nil, auth_header(user.display_name, "test")
15       assert_response :forbidden
16
17       # touch it so that the user has seen the terms
18       user.terms_seen = true
19       user.save
20
21       get "/api/#{API_VERSION}/user/preferences", nil, auth_header(user.display_name, "test")
22       assert_response :success
23     end
24   end
25
26   def test_terms_presented_at_login
27     if REQUIRE_TERMS_SEEN
28       user = users(:terms_not_seen_user)
29
30       # try to log in
31       get_via_redirect "/login"
32       assert_response :success
33       assert_template 'user/login'
34       post "/login", {'username' => user.email, 'password' => 'test', :referer => "/"}
35       assert_response :redirect
36       # but now we need to look at the terms
37       assert_redirected_to "controller" => "user", "action" => "terms", :referer => "/"
38       follow_redirect!
39       assert_response :success
40
41       # don't agree to the terms, but hit decline
42       post "/user/#{user.display_name}/save", {'decline' => 'decline', 'referer' => '/'}
43       assert_redirected_to "/"
44       follow_redirect!
45       
46       # should be carried through to a normal login with a message
47       assert_response :success
48       assert !flash[:notice].nil?
49     end
50   end
51
52   def test_terms_cant_be_circumvented
53     if REQUIRE_TERMS_SEEN
54       user = users(:terms_not_seen_user)
55
56       # try to log in
57       get_via_redirect "/login"
58       assert_response :success
59       assert_template 'user/login'
60       post "/login", {'username' => user.email, 'password' => 'test', :referer => "/"}
61       assert_response :redirect
62       # but now we need to look at the terms
63       assert_redirected_to "controller" => "user", "action" => "terms", :referer => "/"
64       follow_redirect!
65       assert_response :success
66
67       # check that if we go somewhere else now, it redirects
68       # back to the terms page.
69       get "/traces/mine"
70       assert_redirected_to "controller" => "user", "action" => "terms", :referer => "/traces/mine"
71     end
72   end
73 end