@@ -370,8 +370,34 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
370370 end
371371 end
372372
373- describe "POST /, staff only" do
373+ describe "POST /, non-admin staff only" do
374374 @ tag authenticate: :staff
375+ test "unauthorized" , % { conn: conn } do
376+ test_cr = conn . assigns . test_cr
377+ course = test_cr . course
378+ config = insert ( :assessment_config , % { course: course } )
379+
380+ assessment =
381+ build ( :assessment ,
382+ course: course ,
383+ course_id: course . id ,
384+ config: config ,
385+ config_id: config . id ,
386+ is_published: true
387+ )
388+
389+ questions = build_list ( 5 , :question , assessment: nil )
390+
391+ xml = XMLGenerator . generate_xml_for ( assessment , questions )
392+ force_update = "false"
393+ body = % { assessment: xml , forceUpdate: force_update , assessmentConfigId: config . id }
394+ conn = post ( conn , build_url ( course . id ) , body )
395+ assert response ( conn , 403 ) == "Forbidden"
396+ end
397+ end
398+
399+ describe "POST /, admin only" do
400+ @ tag authenticate: :admin
375401 test "successful" , % { conn: conn } do
376402 test_cr = conn . assigns . test_cr
377403 course = test_cr . course
@@ -429,7 +455,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
429455 assert expected_assessment != nil
430456 end
431457
432- @ tag authenticate: :staff
458+ @ tag authenticate: :admin
433459 test "upload empty xml" , % { conn: conn } do
434460 test_cr = conn . assigns . test_cr
435461 course = test_cr . course
@@ -487,6 +513,18 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
487513
488514 describe "DELETE /:assessment_id, staff only" do
489515 @ tag authenticate: :staff
516+ test "unauthorized" , % { conn: conn } do
517+ test_cr = conn . assigns . test_cr
518+ course = test_cr . course
519+ config = insert ( :assessment_config , % { course: course } )
520+ assessment = insert ( :assessment , % { course: course , config: config } )
521+ conn = delete ( conn , build_url ( course . id , assessment . id ) )
522+ assert response ( conn , 403 ) == "Forbidden"
523+ end
524+ end
525+
526+ describe "DELETE /:assessment_id, admin only" do
527+ @ tag authenticate: :admin
490528 test "successful" , % { conn: conn } do
491529 test_cr = conn . assigns . test_cr
492530 course = test_cr . course
@@ -497,7 +535,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
497535 assert is_nil ( Repo . get ( Assessment , assessment . id ) )
498536 end
499537
500- @ tag authenticate: :staff
538+ @ tag authenticate: :admin
501539 test "error due to different course" , % { conn: conn } do
502540 test_cr = conn . assigns . test_cr
503541 course = test_cr . course
@@ -509,19 +547,6 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
509547 assert response ( conn , 403 ) == "User not allow to delete assessments from another course"
510548 refute is_nil ( Repo . get ( Assessment , assessment . id ) )
511549 end
512-
513- # @tag authenticate: :staff
514- # test "error due to different course", %{conn: conn} do
515- # test_cr = conn.assigns.test_cr
516- # course = test_cr.course
517- # another_course = insert(:course)
518- # config = insert(:assessment_config, %{course: another_course})
519- # assessment = insert(:assessment, %{course: another_course, config: config})
520-
521- # conn = delete(conn, build_url(course.id, assessment.id))
522- # assert response(conn, 403) == "User not allow to delete assessments from another course"
523- # refute is_nil(Repo.get(Assessment, assessment.id))
524- # end
525550 end
526551
527552 describe "POST /:assessment_id, unauthenticated, publish" do
@@ -544,8 +569,20 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
544569 end
545570 end
546571
547- describe "POST /:assessment_id, staff only, publish" do
572+ describe "POST /:assessment_id, non-admin staff only, publish" do
548573 @ tag authenticate: :staff
574+ test "forbidden" , % { conn: conn } do
575+ test_cr = conn . assigns . test_cr
576+ course = test_cr . course
577+ config = insert ( :assessment_config , % { course: course } )
578+ assessment = insert ( :assessment , % { course: course , config: config } )
579+ conn = post ( conn , build_url ( course . id , assessment . id ) , % { isPublished: true } )
580+ assert response ( conn , 403 ) == "Forbidden"
581+ end
582+ end
583+
584+ describe "POST /:assessment_id, admin only, publish" do
585+ @ tag authenticate: :admin
549586 test "successful toggle from published to unpublished" , % { conn: conn } do
550587 test_cr = conn . assigns . test_cr
551588 course = test_cr . course
@@ -557,7 +594,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
557594 refute expected
558595 end
559596
560- @ tag authenticate: :staff
597+ @ tag authenticate: :admin
561598 test "successful toggle from unpublished to published" , % { conn: conn } do
562599 test_cr = conn . assigns . test_cr
563600 course = test_cr . course
@@ -608,8 +645,38 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
608645 end
609646 end
610647
611- describe "POST /:assessment_id, staff only" do
648+ describe "POST /:assessment_id, non-admin staff only" do
612649 @ tag authenticate: :staff
650+ test "forbidden" , % { conn: conn } do
651+ test_cr = conn . assigns . test_cr
652+ course = test_cr . course
653+ config = insert ( :assessment_config , % { course: course } )
654+ assessment = insert ( :assessment , % { course: course , config: config } )
655+
656+ new_open_at =
657+ Timex . now ( )
658+ |> Timex . beginning_of_day ( )
659+ |> Timex . shift ( days: 3 )
660+ |> Timex . shift ( hours: 4 )
661+
662+ new_open_at_string =
663+ new_open_at
664+ |> Timex . format! ( "{ISO:Extended}" )
665+
666+ new_close_at = Timex . shift ( new_open_at , days: 7 )
667+
668+ new_close_at_string =
669+ new_close_at
670+ |> Timex . format! ( "{ISO:Extended}" )
671+
672+ new_dates = % { openAt: new_open_at_string , closeAt: new_close_at_string }
673+ conn = post ( conn , build_url ( course . id , assessment . id ) , new_dates )
674+ assert response ( conn , 403 ) == "Forbidden"
675+ end
676+ end
677+
678+ describe "POST /:assessment_id, admin only" do
679+ @ tag authenticate: :admin
613680 test "successful" , % { conn: conn } do
614681 test_cr = conn . assigns . test_cr
615682 course = test_cr . course
@@ -658,7 +725,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
658725 assert [ assessment . open_at , assessment . close_at ] == [ new_open_at , new_close_at ]
659726 end
660727
661- @ tag authenticate: :staff
728+ @ tag authenticate: :admin
662729 test "allowed to change open time of opened assessments" , % { conn: conn } do
663730 test_cr = conn . assigns . test_cr
664731 course = test_cr . course
@@ -703,7 +770,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
703770 assert [ assessment . open_at , assessment . close_at ] == [ new_open_at , close_at ]
704771 end
705772
706- @ tag authenticate: :staff
773+ @ tag authenticate: :admin
707774 test "not allowed to set close time to before open time" , % { conn: conn } do
708775 test_cr = conn . assigns . test_cr
709776 course = test_cr . course
@@ -748,7 +815,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
748815 assert [ assessment . open_at , assessment . close_at ] == [ open_at , close_at ]
749816 end
750817
751- @ tag authenticate: :staff
818+ @ tag authenticate: :admin
752819 test "successful, set close time to before current time" , % { conn: conn } do
753820 test_cr = conn . assigns . test_cr
754821 course = test_cr . course
@@ -793,7 +860,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
793860 assert [ assessment . open_at , assessment . close_at ] == [ open_at , new_close_at ]
794861 end
795862
796- @ tag authenticate: :staff
863+ @ tag authenticate: :admin
797864 test "successful, set open time to before current time" , % { conn: conn } do
798865 test_cr = conn . assigns . test_cr
799866 course = test_cr . course
@@ -838,7 +905,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
838905 assert [ assessment . open_at , assessment . close_at ] == [ new_open_at , close_at ]
839906 end
840907
841- @ tag authenticate: :staff
908+ @ tag authenticate: :admin
842909 test "successful, set hasTokenCounter and hasVotingFeatures to true" , % { conn: conn } do
843910 test_cr = conn . assigns . test_cr
844911 course = test_cr . course
@@ -873,7 +940,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do
873940 ]
874941 end
875942
876- @ tag authenticate: :staff
943+ @ tag authenticate: :admin
877944 test "successful, set hasTokenCounter and hasVotingFeatures to false" , % { conn: conn } do
878945 test_cr = conn . assigns . test_cr
879946 course = test_cr . course
0 commit comments