@@ -224,6 +224,189 @@ defmodule CadetWeb.UserControllerTest do
224
224
conn = get ( conn , "/v1/user" , nil )
225
225
assert response ( conn , 401 ) =~ "Unauthorised"
226
226
end
227
+
228
+ @ tag authenticate: :student
229
+ test "success, student adding collectibles" , % { conn: conn } do
230
+ user = conn . assigns . current_user
231
+ new_game_states = % {
232
+ "completed_quests" => [ "haha" ] ,
233
+ "collectibles" => % {
234
+ "HAHA" => "HAHA.png"
235
+ }
236
+ }
237
+ Cadet.GameStates . update ( user , new_game_states )
238
+ resp =
239
+ conn
240
+ |> get ( "/v1/user" )
241
+ |> json_response ( 200 )
242
+ assert new_game_states == resp [ "gameStates" ]
243
+ end
244
+
245
+ @ tag authenticate: :student
246
+ test "success, student deleting collectibles" , % { conn: conn } do
247
+ user = conn . assigns . current_user
248
+ new_game_states = % {
249
+ "completed_quests" => [ "haha" ] ,
250
+ "collectibles" => % {
251
+ "HAHA" => "HAHA.png"
252
+ }
253
+ }
254
+ Cadet.GameStates . update ( user , new_game_states )
255
+ resp =
256
+ conn
257
+ |> get ( "/v1/user" )
258
+ |> json_response ( 200 )
259
+ assert new_game_states == resp [ "gameStates" ]
260
+
261
+ Cadet.GameStates . clear ( user )
262
+ resp_2 =
263
+ conn
264
+ |> get ( "/v1/user" )
265
+ |> json_response ( 200 )
266
+ assert % {
267
+ "completed_quests" => [ ] ,
268
+ "collectibles" => % { }
269
+ } == resp_2 [ "gameStates" ]
270
+ end
271
+
272
+ @ tag authenticate: :student
273
+ test "success, student retrieving collectibles" , % { conn: conn } do
274
+ resp =
275
+ conn
276
+ |> get ( "/v1/user" )
277
+ |> json_response ( 200 )
278
+ assert % {
279
+ "completed_quests" => [ ] ,
280
+ "collectibles" => % { }
281
+ } == resp [ "gameStates" ]
282
+ end
283
+
284
+
285
+ @ tag authenticate: :staff
286
+ test "forbidden, staff adding collectibles" , % { conn: conn } do
287
+ user = conn . assigns . current_user
288
+ new_game_states = % {
289
+ "completed_quests" => [ "haha" ] ,
290
+ "collectibles" => % {
291
+ "HAHA" => "HAHA.png"
292
+ }
293
+ }
294
+
295
+ assert Cadet.GameStates . update ( user , new_game_states ) == { :error , { :forbidden , "Please try again later." } }
296
+ resp =
297
+ conn
298
+ |> get ( "/v1/user" )
299
+ |> json_response ( 200 )
300
+ assert % {
301
+ "completed_quests" => [ ] ,
302
+ "collectibles" => % { }
303
+ } == resp [ "gameStates" ]
304
+ end
305
+
306
+ @ tag authenticate: :staff
307
+ test "forbidden, staff deleting collectibles" , % { conn: conn } do
308
+ user = conn . assigns . current_user
309
+ new_game_states = % {
310
+ "completed_quests" => [ "haha" ] ,
311
+ "collectibles" => % {
312
+ "HAHA" => "HAHA.png"
313
+ }
314
+ }
315
+ assert Cadet.GameStates . update ( user , new_game_states ) == { :error , { :forbidden , "Please try again later." } }
316
+ resp =
317
+ conn
318
+ |> get ( "/v1/user" )
319
+ |> json_response ( 200 )
320
+ assert % {
321
+ "completed_quests" => [ ] ,
322
+ "collectibles" => % { }
323
+ } == resp [ "gameStates" ]
324
+
325
+ assert Cadet.GameStates . clear ( user ) == { :error , { :forbidden , "Please try again later." } }
326
+ resp_2 =
327
+ conn
328
+ |> get ( "/v1/user" )
329
+ |> json_response ( 200 )
330
+ assert % {
331
+ "completed_quests" => [ ] ,
332
+ "collectibles" => % { }
333
+ } == resp_2 [ "gameStates" ]
334
+ end
335
+
336
+ @ tag authenticate: :staff
337
+ test "success, staff retrieving collectibles" , % { conn: conn } do
338
+ resp =
339
+ conn
340
+ |> get ( "/v1/user" )
341
+ |> json_response ( 200 )
342
+ assert % {
343
+ "completed_quests" => [ ] ,
344
+ "collectibles" => % { }
345
+ } == resp [ "gameStates" ]
346
+ end
347
+
348
+ @ tag authenticate: :admin
349
+ test "forbidden, admin adding collectibles" , % { conn: conn } do
350
+ user = conn . assigns . current_user
351
+ new_game_states = % {
352
+ "completed_quests" => [ "haha" ] ,
353
+ "collectibles" => % {
354
+ "HAHA" => "HAHA.png"
355
+ }
356
+ }
357
+
358
+ assert Cadet.GameStates . update ( user , new_game_states ) == { :error , { :forbidden , "Please try again later." } }
359
+ resp =
360
+ conn
361
+ |> get ( "/v1/user" )
362
+ |> json_response ( 200 )
363
+ assert % {
364
+ "completed_quests" => [ ] ,
365
+ "collectibles" => % { }
366
+ } == resp [ "gameStates" ]
367
+ end
368
+
369
+ @ tag authenticate: :admin
370
+ test "forbidden, admin deleting collectibles" , % { conn: conn } do
371
+ user = conn . assigns . current_user
372
+ new_game_states = % {
373
+ "completed_quests" => [ "haha" ] ,
374
+ "collectibles" => % {
375
+ "HAHA" => "HAHA.png"
376
+ }
377
+ }
378
+ assert Cadet.GameStates . update ( user , new_game_states ) == { :error , { :forbidden , "Please try again later." } }
379
+ resp =
380
+ conn
381
+ |> get ( "/v1/user" )
382
+ |> json_response ( 200 )
383
+ assert % {
384
+ "completed_quests" => [ ] ,
385
+ "collectibles" => % { }
386
+ } == resp [ "gameStates" ]
387
+
388
+ assert Cadet.GameStates . clear ( user ) == { :error , { :forbidden , "Please try again later." } }
389
+ resp_2 =
390
+ conn
391
+ |> get ( "/v1/user" )
392
+ |> json_response ( 200 )
393
+ assert % {
394
+ "completed_quests" => [ ] ,
395
+ "collectibles" => % { }
396
+ } == resp_2 [ "gameStates" ]
397
+ end
398
+
399
+ @ tag authenticate: :admin
400
+ test "success, admin retrieving collectibles" , % { conn: conn } do
401
+ resp =
402
+ conn
403
+ |> get ( "/v1/user" )
404
+ |> json_response ( 200 )
405
+ assert % {
406
+ "completed_quests" => [ ] ,
407
+ "collectibles" => % { }
408
+ } == resp [ "gameStates" ]
409
+ end
227
410
end
228
411
229
412
defp build_assessments_starting_at ( time ) do
0 commit comments