1 # frozen_string_literal: true
5 class IssuesControllerTest < ActionDispatch::IntegrationTest
7 # Access issues list without login
9 assert_redirected_to login_path(:referer => issues_path)
11 # Access issues list as normal user
12 session_for(create(:user))
14 assert_redirected_to :controller => :errors, :action => :forbidden
16 # Access issues list as administrator
17 session_for(create(:administrator_user))
19 assert_response :success
21 # Access issues list as moderator
22 session_for(create(:moderator_user))
24 assert_response :success
27 def test_show_moderator
28 target_user = create(:user)
29 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
31 # Access issue without login
33 assert_redirected_to login_path(:referer => issue_path(issue))
35 # Access issue as normal user
36 session_for(create(:user))
38 assert_redirected_to :controller => :errors, :action => :forbidden
40 # Access issue as administrator
41 session_for(create(:administrator_user))
43 assert_redirected_to :controller => :errors, :action => :not_found
45 # Access issue as moderator
46 session_for(create(:moderator_user))
48 assert_response :success
51 def test_show_administrator
52 target_user = create(:user)
53 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
55 # Access issue without login
57 assert_redirected_to login_path(:referer => issue_path(issue))
59 # Access issue as normal user
60 session_for(create(:user))
62 assert_redirected_to :controller => :errors, :action => :forbidden
64 # Access issue as moderator
65 session_for(create(:moderator_user))
67 assert_redirected_to :controller => :errors, :action => :not_found
69 # Access issue as administrator
70 session_for(create(:administrator_user))
72 assert_response :success
75 def test_resolve_moderator
76 target_user = create(:user)
77 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
79 # Resolve issue without login
80 post resolve_issue_path(issue)
81 assert_response :forbidden
83 # Resolve issue as normal user
84 session_for(create(:user))
85 post resolve_issue_path(issue)
86 assert_redirected_to :controller => :errors, :action => :forbidden
88 # Resolve issue as administrator
89 session_for(create(:administrator_user))
90 post resolve_issue_path(issue)
91 assert_redirected_to :controller => :errors, :action => :not_found
92 assert_not_predicate issue.reload, :resolved?
94 # Resolve issue as moderator
95 session_for(create(:moderator_user))
96 post resolve_issue_path(issue)
97 assert_response :redirect
98 assert_predicate issue.reload, :resolved?
101 def test_resolve_administrator
102 target_user = create(:user)
103 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
105 # Resolve issue without login
106 post resolve_issue_path(issue)
107 assert_response :forbidden
109 # Resolve issue as normal user
110 session_for(create(:user))
111 post resolve_issue_path(issue)
112 assert_redirected_to :controller => :errors, :action => :forbidden
114 # Resolve issue as moderator
115 session_for(create(:moderator_user))
116 post resolve_issue_path(issue)
117 assert_redirected_to :controller => :errors, :action => :not_found
118 assert_not_predicate issue.reload, :resolved?
120 # Resolve issue as administrator
121 session_for(create(:administrator_user))
122 post resolve_issue_path(issue)
123 assert_response :redirect
124 assert_predicate issue.reload, :resolved?
127 def test_resolve_note_of_deleted_user
128 target_user = create(:user)
129 target_note = create(:note, :author => target_user)
130 target_user.soft_destroy!
132 issue = create(:issue, :reportable => target_note, :reported_user => target_user, :assigned_role => "moderator")
134 session_for(create(:moderator_user))
135 post resolve_issue_path(issue)
136 assert_redirected_to issue_path(issue)
137 assert_predicate issue.reload, :resolved?
140 assert_response :success
141 assert_dom "a[href='#{note_url target_note}']"
144 assert_response :success
145 assert_dom "a[href='#{note_url target_note}']"
148 def test_ignore_moderator
149 target_user = create(:user)
150 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
152 # Ignore issue without login
153 post ignore_issue_path(issue)
154 assert_response :forbidden
156 # Ignore issue as normal user
157 session_for(create(:user))
158 post ignore_issue_path(issue)
159 assert_redirected_to :controller => :errors, :action => :forbidden
161 # Ignore issue as administrator
162 session_for(create(:administrator_user))
163 post ignore_issue_path(issue)
164 assert_redirected_to :controller => :errors, :action => :not_found
165 assert_not_predicate issue.reload, :ignored?
167 # Ignore issue as moderator
168 session_for(create(:moderator_user))
169 post ignore_issue_path(issue)
170 assert_response :redirect
171 assert_predicate issue.reload, :ignored?
174 def test_ignore_administrator
175 target_user = create(:user)
176 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
178 # Ignore issue without login
179 post ignore_issue_path(issue)
180 assert_response :forbidden
182 # Ignore issue as normal user
183 session_for(create(:user))
184 post ignore_issue_path(issue)
185 assert_redirected_to :controller => :errors, :action => :forbidden
187 # Ignore issue as moderator
188 session_for(create(:moderator_user))
189 post ignore_issue_path(issue)
190 assert_redirected_to :controller => :errors, :action => :not_found
191 assert_not_predicate issue.reload, :ignored?
193 # Ignore issue as administrator
194 session_for(create(:administrator_user))
195 post ignore_issue_path(issue)
196 assert_response :redirect
197 assert_predicate issue.reload, :ignored?
200 def test_reopen_moderator
201 target_user = create(:user)
202 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
206 # Reopen issue without login
207 post reopen_issue_path(issue)
208 assert_response :forbidden
210 # Reopen issue as normal user
211 session_for(create(:user))
212 post reopen_issue_path(issue)
213 assert_redirected_to :controller => :errors, :action => :forbidden
215 # Reopen issue as administrator
216 session_for(create(:administrator_user))
217 post reopen_issue_path(issue)
218 assert_redirected_to :controller => :errors, :action => :not_found
219 assert_not_predicate issue.reload, :open?
221 # Reopen issue as moderator
222 session_for(create(:moderator_user))
223 post reopen_issue_path(issue)
224 assert_response :redirect
225 assert_predicate issue.reload, :open?
228 def test_reopen_administrator
229 target_user = create(:user)
230 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
234 # Reopen issue without login
235 post reopen_issue_path(issue)
236 assert_response :forbidden
238 # Reopen issue as normal user
239 session_for(create(:user))
240 post reopen_issue_path(issue)
241 assert_redirected_to :controller => :errors, :action => :forbidden
243 # Reopen issue as moderator
244 session_for(create(:moderator_user))
245 post reopen_issue_path(issue)
246 assert_redirected_to :controller => :errors, :action => :not_found
247 assert_not_predicate issue.reload, :open?
249 # Reopen issue as administrator
250 session_for(create(:administrator_user))
251 post reopen_issue_path(issue)
252 assert_response :redirect
253 assert_predicate issue.reload, :open?