Merge remote-tracking branch 'upstream/pull/3279'
[rails.git] / test / integration / user_blocks_test.rb
1 require "test_helper"
2
3 class UserBlocksTest < ActionDispatch::IntegrationTest
4   def test_api_blocked
5     blocked_user = create(:user)
6
7     get "/api/#{Settings.api_version}/user/details"
8     assert_response :unauthorized
9
10     get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
11     assert_response :success
12
13     # now block the user
14     UserBlock.create(
15       :user_id => blocked_user.id,
16       :creator_id => create(:moderator_user).id,
17       :reason => "testing",
18       :ends_at => Time.now.getutc + 5.minutes
19     )
20     get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
21     assert_response :forbidden
22   end
23
24   def test_api_revoke
25     blocked_user = create(:user)
26     moderator = create(:moderator_user)
27
28     block = UserBlock.create(
29       :user_id => blocked_user.id,
30       :creator_id => moderator.id,
31       :reason => "testing",
32       :ends_at => Time.now.getutc + 5.minutes
33     )
34     get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
35     assert_response :forbidden
36
37     # revoke the ban
38     get "/login"
39     assert_response :success
40     post "/login", :params => { "username" => moderator.email, "password" => "test", :referer => "/blocks/#{block.id}/revoke" }
41     assert_response :redirect
42     follow_redirect!
43     assert_response :success
44     assert_template "user_blocks/revoke"
45     post "/blocks/#{block.id}/revoke", :params => { "confirm" => "yes" }
46     assert_response :redirect
47     follow_redirect!
48     assert_response :success
49     assert_template "user_blocks/show"
50     reset!
51
52     # access the API again. this time it should work
53     get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
54     assert_response :success
55   end
56 end