Merge remote-tracking branch 'upstream/pull/2160'
[rails.git] / test / controllers / issues_controller_test.rb
1 require "test_helper"
2
3 class IssuesControllerTest < ActionController::TestCase
4   def test_index
5     # Access issues list without login
6     get :index
7     assert_response :redirect
8     assert_redirected_to login_path(:referer => issues_path)
9
10     # Access issues list as normal user
11     session[:user] = create(:user).id
12     get :index
13     assert_response :redirect
14     assert_redirected_to :controller => :errors, :action => :forbidden
15
16     # Access issues list as administrator
17     session[:user] = create(:administrator_user).id
18     get :index
19     assert_response :success
20
21     # Access issues list as moderator
22     session[:user] = create(:moderator_user).id
23     get :index
24     assert_response :success
25   end
26
27   def test_show
28     target_user = create(:user)
29     issue = create(:issue, :reportable => target_user, :reported_user => target_user)
30
31     # Access issue without login
32     get :show, :params => { :id => issue.id }
33     assert_response :redirect
34     assert_redirected_to login_path(:referer => issue_path(issue))
35
36     # Access issue as normal user
37     session[:user] = create(:user).id
38     get :show, :params => { :id => issue.id }
39     assert_response :redirect
40     assert_redirected_to :controller => :errors, :action => :forbidden
41
42     # Access issue as administrator
43     session[:user] = create(:administrator_user).id
44     get :show, :params => { :id => issue.id }
45     assert_response :success
46
47     # Access issue as moderator
48     session[:user] = create(:moderator_user).id
49     get :show, :params => { :id => issue.id }
50     assert_response :success
51   end
52
53   def test_resolve
54     target_user = create(:user)
55     issue = create(:issue, :reportable => target_user, :reported_user => target_user)
56
57     # Resolve issue without login
58     get :resolve, :params => { :id => issue.id }
59     assert_response :redirect
60     assert_redirected_to login_path(:referer => resolve_issue_path(issue))
61
62     # Resolve issue as normal user
63     session[:user] = create(:user).id
64     get :resolve, :params => { :id => issue.id }
65     assert_response :redirect
66     assert_redirected_to :controller => :errors, :action => :forbidden
67
68     # Resolve issue as administrator
69     session[:user] = create(:administrator_user).id
70     get :resolve, :params => { :id => issue.id }
71     assert_response :redirect
72     assert_equal true, issue.reload.resolved?
73
74     issue.reopen!
75
76     # Resolve issue as moderator
77     session[:user] = create(:moderator_user).id
78     get :resolve, :params => { :id => issue.id }
79     assert_response :redirect
80     assert_equal true, issue.reload.resolved?
81   end
82
83   def test_ignore
84     target_user = create(:user)
85     issue = create(:issue, :reportable => target_user, :reported_user => target_user)
86
87     # Ignore issue without login
88     get :ignore, :params => { :id => issue.id }
89     assert_response :redirect
90     assert_redirected_to login_path(:referer => ignore_issue_path(issue))
91
92     # Ignore issue as normal user
93     session[:user] = create(:user).id
94     get :ignore, :params => { :id => issue.id }
95     assert_response :redirect
96     assert_redirected_to :controller => :errors, :action => :forbidden
97
98     # Ignore issue as administrator
99     session[:user] = create(:administrator_user).id
100     get :ignore, :params => { :id => issue.id }
101     assert_response :redirect
102     assert_equal true, issue.reload.ignored?
103
104     issue.reopen!
105
106     # Ignore issue as moderator
107     session[:user] = create(:moderator_user).id
108     get :ignore, :params => { :id => issue.id }
109     assert_response :redirect
110     assert_equal true, issue.reload.ignored?
111   end
112
113   def test_reopen
114     target_user = create(:user)
115     issue = create(:issue, :reportable => target_user, :reported_user => target_user)
116
117     issue.resolve!
118
119     # Reopen issue without login
120     get :reopen, :params => { :id => issue.id }
121     assert_response :redirect
122     assert_redirected_to login_path(:referer => reopen_issue_path(issue))
123
124     # Reopen issue as normal user
125     session[:user] = create(:user).id
126     get :reopen, :params => { :id => issue.id }
127     assert_response :redirect
128     assert_redirected_to :controller => :errors, :action => :forbidden
129
130     # Reopen issue as administrator
131     session[:user] = create(:administrator_user).id
132     get :reopen, :params => { :id => issue.id }
133     assert_response :redirect
134     assert_equal true, issue.reload.open?
135
136     issue.resolve!
137
138     # Reopen issue as moderator
139     session[:user] = create(:moderator_user).id
140     get :reopen, :params => { :id => issue.id }
141     assert_response :redirect
142     assert_equal true, issue.reload.open?
143   end
144 end