]> git.openstreetmap.org Git - rails.git/blob - test/controllers/issues_controller_test.rb
Merge remote-tracking branch 'upstream/pull/4578'
[rails.git] / test / controllers / issues_controller_test.rb
1 require "test_helper"
2
3 class IssuesControllerTest < ActionDispatch::IntegrationTest
4   def test_index
5     # Access issues list without login
6     get issues_path
7     assert_redirected_to login_path(:referer => issues_path)
8
9     # Access issues list as normal user
10     session_for(create(:user))
11     get issues_path
12     assert_redirected_to :controller => :errors, :action => :forbidden
13
14     # Access issues list as administrator
15     session_for(create(:administrator_user))
16     get issues_path
17     assert_response :success
18
19     # Access issues list as moderator
20     session_for(create(:moderator_user))
21     get issues_path
22     assert_response :success
23   end
24
25   def test_show_moderator
26     target_user = create(:user)
27     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
28
29     # Access issue without login
30     get issue_path(:id => issue)
31     assert_redirected_to login_path(:referer => issue_path(issue))
32
33     # Access issue as normal user
34     session_for(create(:user))
35     get issue_path(:id => issue)
36     assert_redirected_to :controller => :errors, :action => :forbidden
37
38     # Access issue as administrator
39     session_for(create(:administrator_user))
40     get issue_path(:id => issue)
41     assert_redirected_to :controller => :errors, :action => :not_found
42
43     # Access issue as moderator
44     session_for(create(:moderator_user))
45     get issue_path(:id => issue)
46     assert_response :success
47   end
48
49   def test_show_administrator
50     target_user = create(:user)
51     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
52
53     # Access issue without login
54     get issue_path(:id => issue)
55     assert_redirected_to login_path(:referer => issue_path(issue))
56
57     # Access issue as normal user
58     session_for(create(:user))
59     get issue_path(:id => issue)
60     assert_redirected_to :controller => :errors, :action => :forbidden
61
62     # Access issue as moderator
63     session_for(create(:moderator_user))
64     get issue_path(:id => issue)
65     assert_redirected_to :controller => :errors, :action => :not_found
66
67     # Access issue as administrator
68     session_for(create(:administrator_user))
69     get issue_path(:id => issue)
70     assert_response :success
71   end
72
73   def test_resolve_moderator
74     target_user = create(:user)
75     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
76
77     # Resolve issue without login
78     post resolve_issue_path(:id => issue)
79     assert_response :forbidden
80
81     # Resolve issue as normal user
82     session_for(create(:user))
83     post resolve_issue_path(:id => issue)
84     assert_redirected_to :controller => :errors, :action => :forbidden
85
86     # Resolve issue as administrator
87     session_for(create(:administrator_user))
88     post resolve_issue_path(:id => issue)
89     assert_redirected_to :controller => :errors, :action => :not_found
90     assert_not issue.reload.resolved?
91
92     # Resolve issue as moderator
93     session_for(create(:moderator_user))
94     post resolve_issue_path(:id => issue)
95     assert_response :redirect
96     assert_predicate issue.reload, :resolved?
97   end
98
99   def test_resolve_administrator
100     target_user = create(:user)
101     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
102
103     # Resolve issue without login
104     post resolve_issue_path(:id => issue)
105     assert_response :forbidden
106
107     # Resolve issue as normal user
108     session_for(create(:user))
109     post resolve_issue_path(:id => issue)
110     assert_redirected_to :controller => :errors, :action => :forbidden
111
112     # Resolve issue as moderator
113     session_for(create(:moderator_user))
114     post resolve_issue_path(:id => issue)
115     assert_redirected_to :controller => :errors, :action => :not_found
116     assert_not issue.reload.resolved?
117
118     # Resolve issue as administrator
119     session_for(create(:administrator_user))
120     post resolve_issue_path(:id => issue)
121     assert_response :redirect
122     assert_predicate issue.reload, :resolved?
123   end
124
125   def test_ignore_moderator
126     target_user = create(:user)
127     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
128
129     # Ignore issue without login
130     post ignore_issue_path(:id => issue)
131     assert_response :forbidden
132
133     # Ignore issue as normal user
134     session_for(create(:user))
135     post ignore_issue_path(:id => issue)
136     assert_redirected_to :controller => :errors, :action => :forbidden
137
138     # Ignore issue as administrator
139     session_for(create(:administrator_user))
140     post ignore_issue_path(:id => issue)
141     assert_redirected_to :controller => :errors, :action => :not_found
142     assert_not issue.reload.ignored?
143
144     # Ignore issue as moderator
145     session_for(create(:moderator_user))
146     post ignore_issue_path(:id => issue)
147     assert_response :redirect
148     assert_predicate issue.reload, :ignored?
149   end
150
151   def test_ignore_administrator
152     target_user = create(:user)
153     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
154
155     # Ignore issue without login
156     post ignore_issue_path(:id => issue)
157     assert_response :forbidden
158
159     # Ignore issue as normal user
160     session_for(create(:user))
161     post ignore_issue_path(:id => issue)
162     assert_redirected_to :controller => :errors, :action => :forbidden
163
164     # Ignore issue as moderator
165     session_for(create(:moderator_user))
166     post ignore_issue_path(:id => issue)
167     assert_redirected_to :controller => :errors, :action => :not_found
168     assert_not issue.reload.ignored?
169
170     # Ignore issue as administrator
171     session_for(create(:administrator_user))
172     post ignore_issue_path(:id => issue)
173     assert_response :redirect
174     assert_predicate issue.reload, :ignored?
175   end
176
177   def test_reopen_moderator
178     target_user = create(:user)
179     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
180
181     issue.resolve!
182
183     # Reopen issue without login
184     post reopen_issue_path(:id => issue)
185     assert_response :forbidden
186
187     # Reopen issue as normal user
188     session_for(create(:user))
189     post reopen_issue_path(:id => issue)
190     assert_redirected_to :controller => :errors, :action => :forbidden
191
192     # Reopen issue as administrator
193     session_for(create(:administrator_user))
194     post reopen_issue_path(:id => issue)
195     assert_redirected_to :controller => :errors, :action => :not_found
196     assert_not issue.reload.open?
197
198     # Reopen issue as moderator
199     session_for(create(:moderator_user))
200     post reopen_issue_path(:id => issue)
201     assert_response :redirect
202     assert_predicate issue.reload, :open?
203   end
204
205   def test_reopen_administrator
206     target_user = create(:user)
207     issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
208
209     issue.resolve!
210
211     # Reopen issue without login
212     post reopen_issue_path(:id => issue)
213     assert_response :forbidden
214
215     # Reopen issue as normal user
216     session_for(create(:user))
217     post reopen_issue_path(:id => issue)
218     assert_redirected_to :controller => :errors, :action => :forbidden
219
220     # Reopen issue as moderator
221     session_for(create(:moderator_user))
222     post reopen_issue_path(:id => issue)
223     assert_redirected_to :controller => :errors, :action => :not_found
224     assert_not issue.reload.open?
225
226     # Reopen issue as administrator
227     session_for(create(:administrator_user))
228     post reopen_issue_path(:id => issue)
229     assert_response :redirect
230     assert_predicate issue.reload, :open?
231   end
232 end