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 issue = create(:issue, :reportable => target_note, :reported_user => target_user, :assigned_role => "moderator")
131 target_user.soft_destroy!
133 session_for(create(:moderator_user))
134 post resolve_issue_path(issue)
135 assert_redirected_to issue_path(issue)
136 assert_predicate issue.reload, :resolved?
139 assert_response :success
140 assert_dom "a[href='#{note_url target_note}']"
143 assert_response :success
144 assert_dom "a[href='#{note_url target_note}']"
147 def test_ignore_moderator
148 target_user = create(:user)
149 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
151 # Ignore issue without login
152 post ignore_issue_path(issue)
153 assert_response :forbidden
155 # Ignore issue as normal user
156 session_for(create(:user))
157 post ignore_issue_path(issue)
158 assert_redirected_to :controller => :errors, :action => :forbidden
160 # Ignore issue as administrator
161 session_for(create(:administrator_user))
162 post ignore_issue_path(issue)
163 assert_redirected_to :controller => :errors, :action => :not_found
164 assert_not_predicate issue.reload, :ignored?
166 # Ignore issue as moderator
167 session_for(create(:moderator_user))
168 post ignore_issue_path(issue)
169 assert_response :redirect
170 assert_predicate issue.reload, :ignored?
173 def test_ignore_administrator
174 target_user = create(:user)
175 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
177 # Ignore issue without login
178 post ignore_issue_path(issue)
179 assert_response :forbidden
181 # Ignore issue as normal user
182 session_for(create(:user))
183 post ignore_issue_path(issue)
184 assert_redirected_to :controller => :errors, :action => :forbidden
186 # Ignore issue as moderator
187 session_for(create(:moderator_user))
188 post ignore_issue_path(issue)
189 assert_redirected_to :controller => :errors, :action => :not_found
190 assert_not_predicate issue.reload, :ignored?
192 # Ignore issue as administrator
193 session_for(create(:administrator_user))
194 post ignore_issue_path(issue)
195 assert_response :redirect
196 assert_predicate issue.reload, :ignored?
199 def test_reopen_moderator
200 target_user = create(:user)
201 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
205 # Reopen issue without login
206 post reopen_issue_path(issue)
207 assert_response :forbidden
209 # Reopen issue as normal user
210 session_for(create(:user))
211 post reopen_issue_path(issue)
212 assert_redirected_to :controller => :errors, :action => :forbidden
214 # Reopen issue as administrator
215 session_for(create(:administrator_user))
216 post reopen_issue_path(issue)
217 assert_redirected_to :controller => :errors, :action => :not_found
218 assert_not_predicate issue.reload, :open?
220 # Reopen issue as moderator
221 session_for(create(:moderator_user))
222 post reopen_issue_path(issue)
223 assert_response :redirect
224 assert_predicate issue.reload, :open?
227 def test_reopen_administrator
228 target_user = create(:user)
229 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
233 # Reopen issue without login
234 post reopen_issue_path(issue)
235 assert_response :forbidden
237 # Reopen issue as normal user
238 session_for(create(:user))
239 post reopen_issue_path(issue)
240 assert_redirected_to :controller => :errors, :action => :forbidden
242 # Reopen issue as moderator
243 session_for(create(:moderator_user))
244 post reopen_issue_path(issue)
245 assert_redirected_to :controller => :errors, :action => :not_found
246 assert_not_predicate issue.reload, :open?
248 # Reopen issue as administrator
249 session_for(create(:administrator_user))
250 post reopen_issue_path(issue)
251 assert_response :redirect
252 assert_predicate issue.reload, :open?