3 class IssuesControllerTest < ActionDispatch::IntegrationTest
5 # Access issues list without login
7 assert_redirected_to login_path(:referer => issues_path)
9 # Access issues list as normal user
10 session_for(create(:user))
12 assert_redirected_to :controller => :errors, :action => :forbidden
14 # Access issues list as administrator
15 session_for(create(:administrator_user))
17 assert_response :success
19 # Access issues list as moderator
20 session_for(create(:moderator_user))
22 assert_response :success
25 def test_show_moderator
26 target_user = create(:user)
27 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
29 # Access issue without login
31 assert_redirected_to login_path(:referer => issue_path(issue))
33 # Access issue as normal user
34 session_for(create(:user))
36 assert_redirected_to :controller => :errors, :action => :forbidden
38 # Access issue as administrator
39 session_for(create(:administrator_user))
41 assert_redirected_to :controller => :errors, :action => :not_found
43 # Access issue as moderator
44 session_for(create(:moderator_user))
46 assert_response :success
49 def test_show_administrator
50 target_user = create(:user)
51 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
53 # Access issue without login
55 assert_redirected_to login_path(:referer => issue_path(issue))
57 # Access issue as normal user
58 session_for(create(:user))
60 assert_redirected_to :controller => :errors, :action => :forbidden
62 # Access issue as moderator
63 session_for(create(:moderator_user))
65 assert_redirected_to :controller => :errors, :action => :not_found
67 # Access issue as administrator
68 session_for(create(:administrator_user))
70 assert_response :success
73 def test_resolve_moderator
74 target_user = create(:user)
75 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
77 # Resolve issue without login
78 post resolve_issue_path(issue)
79 assert_response :forbidden
81 # Resolve issue as normal user
82 session_for(create(:user))
83 post resolve_issue_path(issue)
84 assert_redirected_to :controller => :errors, :action => :forbidden
86 # Resolve issue as administrator
87 session_for(create(:administrator_user))
88 post resolve_issue_path(issue)
89 assert_redirected_to :controller => :errors, :action => :not_found
90 assert_not_predicate issue.reload, :resolved?
92 # Resolve issue as moderator
93 session_for(create(:moderator_user))
94 post resolve_issue_path(issue)
95 assert_response :redirect
96 assert_predicate issue.reload, :resolved?
99 def test_resolve_administrator
100 target_user = create(:user)
101 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
103 # Resolve issue without login
104 post resolve_issue_path(issue)
105 assert_response :forbidden
107 # Resolve issue as normal user
108 session_for(create(:user))
109 post resolve_issue_path(issue)
110 assert_redirected_to :controller => :errors, :action => :forbidden
112 # Resolve issue as moderator
113 session_for(create(:moderator_user))
114 post resolve_issue_path(issue)
115 assert_redirected_to :controller => :errors, :action => :not_found
116 assert_not_predicate issue.reload, :resolved?
118 # Resolve issue as administrator
119 session_for(create(:administrator_user))
120 post resolve_issue_path(issue)
121 assert_response :redirect
122 assert_predicate issue.reload, :resolved?
125 def test_resolve_note_of_deleted_user
126 target_user = create(:user)
127 target_note = create(:note, :author => target_user)
128 issue = create(:issue, :reportable => target_note, :reported_user => target_user, :assigned_role => "moderator")
129 target_user.soft_destroy!
131 session_for(create(:moderator_user))
132 post resolve_issue_path(issue)
133 assert_redirected_to issue_path(issue)
134 assert_predicate issue.reload, :resolved?
137 assert_response :success
138 assert_dom "a[href='#{note_url target_note}']"
141 assert_response :success
142 assert_dom "a[href='#{note_url target_note}']"
145 def test_ignore_moderator
146 target_user = create(:user)
147 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
149 # Ignore issue without login
150 post ignore_issue_path(issue)
151 assert_response :forbidden
153 # Ignore issue as normal user
154 session_for(create(:user))
155 post ignore_issue_path(issue)
156 assert_redirected_to :controller => :errors, :action => :forbidden
158 # Ignore issue as administrator
159 session_for(create(:administrator_user))
160 post ignore_issue_path(issue)
161 assert_redirected_to :controller => :errors, :action => :not_found
162 assert_not_predicate issue.reload, :ignored?
164 # Ignore issue as moderator
165 session_for(create(:moderator_user))
166 post ignore_issue_path(issue)
167 assert_response :redirect
168 assert_predicate issue.reload, :ignored?
171 def test_ignore_administrator
172 target_user = create(:user)
173 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
175 # Ignore issue without login
176 post ignore_issue_path(issue)
177 assert_response :forbidden
179 # Ignore issue as normal user
180 session_for(create(:user))
181 post ignore_issue_path(issue)
182 assert_redirected_to :controller => :errors, :action => :forbidden
184 # Ignore issue as moderator
185 session_for(create(:moderator_user))
186 post ignore_issue_path(issue)
187 assert_redirected_to :controller => :errors, :action => :not_found
188 assert_not_predicate issue.reload, :ignored?
190 # Ignore issue as administrator
191 session_for(create(:administrator_user))
192 post ignore_issue_path(issue)
193 assert_response :redirect
194 assert_predicate issue.reload, :ignored?
197 def test_reopen_moderator
198 target_user = create(:user)
199 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "moderator")
203 # Reopen issue without login
204 post reopen_issue_path(issue)
205 assert_response :forbidden
207 # Reopen issue as normal user
208 session_for(create(:user))
209 post reopen_issue_path(issue)
210 assert_redirected_to :controller => :errors, :action => :forbidden
212 # Reopen issue as administrator
213 session_for(create(:administrator_user))
214 post reopen_issue_path(issue)
215 assert_redirected_to :controller => :errors, :action => :not_found
216 assert_not_predicate issue.reload, :open?
218 # Reopen issue as moderator
219 session_for(create(:moderator_user))
220 post reopen_issue_path(issue)
221 assert_response :redirect
222 assert_predicate issue.reload, :open?
225 def test_reopen_administrator
226 target_user = create(:user)
227 issue = create(:issue, :reportable => target_user, :reported_user => target_user, :assigned_role => "administrator")
231 # Reopen issue without login
232 post reopen_issue_path(issue)
233 assert_response :forbidden
235 # Reopen issue as normal user
236 session_for(create(:user))
237 post reopen_issue_path(issue)
238 assert_redirected_to :controller => :errors, :action => :forbidden
240 # Reopen issue as moderator
241 session_for(create(:moderator_user))
242 post reopen_issue_path(issue)
243 assert_redirected_to :controller => :errors, :action => :not_found
244 assert_not_predicate issue.reload, :open?
246 # Reopen issue as administrator
247 session_for(create(:administrator_user))
248 post reopen_issue_path(issue)
249 assert_response :redirect
250 assert_predicate issue.reload, :open?