]> git.openstreetmap.org Git - rails.git/blob - test/controllers/issues_controller_test.rb
Merge remote-tracking branch 'upstream/pull/2596'
[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_moderator
28     target_user = create(:user)
29     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
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_redirected_to :controller => :errors, :action => :not_found
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_show_administrator
54     target_user = create(:user)
55     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
56
57     # Access issue without login
58     get :show, :params => { :id => issue.id }
59     assert_response :redirect
60     assert_redirected_to login_path(:referer => issue_path(issue))
61
62     # Access issue as normal user
63     session[:user] = create(:user).id
64     get :show, :params => { :id => issue.id }
65     assert_response :redirect
66     assert_redirected_to :controller => :errors, :action => :forbidden
67
68     # Access issue as moderator
69     session[:user] = create(:moderator_user).id
70     get :show, :params => { :id => issue.id }
71     assert_redirected_to :controller => :errors, :action => :not_found
72
73     # Access issue as administrator
74     session[:user] = create(:administrator_user).id
75     get :show, :params => { :id => issue.id }
76     assert_response :success
77   end
78
79   def test_resolve_moderator
80     target_user = create(:user)
81     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
82
83     # Resolve issue without login
84     get :resolve, :params => { :id => issue.id }
85     assert_response :redirect
86     assert_redirected_to login_path(:referer => resolve_issue_path(issue))
87
88     # Resolve issue as normal user
89     session[:user] = create(:user).id
90     get :resolve, :params => { :id => issue.id }
91     assert_response :redirect
92     assert_redirected_to :controller => :errors, :action => :forbidden
93
94     # Resolve issue as administrator
95     session[:user] = create(:administrator_user).id
96     get :resolve, :params => { :id => issue.id }
97     assert_redirected_to :controller => :errors, :action => :not_found
98     assert_not issue.reload.resolved?
99
100     # Resolve issue as moderator
101     session[:user] = create(:moderator_user).id
102     get :resolve, :params => { :id => issue.id }
103     assert_response :redirect
104     assert issue.reload.resolved?
105   end
106
107   def test_resolve_administrator
108     target_user = create(:user)
109     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
110
111     # Resolve issue without login
112     get :resolve, :params => { :id => issue.id }
113     assert_response :redirect
114     assert_redirected_to login_path(:referer => resolve_issue_path(issue))
115
116     # Resolve issue as normal user
117     session[:user] = create(:user).id
118     get :resolve, :params => { :id => issue.id }
119     assert_response :redirect
120     assert_redirected_to :controller => :errors, :action => :forbidden
121
122     # Resolve issue as moderator
123     session[:user] = create(:moderator_user).id
124     get :resolve, :params => { :id => issue.id }
125     assert_redirected_to :controller => :errors, :action => :not_found
126     assert_not issue.reload.resolved?
127
128     # Resolve issue as administrator
129     session[:user] = create(:administrator_user).id
130     get :resolve, :params => { :id => issue.id }
131     assert_response :redirect
132     assert issue.reload.resolved?
133   end
134
135   def test_ignore_moderator
136     target_user = create(:user)
137     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
138
139     # Ignore issue without login
140     get :ignore, :params => { :id => issue.id }
141     assert_response :redirect
142     assert_redirected_to login_path(:referer => ignore_issue_path(issue))
143
144     # Ignore issue as normal user
145     session[:user] = create(:user).id
146     get :ignore, :params => { :id => issue.id }
147     assert_response :redirect
148     assert_redirected_to :controller => :errors, :action => :forbidden
149
150     # Ignore issue as administrator
151     session[:user] = create(:administrator_user).id
152     get :ignore, :params => { :id => issue.id }
153     assert_redirected_to :controller => :errors, :action => :not_found
154     assert_not issue.reload.ignored?
155
156     # Ignore issue as moderator
157     session[:user] = create(:moderator_user).id
158     get :ignore, :params => { :id => issue.id }
159     assert_response :redirect
160     assert issue.reload.ignored?
161   end
162
163   def test_ignore_administrator
164     target_user = create(:user)
165     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
166
167     # Ignore issue without login
168     get :ignore, :params => { :id => issue.id }
169     assert_response :redirect
170     assert_redirected_to login_path(:referer => ignore_issue_path(issue))
171
172     # Ignore issue as normal user
173     session[:user] = create(:user).id
174     get :ignore, :params => { :id => issue.id }
175     assert_response :redirect
176     assert_redirected_to :controller => :errors, :action => :forbidden
177
178     # Ignore issue as moderator
179     session[:user] = create(:moderator_user).id
180     get :ignore, :params => { :id => issue.id }
181     assert_redirected_to :controller => :errors, :action => :not_found
182     assert_not issue.reload.ignored?
183
184     # Ignore issue as administrator
185     session[:user] = create(:administrator_user).id
186     get :ignore, :params => { :id => issue.id }
187     assert_response :redirect
188     assert issue.reload.ignored?
189   end
190
191   def test_reopen_moderator
192     target_user = create(:user)
193     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
194
195     issue.resolve!
196
197     # Reopen issue without login
198     get :reopen, :params => { :id => issue.id }
199     assert_response :redirect
200     assert_redirected_to login_path(:referer => reopen_issue_path(issue))
201
202     # Reopen issue as normal user
203     session[:user] = create(:user).id
204     get :reopen, :params => { :id => issue.id }
205     assert_response :redirect
206     assert_redirected_to :controller => :errors, :action => :forbidden
207
208     # Reopen issue as administrator
209     session[:user] = create(:administrator_user).id
210     get :reopen, :params => { :id => issue.id }
211     assert_redirected_to :controller => :errors, :action => :not_found
212     assert_not issue.reload.open?
213
214     # Reopen issue as moderator
215     session[:user] = create(:moderator_user).id
216     get :reopen, :params => { :id => issue.id }
217     assert_response :redirect
218     assert issue.reload.open?
219   end
220
221   def test_reopen_administrator
222     target_user = create(:user)
223     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
224
225     issue.resolve!
226
227     # Reopen issue without login
228     get :reopen, :params => { :id => issue.id }
229     assert_response :redirect
230     assert_redirected_to login_path(:referer => reopen_issue_path(issue))
231
232     # Reopen issue as normal user
233     session[:user] = create(:user).id
234     get :reopen, :params => { :id => issue.id }
235     assert_response :redirect
236     assert_redirected_to :controller => :errors, :action => :forbidden
237
238     # Reopen issue as moderator
239     session[:user] = create(:moderator_user).id
240     get :reopen, :params => { :id => issue.id }
241     assert_redirected_to :controller => :errors, :action => :not_found
242     assert_not issue.reload.open?
243
244     # Reopen issue as administrator
245     session[:user] = create(:administrator_user).id
246     get :reopen, :params => { :id => issue.id }
247     assert_response :redirect
248     assert issue.reload.open?
249   end
250 end