@@ -30,6 +30,17 @@ defmodule Test.EpochtalkServerWeb.Controllers.Board do
3030 end
3131
3232 describe "by_category/2" do
33+ @ tag authenticated: :private
34+ test "when authenticated with invalid permissions, raises InvalidPermission error" , % {
35+ conn: conn
36+ } do
37+ assert_raise InvalidPermission ,
38+ ~r/ ^Forbidden, invalid permissions to perform this action/ ,
39+ fn ->
40+ get ( conn , Routes . board_path ( conn , :by_category ) )
41+ end
42+ end
43+
3344 test "finds all active boards" , % {
3445 conn: conn ,
3546 category: category ,
@@ -130,7 +141,23 @@ defmodule Test.EpochtalkServerWeb.Controllers.Board do
130141 assert response [ "message" ] == "Error, board does not exist"
131142 end
132143
133- test "given an existing id, finds a board" , % { conn: conn , parent_board: board } do
144+ test "when unauthenticated, given an existing id above read access, errors" , % {
145+ conn: conn ,
146+ admin_board: admin_board
147+ } do
148+ response =
149+ conn
150+ |> get ( Routes . board_path ( conn , :find , admin_board . id ) )
151+ |> json_response ( 404 )
152+
153+ assert response [ "error" ] == "Not Found"
154+ assert response [ "message" ] == "Board not found"
155+ end
156+
157+ test "when unauthenticated, given an existing id within read access, finds a board" , % {
158+ conn: conn ,
159+ parent_board: board
160+ } do
134161 response =
135162 conn
136163 |> get ( Routes . board_path ( conn , :find , board . id ) )
@@ -146,6 +173,73 @@ defmodule Test.EpochtalkServerWeb.Controllers.Board do
146173 assert response [ "disable_post_edit" ] == board . meta [ "disable_post_edit" ]
147174 assert response [ "disable_signature" ] == board . meta [ "disable_signature" ]
148175 end
176+
177+ @ tag :authenticated
178+ test "when authenticated, given an existing id above read access, errors" , % {
179+ conn: conn ,
180+ admin_board: admin_board
181+ } do
182+ response =
183+ conn
184+ |> get ( Routes . board_path ( conn , :find , admin_board . id ) )
185+ |> json_response ( 404 )
186+
187+ assert response [ "error" ] == "Not Found"
188+ assert response [ "message" ] == "Board not found"
189+ end
190+
191+ @ tag :authenticated
192+ test "when authenticated, given an existing id at read access, finds board" , % {
193+ conn: conn ,
194+ parent_board: board
195+ } do
196+ response =
197+ conn
198+ |> get ( Routes . board_path ( conn , :find , board . id ) )
199+ |> json_response ( 200 )
200+
201+ assert response [ "name" ] == board . name
202+ end
203+
204+ @ tag authenticated: :admin
205+ test "when authenticated as admin, given an existing id at read access, finds board" , % {
206+ conn: conn ,
207+ admin_board: admin_board
208+ } do
209+ response =
210+ conn
211+ |> get ( Routes . board_path ( conn , :find , admin_board . id ) )
212+ |> json_response ( 200 )
213+
214+ assert response [ "name" ] == admin_board . name
215+ end
216+
217+ @ tag authenticated: :admin
218+ test "when authenticated as admin, given an existing id above read access, errors" , % {
219+ conn: conn ,
220+ super_admin_board: super_admin_board
221+ } do
222+ response =
223+ conn
224+ |> get ( Routes . board_path ( conn , :find , super_admin_board . id ) )
225+ |> json_response ( 404 )
226+
227+ assert response [ "error" ] == "Not Found"
228+ assert response [ "message" ] == "Board not found"
229+ end
230+
231+ @ tag authenticated: :super_admin
232+ test "when authenticated as super admin, given an existing id at read access, finds board" , % {
233+ conn: conn ,
234+ super_admin_board: super_admin_board
235+ } do
236+ response =
237+ conn
238+ |> get ( Routes . board_path ( conn , :find , super_admin_board . id ) )
239+ |> json_response ( 200 )
240+
241+ assert response [ "name" ] == super_admin_board . name
242+ end
149243 end
150244
151245 describe "slug_to_id/2" do
0 commit comments