No report found for this shard (missing artifact).
| Suite | Status | Total | Passed | Failed | Errors | Skipped | Duration |
|---|---|---|---|---|---|---|---|
| assignment | PASSED | 274 | 272 | 0 | 0 | 2 | 3m 20s |
| health | PASSED | 11 | 10 | 0 | 0 | 1 | 1.91s |
| questions | PASSED | 4 | 4 | 0 | 0 | 0 | 2.21s |
assignment| Class | Test | Status | Duration |
|---|---|---|---|
| tests.assignment.test_EI_1101_student_multiple_attempts | test_EI_TC_1101_positive_second_attempt_starts_with_answers_reset [1] | PASSED | 2.48s |
| tests.assignment.test_EI_1101_student_multiple_attempts | test_EI_TC_1101_positive_latest_attempt_grade_wins [2] | PASSED | 2.27s |
| tests.assignment.test_EI_1101_student_multiple_attempts | test_EI_TC_1101_negative_third_attempt_is_refused [3] | PASSED | 1.73s |
| tests.assignment.test_EI_1114_student_assignments_fetch_all_class_code | test_EI_TC_4481_positive_valid_class_code_returns_assignments [4] | PASSED | 0.63s |
| tests.assignment.test_EI_1114_student_assignments_fetch_all_class_code | test_EI_TC_4480_negative_empty_class_code_rejected [5] | PASSED | 0.13s |
| tests.assignment.test_EI_1114_student_assignments_fetch_all_class_code | test_EI_TC_edge_malformed_class_code_fetch_all_assignments [6] | PASSED | 0.09s |
| tests.assignment.test_EI_1114_student_assignments_fetch_all_class_code | test_EI_TC_edge_unknown_class_code_fetch_all_assignments [7] | PASSED | 0.10s |
| tests.assignment.test_EI_1121_students_assignment_questions_fetch | test_EI_TC_3729_positive_fetch_within_time_limit_ignores_client_clock [8] | PASSED | 1.38s |
| tests.assignment.test_EI_1121_students_assignment_questions_fetch | test_EI_TC_3730_positive_near_expiry_remaining_time_decrements_server_side [9] | PASSED | 0.94s |
| tests.assignment.test_EI_1121_students_assignment_questions_fetch | test_EI_TC_3731_negative_tampered_request_time_headers_do_not_extend_timer [10] | PASSED | 1.07s |
| tests.assignment.test_EI_1121_students_assignment_questions_fetch | test_EI_TC_3732_negative_elapsed_timer_returns_403_time_expired [11] | PASSED | 15.88s |
| tests.assignment.test_EI_1165_item_analysis_readable_choice_text | test_EI_TC_1165_positive_choice_text_is_readable_not_json [12] | PASSED | 1.49s |
| tests.assignment.test_EI_1177_mixed_actor_assignment_questions | test_round2_free_response_question_loads_without_500 [13] | PASSED | 1.62s |
| tests.assignment.test_EI_1195_gradebook_matches_student_grade | test_EI_TC_3710_positive_graded_assignment_matches [14] | PASSED | 1.42s |
| tests.assignment.test_EI_1195_gradebook_matches_student_grade | test_EI_TC_3711_positive_missed_assignment_matches [15] | PASSED | 1.17s |
| tests.assignment.test_EI_1210_late_submission_approval | test_EI_TC_4414_step_1_teacher_creates_closed_assignment_with_late_flag [16] | PASSED | 1.68s |
| tests.assignment.test_EI_1210_late_submission_approval | test_EI_TC_4414_step_2_student_late_submit_returns_pending [17] | PASSED | 0.00s |
| tests.assignment.test_EI_1210_late_submission_approval | test_EI_TC_4414_step_3_teacher_fetches_pending_late_submissions [18] | PASSED | 0.00s |
| tests.assignment.test_EI_1210_late_submission_approval | test_EI_TC_4414_step_4_teacher_approves_late_submission [19] | PASSED | 0.00s |
| tests.assignment.test_EI_1210_late_submission_approval | test_EI_TC_4414_step_5_teacher_rejects_late_submission [20] | PASSED | 1.20s |
| tests.assignment.test_EI_1218_assignment_title_validation | test_EI_TC_2916_negative_punctuation_only_title_is_refused [21] | PASSED | 0.72s |
| tests.assignment.test_EI_1218_assignment_title_validation | test_EI_TC_2917_negative_whitespace_only_title_is_refused [22] | PASSED | 0.85s |
| tests.assignment.test_EI_141_student_submission_details | test_EI_TC_141_positive_the_student_sees_the_title_and_description_as_authored [23] | PASSED | 1.04s |
| tests.assignment.test_EI_141_student_submission_details | test_EI_TC_141_positive_summary_tiles_report_score_questions_submitted_and_attempts [24] | PASSED | 1.30s |
| tests.assignment.test_EI_141_student_submission_details | test_EI_TC_141_positive_time_left_is_within_the_time_allowed [25] | PASSED | 1.30s |
| tests.assignment.test_EI_141_student_submission_details | test_EI_TC_141_positive_your_answers_lists_each_question_with_its_correct_answer [26] | PASSED | 1.33s |
| tests.assignment.test_EI_141_student_submission_details | test_EI_TC_141_positive_each_submitted_answer_is_marked_right_or_wrong_with_its_points … | PASSED | 1.37s |
| tests.assignment.test_EI_141_student_submission_details | test_EI_TC_141_edge_hidden_grading_leaves_the_correct_answers_out [28] | PASSED | 1.30s |
| tests.assignment.test_EI_187_staar_assignment_analytics_summary | test_EI_TC_896_positive_staar_summary_after_one_correct_submission [29] | PASSED | 1.23s |
| tests.assignment.test_EI_187_staar_assignment_analytics_summary | test_EI_TC_897_edge_staar_summary_with_no_submission [30] | PASSED | 0.95s |
| tests.assignment.test_EI_188_assignment_analytics_stats | test_EI_TC_893_positive_stats_and_pass_fail_after_one_submission [31] | PASSED | 1.22s |
| tests.assignment.test_EI_188_assignment_analytics_stats | test_EI_TC_894_edge_every_stat_is_zero_with_no_submission [32] | PASSED | 1.04s |
| tests.assignment.test_EI_190_act_assignment_analytics_summary | test_EI_TC_190_positive_act_summary_after_one_correct_submission [33] | PASSED | 1.26s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_214_teacher_create_assignment [34] | PASSED | 0.75s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_assignment_timestamps_chronological [35] | PASSED | 0.29s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_assignment_ids_unique [36] | PASSED | 0.23s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_assignment_required_fields_not_empty [37] | PASSED | 0.21s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_950_create_assignment_for_class_success [38] | PASSED | 0.19s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_951_create_assignment_missing_required_fields_returns_error [39] | PASSED | 0.19s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_953_fetch_assignments_by_class_code_staff_view [40] | PASSED | 0.47s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_954_update_assignment_unauthorized_or_invalid_owner[unauthorized] [41] | PASSED | 0.27s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_954_update_assignment_unauthorized_or_invalid_owner[different_owner] [42] | PASSED | 0.20s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_956_analytics_summary_fetch_for_assignment [43] | PASSED | 0.19s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_959_create_assignment_missing_required_fields_variant [44] | PASSED | 0.19s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_961_unauthorized_user_cannot_create_assignment [45] | PASSED | 0.14s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_962_update_non_existent_assignment [46] | PASSED | 0.09s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_TC_962_update_malformed_assignment_id [47] | PASSED | 0.08s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_1170_assigned_class_missing_returns_400 [48] | PASSED | 0.21s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_1170_assigned_class_empty_list_returns_400 [49] | PASSED | 0.18s |
| tests.assignment.test_EI_214_teacher_create_assignment | test_EI_1170_assigned_class_non_empty_returns_201 [50] | PASSED | 0.34s |
| tests.assignment.test_EI_2365_analytics | test_EI_2365_analytics_summary_no_auth_returns_unauthorized [51] | PASSED | 0.04s |
| tests.assignment.test_EI_2365_analytics | test_EI_2365_analytics_summary_invalid_uuid_returns_400 [52] | PASSED | 0.47s |
| tests.assignment.test_EI_2365_analytics | test_EI_2365_analytics_summary_nonexistent_class_returns_404 [53] | PASSED | 0.17s |
| tests.assignment.test_EI_2365_analytics | test_EI_2365_analytics_summary_no_data_leakage [54] | PASSED | 0.18s |
| tests.assignment.test_EI_2365_analytics | test_EI_2365_item_analysis_invalid_uuid_returns_400 [55] | PASSED | 0.23s |
| tests.assignment.test_EI_2386_student_submission_page_contract | test_EI_TC_2840_positive_details_carry_the_question_count_and_no_question_bodies [56] | PASSED | 0.95s |
| tests.assignment.test_EI_2386_student_submission_page_contract | test_EI_TC_2841_positive_open_and_close_are_the_seeded_utc_instants [57] | PASSED | 0.14s |
| tests.assignment.test_EI_2386_student_submission_page_contract | test_EI_2386_positive_submission_summary_counts_the_same_questions [58] | PASSED | 0.43s |
| tests.assignment.test_EI_2479_student_exam_feedback | test_EI_TC_2479_positive_all_correct_answers_score_100_and_each_is_flagged_correct [59] | PASSED | 1.23s |
| tests.assignment.test_EI_2479_student_exam_feedback | test_EI_TC_2479_edge_one_right_one_wrong_scores_50_and_only_one_is_flagged_correct [60] | PASSED | 1.30s |
| tests.assignment.test_EI_2479_student_exam_feedback | test_EI_TC_1205_positive_submission_view_lists_each_question_with_its_answer [61] | PASSED | 1.35s |
| tests.assignment.test_EI_2518_title_edit_keeps_settings | test_EI_TC_2164_positive_title_edit_keeps_the_settings [62] | PASSED | 1.21s |
| tests.assignment.test_EI_2533_student_assignment_before_open_date | test_EI_TC_2533_negative_questions_fetch_before_open_date_is_refused [63] | PASSED | 1.07s |
| tests.assignment.test_EI_2547_reuse_global_assignment_and_verdict | test_EI_TC_1100_positive_the_global_assignment_library_is_listed_with_titles [64] | PASSED | 0.20s |
| tests.assignment.test_EI_2547_reuse_global_assignment_and_verdict | test_EI_TC_2547_positive_a_reused_global_assignment_is_visible_to_the_student [65] | PASSED | 1.10s |
| tests.assignment.test_EI_2547_reuse_global_assignment_and_verdict | test_EI_TC_2547_positive_all_correct_answers_are_graded_100_and_passed [66] | PASSED | 1.28s |
| tests.assignment.test_EI_2547_reuse_global_assignment_and_verdict | test_EI_TC_2547_negative_all_wrong_answers_are_graded_0_and_failed [67] | PASSED | 1.15s |
| tests.assignment.test_EI_2551_delete_assignment | test_EI_TC_2551_positive_deleted_assignment_is_gone_for_the_student [68] | PASSED | 1.14s |
| tests.assignment.test_EI_2551_delete_assignment | test_EI_TC_2551_negative_repeat_and_foreign_deletes_are_404 [69] | PASSED | 1.20s |
| tests.assignment.test_EI_2559_edit_assigned_test_title | test_EI_TC_2137_positive_renamed_assignment_shows_the_new_title_to_the_student [70] | PASSED | 1.07s |
| tests.assignment.test_EI_2563_duplicate_assignment_into_two_classes | test_EI_TC_2563_positive_re_using_the_questions_creates_a_distinct_assignment [71] | PASSED | 1.77s |
| tests.assignment.test_EI_2563_duplicate_assignment_into_two_classes | test_EI_TC_2563_positive_each_assignment_is_listed_only_in_its_own_class [72] | PASSED | 2.09s |
| tests.assignment.test_EI_2563_duplicate_assignment_into_two_classes | test_EI_TC_2563_positive_editing_the_original_leaves_the_copy_unchanged [73] | PASSED | 2.29s |
| tests.assignment.test_EI_2563_duplicate_assignment_into_two_classes | test_EI_TC_2563_edge_deleting_the_original_leaves_the_copy_and_the_questions [74] | PASSED | 2.70s |
| tests.assignment.test_EI_2578_update_assignment_custom_settings | test_EI_TC_2578_positive_instructions_and_late_submissions_are_persisted [75] | PASSED | 1.85s |
| tests.assignment.test_EI_2578_update_assignment_custom_settings | test_EI_TC_2578_positive_late_submissions_update_leaves_the_other_settings_unchanged [76] | PASSED | 1.26s |
| tests.assignment.test_EI_2578_update_assignment_custom_settings | test_EI_TC_2578_positive_adding_a_higher_point_question_raises_the_total_points [77] | PASSED | 1.35s |
| tests.assignment.test_EI_2581_title_edit_keeps_content_and_results | test_EI_TC_2581_positive_title_edit_keeps_content_and_existing_results [78] | PASSED | 1.57s |
| tests.assignment.test_EI_2584_student_attempts_left_from_settings | test_EI_TC_1820_positive_two_allowed_attempts_shows_two_left [79] | PASSED | 0.93s |
| tests.assignment.test_EI_2584_student_attempts_left_from_settings | test_EI_TC_1821_positive_three_allowed_attempts_shows_three_left [80] | PASSED | 0.94s |
| tests.assignment.test_EI_2587_update_assignment_settings | test_EI_TC_2587_positive_updated_settings_take_effect [81] | PASSED | 1.03s |
| tests.assignment.test_EI_2633_assignment_required_fields | test_EI_TC_1899_negative_empty_title_is_refused [82] | PASSED | 0.69s |
| tests.assignment.test_EI_2633_assignment_required_fields | test_EI_TC_1900_negative_empty_description_is_refused [83] | PASSED | 0.74s |
| tests.assignment.test_EI_2756_individual_student_answers_analytics | test_EI_TC_2756_positive_a_correct_submission_is_shown_with_its_score_and_answer [84] | PASSED | 1.21s |
| tests.assignment.test_EI_2756_individual_student_answers_analytics | test_EI_TC_1304_positive_the_review_row_names_the_question_and_the_students_answer [85] | PASSED | 1.27s |
| tests.assignment.test_EI_2756_individual_student_answers_analytics | test_EI_TC_2756_negative_a_wrong_submission_is_shown_as_failed_with_no_points [86] | PASSED | 1.17s |
| tests.assignment.test_EI_2756_individual_student_answers_analytics | test_EI_TC_2756_edge_a_student_who_has_not_submitted_shows_the_empty_state [87] | PASSED | 0.98s |
| tests.assignment.test_EI_2906_drag_and_drop_answer_grading | test_EI_TC_2906_positive_each_choice_in_its_own_blank_is_graded_correct [88] | PASSED | 1.12s |
| tests.assignment.test_EI_2906_drag_and_drop_answer_grading | test_EI_TC_2906_negative_the_right_choices_in_swapped_blanks_are_graded_wrong [89] | PASSED | 1.05s |
| tests.assignment.test_EI_2906_drag_and_drop_answer_grading | test_EI_TC_2906_negative_a_second_submit_past_the_allowed_attempt_is_refused [90] | PASSED | 1.13s |
| tests.assignment.test_EI_3004_reschedule_assignment_dates | test_EI_TC_3004_positive_rescheduled_dates_are_stored [91] | PASSED | 1.05s |
| tests.assignment.test_EI_3067_data_analytics_endpoints | test_EI_TC_3057_positive_summary_answers_with_numeric_stats [92] | PASSED | 1.23s |
| tests.assignment.test_EI_3067_data_analytics_endpoints | test_EI_TC_3058_positive_item_analysis_has_one_row_per_question [93] | PASSED | 1.25s |
| tests.assignment.test_EI_3182_assignment_instructions_and_rubric | test_EI_TC_3182_positive_instructions_and_rubric_reach_the_student [94] | PASSED | 1.03s |
| tests.assignment.test_EI_3182_assignment_instructions_and_rubric | test_EI_TC_3182_negative_rubric_criterion_without_levels_is_refused [95] | PASSED | 0.72s |
| tests.assignment.test_EI_3205_item_analysis_counts | test_EI_TC_3205_positive_correct_submission_is_counted [96] | PASSED | 1.24s |
| tests.assignment.test_EI_3205_item_analysis_counts | test_EI_TC_3197_edge_no_submission_counts_zero [97] | PASSED | 0.99s |
| tests.assignment.test_EI_3271_student_save_draft | test_EI_TC_3271_positive_saving_a_draft_does_not_submit_or_use_an_attempt [98] | PASSED | 1.61s |
| tests.assignment.test_EI_3271_student_save_draft | test_EI_TC_3145_positive_the_saved_answer_is_there_when_the_student_returns [99] | PASSED | 1.25s |
| tests.assignment.test_EI_3271_student_save_draft | test_EI_TC_3387_positive_the_last_saved_answer_is_the_one_graded [100] | PASSED | 1.35s |
| tests.assignment.test_EI_3271_student_save_draft | test_EI_TC_2470_negative_saving_after_the_submit_is_refused_and_the_grade_stays [101] | PASSED | 1.25s |
| tests.assignment.test_EI_3286_show_analytics | test_EI_3286_show_analytics_no_auth_returns_unauthorized [102] | PASSED | 0.04s |
| tests.assignment.test_EI_3286_show_analytics | test_EI_3286_show_analytics_malformed_uuid_returns_400 [103] | PASSED | 0.48s |
| tests.assignment.test_EI_3286_show_analytics | test_EI_3286_show_analytics_short_uuid_returns_400 [104] | PASSED | 0.09s |
| tests.assignment.test_EI_3286_show_analytics | test_EI_3286_show_analytics_long_uuid_returns_400 [105] | PASSED | 0.09s |
| tests.assignment.test_EI_3286_show_analytics | test_EI_3286_show_analytics_nonexistent_uuid_returns_404 [106] | PASSED | 0.09s |
| tests.assignment.test_EI_3286_show_analytics | test_EI_3286_show_analytics_special_chars_returns_400 [107] | PASSED | 0.08s |
| tests.assignment.test_EI_3293_student_assignment_opens_at_date_open | test_EI_TC_3293_positive_questions_become_available_at_date_open [108] | PASSED | 25.96s |
| tests.assignment.test_EI_3295_student_submit_after_close | test_EI_TC_3295_negative_submit_after_close_is_refused [109] | PASSED | 1.18s |
| tests.assignment.test_EI_3295_student_submit_after_close | test_EI_TC_3295_negative_save_after_close_is_refused [110] | PASSED | 1.05s |
| tests.assignment.test_EI_3296_student_no_attempts_remaining | test_EI_TC_3296_negative_no_new_attempt_once_the_only_one_is_used [111] | PASSED | 1.25s |
| tests.assignment.test_EI_3296_student_no_attempts_remaining | test_EI_TC_3296_negative_resubmit_refused_and_previous_result_viewable [112] | PASSED | 1.43s |
| tests.assignment.test_EI_3385_title_edit_keeps_time_allowed | test_EI_TC_3385_positive_a_title_only_edit_keeps_the_time_allowed [113] | PASSED | 1.24s |
| tests.assignment.test_EI_3387_student_answers_recorded_correctly | test_EI_TC_3387_positive_saved_answer_is_returned_when_the_assignment_is_reopened [114] | PASSED | 1.14s |
| tests.assignment.test_EI_3387_student_answers_recorded_correctly | test_EI_TC_3387_edge_the_last_saved_answer_is_the_one_graded [115] | PASSED | 1.28s |
| tests.assignment.test_EI_3436_library_assignment_access | test_EI_TC_3436_positive_library_assignment_opens_with_details_and_questions [116] | PASSED | 0.34s |
| tests.assignment.test_EI_3437_reused_global_assignment_locked | test_EI_3437_negative_changing_the_title_of_a_reused_copy_is_403 [117] | PASSED | 0.91s |
| tests.assignment.test_EI_3437_reused_global_assignment_locked | test_EI_3437_negative_changing_the_questions_of_a_reused_copy_is_403 [118] | PASSED | 0.94s |
| tests.assignment.test_EI_3437_reused_global_assignment_locked | test_EI_3437_positive_same_title_and_questions_with_a_new_close_date_is_saved [119] | PASSED | 0.92s |
| tests.assignment.test_EI_3439_shuffle_questions | test_EI_TC_3439_positive_questions_are_shuffled_and_the_order_is_kept [120] | PASSED | 2.06s |
| tests.assignment.test_EI_3439_shuffle_questions | test_EI_TC_3439_positive_authored_order_when_shuffle_is_off [121] | PASSED | 2.21s |
| tests.assignment.test_EI_3440_shuffle_choices | test_EI_TC_3440_positive_choices_are_shuffled_within_each_question [122] | PASSED | 1.58s |
| tests.assignment.test_EI_3440_shuffle_choices | test_EI_TC_3440_edge_shuffled_choices_are_kept_for_the_attempt [123] | PASSED | 1.51s |
| tests.assignment.test_EI_R11_negative_teacher_assignments | test_EI_T288_negative_comment_delete_malformed_question_id_rejected [124] | PASSED | 0.55s |
| tests.assignment.test_EI_R11_negative_teacher_assignments | test_EI_T290_negative_comment_delete_long_or_unknown_question_id_rejected[excessively_l… | PASSED | 0.14s |
| tests.assignment.test_EI_R11_negative_teacher_assignments | test_EI_T290_negative_comment_delete_long_or_unknown_question_id_rejected[unknown_well_… | PASSED | 0.15s |
| tests.assignment.test_EI_R11_negative_teacher_assignments | test_EI_T289_negative_comment_delete_omitted_question_id_rejected [127] | PASSED | 0.01s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T616_edge_another_accounts_late_submission_cannot_be_approved [128] | PASSED | 1.24s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T568_edge_duplicate_sequential_submission_does_not_duplicate_assignment [129] Backend gap, live-verified 2026-09-15 (see module docstring): the create route has NO duplicate-submission guard — a byte-identical payload POSTed twice returns 201 each time with its own assignment_id, and the class listing shows every one. This test asserts the CORRECT idempotent contract and fail |
SKIPPED | 0.89s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T574_edge_duplicate_concurrent_submission_does_not_duplicate_assignment [130] | PASSED | 0.85s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T578_edge_fetch_assignments_empty_result_set_for_new_class [131] | PASSED | 0.48s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T569_edge_expired_bearer_rejected_on_create_assignment [132] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T575_edge_expired_bearer_rejected_on_create_assignment_on_behalf_of_staff [133] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T593_edge_expired_bearer_rejected_on_delete_assignment [134] | PASSED | 0.05s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T577_edge_expired_bearer_rejected_on_fetch_all_staff_assignments [135] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T589_edge_expired_bearer_rejected_on_override_question_points [136] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T602_edge_expired_bearer_rejected_on_add_comment [137] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T610_edge_expired_bearer_rejected_on_delete_comment [138] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T615_edge_expired_bearer_rejected_on_approve_late_submission [139] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T619_edge_expired_bearer_rejected_on_reject_late_submission [140] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T585_edge_expired_bearer_rejected_on_update_assignment [141] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T606_edge_expired_bearer_rejected_on_update_comment [142] | PASSED | 0.04s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T591_edge_malformed_assignment_id_rejected_on_delete [143] | PASSED | 0.08s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T579_edge_malformed_assignment_id_rejected_on_staff_assignment_view [144] | PASSED | 0.12s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T581_edge_malformed_assignment_id_rejected_on_fetch_my_assignment [145] | PASSED | 0.16s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T611_edge_malformed_assignment_id_rejected_on_pending_late_submissions [146] | PASSED | 0.08s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T608_edge_malformed_class_code_rejected_on_delete_comment [147] | PASSED | 0.17s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T598_edge_malformed_class_code_rejected_on_student_submission_fetch [148] | PASSED | 0.20s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T594_edge_malformed_class_code_rejected_on_analytics_summary [149] | PASSED | 0.21s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T571_edge_malformed_class_code_rejected_on_fetch_my_assignments [150] | PASSED | 0.19s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T596_edge_malformed_class_code_rejected_on_item_analysis [151] | PASSED | 0.26s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T613_edge_malformed_submission_id_rejected_on_approve_late_submission [152] | PASSED | 0.09s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T600_edge_missing_comment_field_rejected_on_add_comment [153] | PASSED | 0.21s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T604_edge_missing_comment_field_rejected_on_update_comment [154] | PASSED | 0.19s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T587_edge_missing_points_field_rejected_on_question_points_update [155] | PASSED | 0.08s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T617_edge_missing_reason_field_rejected_on_reject_late_submission [156] Backend gap, live-verified 2026-09-15 (see module docstring): omitting the required 'reason' field is accepted with HTTP 200 instead of the 422 the HTTPValidationError contract promises, so a partial write succeeds. This test asserts the CORRECT contract and fails until the field is enforced server- |
SKIPPED | 1.01s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T567_edge_missing_semester_field_rejected_on_create_assignment [157] | PASSED | 0.45s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T573_edge_missing_semester_field_rejected_on_create_on_behalf_of_staff [158] | PASSED | 0.58s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T583_edge_missing_semester_field_rejected_on_update_assignment [159] | PASSED | 0.61s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T603_edge_script_payload_in_comment_neutralised_on_add_comment [160] | PASSED | 1.01s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T607_edge_script_payload_in_comment_neutralised_on_update_comment [161] | PASSED | 1.20s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T590_edge_script_payload_in_points_neutralised_on_question_points_update [162] | PASSED | 0.71s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T620_edge_script_payload_in_reason_neutralised_on_reject_late_submission [163] | PASSED | 1.37s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T570_edge_script_payload_in_semester_neutralised_on_create_assignment [164] | PASSED | 0.49s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T576_edge_script_payload_in_semester_neutralised_on_create_on_behalf_of_staff [… | PASSED | 0.55s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T586_edge_script_payload_in_semester_neutralised_on_update_assignment [166] | PASSED | 0.70s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T592_edge_unknown_assignment_id_not_found_on_delete [167] | PASSED | 0.09s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T580_edge_unknown_assignment_id_not_found_on_staff_assignment_view [168] | PASSED | 0.13s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T582_edge_unknown_assignment_id_not_found_on_fetch_my_assignment [169] | PASSED | 0.17s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T612_edge_unknown_assignment_id_not_found_on_pending_late_submissions [170] | PASSED | 0.08s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T588_edge_unknown_assignment_id_not_found_on_question_points_update [171] | PASSED | 0.09s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T584_edge_unknown_assignment_id_not_found_on_update_assignment [172] | PASSED | 0.08s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T601_edge_unknown_class_code_not_found_on_add_comment [173] | PASSED | 0.21s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T609_edge_unknown_class_code_not_found_on_delete_comment [174] | PASSED | 0.18s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T599_edge_unknown_class_code_not_found_on_student_submission_fetch [175] | PASSED | 0.17s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T572_edge_unknown_class_code_not_found_on_fetch_my_assignments [176] | PASSED | 0.17s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T597_edge_unknown_class_code_not_found_on_item_analysis [177] | PASSED | 0.21s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T605_edge_unknown_class_code_not_found_on_update_comment [178] | PASSED | 0.17s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T614_edge_unknown_submission_id_not_found_on_approve_late_submission [179] | PASSED | 0.08s |
| tests.assignment.test_EI_R29_edge_teacher_assignments | test_EI_T618_edge_unknown_submission_id_not_found_on_reject_late_submission [180] | PASSED | 0.14s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T751_edge_omit_semester_rejected_on_create_assignment [181] | PASSED | 0.67s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T752_edge_duplicate_create_sequential_does_not_duplicate_assignment [182] | PASSED | 0.49s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T760_edge_duplicate_create_concurrent_does_not_duplicate_assignment [183] | PASSED | 0.44s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T766_edge_duplicate_create_retry_does_not_duplicate_assignment [184] | PASSED | 0.60s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T755_edge_malformed_assignment_id_rejected_on_view [185] | PASSED | 0.08s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T769_edge_malformed_assignment_id_rejected_on_show_analytics [186] | PASSED | 0.08s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T775_edge_malformed_assignment_id_rejected_on_delete [187] | PASSED | 0.11s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T763_edge_malformed_submission_id_rejected_on_review [188] | PASSED | 0.10s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T759_edge_omit_assignment_id_rejected_on_answer [189] | PASSED | 0.11s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T762_edge_script_payload_in_assignment_id_neutralised_on_answer [190] | PASSED | 0.09s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T765_edge_omit_type_rejected_on_share [191] | PASSED | 0.08s |
| tests.assignment.test_EI_R39_edge_shared_assignments | test_EI_T771_edge_omit_semester_rejected_on_update_assignment [192] | PASSED | 0.40s |
| tests.assignment.test_assignments_common_view | test_common_view_returns_assignment [193] | PASSED | 0.80s |
| tests.assignment.test_assignments_common_view | test_common_view_no_auth_returns_401 [194] | PASSED | 0.20s |
| tests.assignment.test_next_adaptive_item_served | test_next_adaptive_item_is_served_based_on_previous_response [195] | PASSED | 0.93s |
| tests.assignment.test_next_adaptive_item_served | test_next_adaptive_item_rejects_malformed_assignment_identifier [196] | PASSED | 0.09s |
| tests.assignment.test_next_adaptive_item_served | test_next_adaptive_item_rejects_malformed_question_classification [197] | PASSED | 0.22s |
| tests.assignment.test_next_adaptive_item_served | test_next_adaptive_item_rejects_prev_difficulty_omitted [198] | PASSED | 0.23s |
| tests.assignment.test_shared_answer_service_records_submission | test_student_submission_recorded_through_shared_answer_service [199] | PASSED | 0.81s |
| tests.assignment.test_shared_answer_service_records_submission | test_shared_answer_service_rejects_assignment_id_omitted [200] | PASSED | 0.08s |
| tests.assignment.test_shared_answer_service_records_submission | test_shared_answer_service_rejects_answers_wrong_data_type [201] | PASSED | 0.09s |
| tests.assignment.test_shared_answer_service_records_submission | test_shared_answer_service_rejects_empty_answers_array [202] | PASSED | 0.37s |
| tests.assignment.test_student_assignment_violations | test_report_violation_increments_count_and_trips_threshold [203] | PASSED | 1.16s |
| tests.assignment.test_student_assignment_violations | test_report_violation_no_auth_returns_401 [204] | PASSED | 0.04s |
| tests.assignment.test_student_assignment_violations | test_report_violation_expired_token_returns_401 [205] | PASSED | 0.04s |
| tests.assignment.test_student_assignment_violations | test_report_violation_rejects_malformed_assignment_identifier [206] | PASSED | 0.12s |
| tests.assignment.test_student_assignment_violations | test_report_violation_rejects_empty_or_over_length_type [207] | PASSED | 0.17s |
| tests.assignment.test_student_assignment_violations | test_report_violation_rejects_type_field_omitted [208] | PASSED | 0.12s |
| tests.assignment.test_student_assignment_violations | test_report_violation_rejects_type_wrong_data_type [209] | PASSED | 0.18s |
| tests.assignment.test_student_assignment_violations | test_report_violation_rejects_unknown_assignment_identifier [210] | PASSED | 0.11s |
| tests.assignment.test_student_assignment_violations | test_report_violation_neutralises_script_payload_in_type [211] | PASSED | 0.27s |
| tests.assignment.test_student_grade_average | test_student_grade_average_returns_200 [212] | PASSED | 1.29s |
| tests.assignment.test_student_grade_average | test_student_grade_average_requires_auth [213] | PASSED | 0.04s |
| tests.assignment.test_student_grade_average | test_student_grade_average_rejects_malformed_class_code [214] | PASSED | 0.16s |
| tests.assignment.test_student_grade_average | test_student_grade_average_rejects_excessively_long_or_unknown_class_code [215] | PASSED | 0.23s |
| tests.assignment.test_student_grade_average | test_student_grade_average_flags_unknown_class_code_as_not_found [216] | PASSED | 0.17s |
| tests.assignment.test_student_grade_average | test_student_grade_average_rejects_class_code_omitted [217] | PASSED | 0.23s |
| tests.assignment.test_take_assignment_incorrect_scoring | test_submit_incorrect_answer_scores_zero [218] | PASSED | 1.25s |
| tests.assignment.test_take_assignment_student_flow | test_all_fetch_lists_the_seeded_assignment [219] | PASSED | 0.86s |
| tests.assignment.test_take_assignment_student_flow | test_details_fetch_returns_the_assignment [220] | PASSED | 0.16s |
| tests.assignment.test_take_assignment_student_flow | test_questions_fetch_returns_the_in_progress_assignment [221] | PASSED | 0.12s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_persists_a_draft_answer [222] | PASSED | 0.09s |
| tests.assignment.test_take_assignment_student_flow | test_submission_fetch_returns_summary_for_the_started_assignment [223] | PASSED | 0.18s |
| tests.assignment.test_take_assignment_student_flow | test_questions_fetch_no_auth_returns_401 [224] | PASSED | 0.04s |
| tests.assignment.test_take_assignment_student_flow | test_submission_fetch_rejects_malformed_assignment_identifier [225] | PASSED | 0.14s |
| tests.assignment.test_take_assignment_student_flow | test_submission_fetch_rejects_excessively_long_or_unknown_assignment_identifier [226] | PASSED | 0.24s |
| tests.assignment.test_take_assignment_student_flow | test_submission_fetch_rejects_assignment_identifier_omitted [227] | PASSED | 0.15s |
| tests.assignment.test_take_assignment_student_flow | test_details_fetch_rejects_malformed_assignment_identifier [228] | PASSED | 0.13s |
| tests.assignment.test_take_assignment_student_flow | test_details_fetch_rejects_excessively_long_or_unknown_assignment_identifier [229] | PASSED | 0.24s |
| tests.assignment.test_take_assignment_student_flow | test_details_fetch_rejects_assignment_identifier_omitted [230] | PASSED | 0.04s |
| tests.assignment.test_take_assignment_student_flow | test_questions_fetch_rejects_malformed_assignment_identifier [231] | PASSED | 0.08s |
| tests.assignment.test_take_assignment_student_flow | test_questions_fetch_rejects_excessively_long_or_unknown_assignment_identifier [232] | PASSED | 0.13s |
| tests.assignment.test_take_assignment_student_flow | test_questions_fetch_rejects_assignment_identifier_omitted [233] | PASSED | 0.12s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_rejects_malformed_assignment_identifier [234] | PASSED | 0.09s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_rejects_unknown_assignment_identifier [235] | PASSED | 0.09s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_rejects_empty_answers_array [236] | PASSED | 0.08s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_rejects_answers_wrong_data_type [237] | PASSED | 0.10s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_rejects_answers_field_omitted [238] | PASSED | 0.11s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_rejects_expired_token [239] | PASSED | 0.04s |
| tests.assignment.test_take_assignment_student_flow | test_answers_save_neutralises_script_payload_in_answers [240] | PASSED | 0.27s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_correct_answer_scores_full_and_records_submission [241] | PASSED | 1.13s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_no_auth_returns_401 [242] | PASSED | 0.05s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_rejects_malformed_assignment_identifier [243] | PASSED | 0.12s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_rejects_empty_answers_array [244] | PASSED | 0.15s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_rejects_answers_wrong_data_type [245] | PASSED | 0.14s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_rejects_answers_field_omitted [246] | PASSED | 0.12s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_rejects_expired_token [247] | PASSED | 0.04s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_neutralises_script_payload_in_answers [248] | PASSED | 0.17s |
| tests.assignment.test_take_assignment_submit_flow | test_submit_rejects_unknown_assignment_identifier [249] | PASSED | 0.30s |
| tests.assignment.test_teacher_assignment_view_update_fetch_by_class | test_fetch_by_class_returns_200_with_assignments [250] | PASSED | 1.04s |
| tests.assignment.test_teacher_assignment_view_update_fetch_by_class | test_fetch_by_class_no_auth_returns_401 [251] | PASSED | 0.04s |
| tests.assignment.test_teacher_assignment_view_update_fetch_by_class | test_view_returns_200_with_assignment [252] | PASSED | 0.18s |
| tests.assignment.test_teacher_assignment_view_update_fetch_by_class | test_view_no_auth_returns_401 [253] | PASSED | 0.04s |
| tests.assignment.test_teacher_assignment_view_update_fetch_by_class | test_update_no_auth_returns_401 [254] | PASSED | 0.04s |
| tests.assignment.test_teacher_fetch_submission_by_id | test_teacher_fetch_by_submission_id_is_assignment_scoped_returns_404 [255] | PASSED | 1.43s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_returns_200_with_the_new_value [256] | PASSED | 0.78s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_response_contains_the_full_contract [257] | PASSED | 0.09s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_is_repeatable_and_takes_the_latest_value [258] | PASSED | 0.14s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_accepts_zero [259] | PASSED | 0.08s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_accepts_the_upper_bound [260] | PASSED | 0.09s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_rejects_a_value_above_the_upper_bound [261] | PASSED | 0.09s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_rejects_a_negative_value [262] | PASSED | 0.08s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_rejects_a_missing_points_field [263] | PASSED | 0.08s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_rejects_a_malformed_assignment_id [264] | PASSED | 0.08s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_rejects_a_malformed_question_id [265] | PASSED | 0.08s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_404s_for_an_assignment_the_teacher_does_not_own [266] | PASSED | 0.09s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_404s_for_a_question_outside_the_assignment [267] | PASSED | 0.08s |
| tests.assignment.test_teacher_question_points_update | test_update_question_points_requires_authentication [268] | PASSED | 0.19s |
| tests.assignment.test_teacher_staff_library_contract | test_staff_assignments_all_returns_200_with_a_list [269] | PASSED | 0.18s |
| tests.assignment.test_teacher_staff_library_contract | test_staff_questions_all_returns_200_with_a_list [270] | PASSED | 0.20s |
| tests.assignment.test_teacher_staff_library_contract | test_staff_assignment_view_absent_id_returns_404 [271] | PASSED | 0.09s |
| tests.assignment.test_teacher_staff_library_contract | test_staff_assignments_all_no_auth_returns_401 [272] | PASSED | 0.06s |
| tests.assignment.test_teacher_staff_library_contract | test_staff_assignment_view_no_auth_returns_401 [273] | PASSED | 0.04s |
| tests.assignment.test_teacher_staff_library_contract | test_staff_questions_all_no_auth_returns_401 [274] | PASSED | 0.20s |
health| Class | Test | Status | Duration |
|---|---|---|---|
| tests.health.test_health | test_health_returns_200 [1] | PASSED | 0.46s |
| tests.health.test_health | test_v1_health_returns_200_with_status_and_version [2] | PASSED | 0.03s |
| tests.health.test_zephyr_edge_health_disclosure | test_EI_T420_health_probe_is_anonymous_and_discloses_nothing [3] | PASSED | 0.04s |
| tests.health.test_zephyr_edge_health_disclosure | test_EI_T422_v1_health_probe_is_anonymous_and_leaks_no_environment_detail [4] | PASSED | 0.04s |
| tests.health.test_zephyr_edge_health_disclosure | test_v1_health_discloses_no_build_version [5] Deviation from EI-T420 / EI-T422, live-verified 2026-09-21: the case says the probe body must expose no VERSION, but GET /v1/health returns {'status': ..., 'version': '0.0.0.329'} read straight from version.txt (server/app.py). GET /health discloses nothing, so the cases pass on that probe; this pin |
SKIPPED | 0.04s |
| tests.health.test_zephyr_edge_health_readiness | test_EI_T419_readiness_probe_reports_dependency_state [6] | PASSED | 0.04s |
| tests.health.test_zephyr_edge_health_readiness | test_EI_T419_readiness_status_agrees_with_its_dependencies [7] | PASSED | 0.05s |
| tests.health.test_zephyr_edge_health_readiness | test_EI_T421_readiness_probe_is_reachable_without_credentials [8] | PASSED | 0.04s |
| tests.health.test_zephyr_edge_health_readiness | test_EI_T421_readiness_probe_discloses_no_environment_detail [9] | PASSED | 0.04s |
| tests.health.test_zephyr_edge_health_readiness | test_liveness_endpoints_do_not_report_dependency_state[health] [10] | PASSED | 0.04s |
| tests.health.test_zephyr_edge_health_readiness | test_liveness_endpoints_do_not_report_dependency_state[v1-health] [11] | PASSED | 0.04s |
questions| Class | Test | Status | Duration |
|---|---|---|---|
| tests.questions.test_EI_3321_question_content_injection | test_EI_3321_script_and_handlers_are_not_stored [1] | PASSED | 0.70s |
| tests.questions.test_zephyr_positive_question_image_upload | test_EI_T42_image_upload_returns_created_with_a_reference [2] | PASSED | 0.29s |
| tests.questions.test_zephyr_positive_question_image_upload | test_EI_T42_the_returned_reference_is_retrievable [3] | PASSED | 0.05s |
| tests.questions.test_zephyr_positive_question_image_upload | test_EI_T42_the_reference_still_serves_the_original_after_another_upload [4] | PASSED | 0.23s |
| Suite | Status | Total | Passed | Failed | Errors | Skipped | Duration |
|---|---|---|---|---|---|---|---|
| backup | PASSED | 10 | 10 | 0 | 0 | 0 | 2.76s |
| password | PASSED | 33 | 33 | 0 | 0 | 0 | 9.23s |
| security | PASSED | 52 | 52 | 0 | 0 | 0 | 4.22s |
backup| Class | Test | Status | Duration |
|---|---|---|---|
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_bulk_create_no_longer_mutates_data [1] | PASSED | 0.94s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_submit_create_no_longer_mutates_data [2] | PASSED | 0.11s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_duplicate_submission_does_not_duplicate_student [3] | PASSED | 0.16s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_expired_token_rejected_on_bulk_create [4] | PASSED | 0.05s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_expired_token_rejected_on_submit_create [5] | PASSED | 0.05s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_missing_auth_header_rejected_on_submit_create [6] | PASSED | 0.05s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_missing_file_field_rejected_on_bulk_create [7] | PASSED | 0.10s |
| tests.backup.test_EI_edge_students_deprecated | test_EI_TC_edge_script_payload_in_file_is_neutralised_on_bulk_create [8] | PASSED | 0.11s |
| tests.backup.test_teacher_students_deprecated | test_student_create_is_gone [9] | PASSED | 0.09s |
| tests.backup.test_teacher_students_deprecated | test_student_bulk_create_is_gone [10] | PASSED | 0.10s |
password| Class | Test | Status | Duration |
|---|---|---|---|
| tests.password.test_EI_223_teacher_password_change | test_EI_223_positive_change_password_returns_200_and_new_password_works [1] | PASSED | 3.06s |
| tests.password.test_EI_223_teacher_password_change | test_EI_223_negative_wrong_current_password_returns_400 [2] | PASSED | 0.29s |
| tests.password.test_EI_223_teacher_password_change | test_EI_223_negative_missing_auth_token_returns_401 [3] | PASSED | 0.06s |
| tests.password.test_EI_223_teacher_password_change | test_EI_223_security_student_token_cannot_change_teacher_password [4] | PASSED | 0.26s |
| tests.password.test_EI_223_teacher_password_change | test_EI_223_edge_mismatched_new_and_repeat_password_is_never_a_500 [5] | PASSED | 0.32s |
| tests.password.test_EI_223_teacher_password_change | test_EI_223_edge_missing_new_password_field_is_never_a_500 [6] | PASSED | 0.10s |
| tests.password.test_EI_2403_teacher_password_complexity | test_EI_TC_2390_negative_specials_only_password_is_refused [7] | PASSED | 0.10s |
| tests.password.test_EI_2403_teacher_password_complexity | test_EI_TC_2391_negative_password_without_a_special_character_is_refused [8] | PASSED | 0.10s |
| tests.password.test_EI_2763_wrong_current_password_message | test_EI_TC_2763_negative_wrong_current_password_gets_the_exact_message_and_changes_noth… | PASSED | 0.66s |
| tests.password.test_EI_2768_teacher_password_minimum_length | test_EI_TC_2470_edge_nine_character_password_is_refused [10] | PASSED | 0.08s |
| tests.password.test_EI_3284_password_reset_token | test_EI_3284_valid_email_returns_200 [11] | PASSED | 0.23s |
| tests.password.test_EI_3284_password_reset_token | test_EI_3284_nonexistent_email_returns_200 [12] | PASSED | 0.33s |
| tests.password.test_EI_3284_password_reset_token | test_EI_3284_missing_email_returns_400 [13] | PASSED | 0.04s |
| tests.password.test_EI_3284_password_reset_token | test_EI_3284_malformed_email_returns_400 [14] | PASSED | 0.04s |
| tests.password.test_EI_3284_password_reset_token | test_EI_3284_extra_fields_ignored [15] | PASSED | 0.17s |
| tests.password.test_EI_3284_reset_token_expiration | test_EI_TC_3284_negative_expired_or_invalid_reset_token_is_rejected [16] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_invalid_input_returns_400_not_500[invalid_email_format] [17] | PASSED | 0.05s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_invalid_input_returns_400_not_500[empty_email] [18] | PASSED | 0.05s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_invalid_input_returns_400_not_500[missing_email_key] [19] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_invalid_input_returns_400_not_500[email_is_null] [20] | PASSED | 0.06s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_invalid_input_returns_400_not_500[email_is_a_number] [21] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_invalid_input_returns_400_not_500[email_is_a_list] [22] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_rejection_does_not_echo_the_submitted_value[invalid_email_format] [23] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_rejection_does_not_echo_the_submitted_value[empty_email] [24] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_rejection_does_not_echo_the_submitted_value[missing_email_key] [25] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_rejection_does_not_echo_the_submitted_value[email_is_null] [26] | PASSED | 0.03s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_rejection_does_not_echo_the_submitted_value[email_is_a_number] [27] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_rejection_does_not_echo_the_submitted_value[email_is_a_list] [28] | PASSED | 0.04s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_legacy_reset_body_does_not_crash_the_endpoint[legacy_mismatched_passwords] … | PASSED | 0.27s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_legacy_reset_body_does_not_crash_the_endpoint[legacy_empty_passwords] [30] | PASSED | 0.30s |
| tests.password.test_EI_543_forgot_password_never_500s | test_EI_543_valid_email_still_works [31] | PASSED | 0.28s |
| tests.password.test_EI_TC_4570_forgot_password_unknown_email | test_EI_TC_4570_negative_an_unregistered_email_gets_the_generic_success_answer [32] | PASSED | 0.27s |
| tests.password.test_EI_TC_4570_forgot_password_unknown_email | test_EI_TC_4570_edge_two_unregistered_emails_get_identical_answers [33] | PASSED | 0.66s |
security| Class | Test | Status | Duration |
|---|---|---|---|
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[GET:/teacher/features/district/features] [1] | PASSED | 0.39s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[GET:/student/features/district/features] [2] | PASSED | 0.04s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[GET:/teacher/assignment/next/507f1f77bcf86cd79943901… | PASSED | 0.04s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[POST:/teacher/assignment/answer/create] [4] | PASSED | 0.04s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[GET:/teacher/assignment/507f1f77bcf86cd799439011/fet… | PASSED | 0.04s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[POST:/teacher/assignment/share] [6] | PASSED | 0.06s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[PATCH:/teacher/account/education/update] [7] | PASSED | 0.05s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[PATCH:/teacher/account/office/details/update] [8] | PASSED | 0.04s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[POST:/teacher/account/password/change] [9] | PASSED | 0.05s |
| tests.security.test_hidden_endpoints_coverage | test_hidden_endpoint_requires_auth[POST:/student/account/password/change] [10] | PASSED | 0.06s |
| tests.security.test_hidden_endpoints_coverage | test_teacher_district_features_returns_200 [11] | PASSED | 0.18s |
| tests.security.test_hidden_endpoints_coverage | test_student_district_features_returns_200 [12] | PASSED | 0.41s |
| tests.security.test_hidden_endpoints_coverage | test_student_token_cannot_read_teacher_district_features [13] | PASSED | 0.05s |
| tests.security.test_hidden_endpoints_coverage | test_teacher_token_cannot_read_student_district_features [14] | PASSED | 0.05s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[DELETE:/v1/student/account/picture/delete] [15] | PASSED | 0.05s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[DELETE:/v1/student/account/theme/delete] [16] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[GET:/v1/student/assignment/507f1f77bcf86cd799439011… | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[GET:/v1/student/classes/messages/507f1f77bcf86cd799… | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[GET:/v1/student/classes/ABC123/fetch] [19] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[PATCH:/v1/student/account/picture/update] [20] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[PATCH:/v1/student/account/update] [21] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[PATCH:/v1/student/classes/join/ABC123/cancel] [22] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[PATCH:/v1/student/classes/ABC123/leave] [23] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[POST:/v1/student/account/picture/add] [24] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[POST:/v1/student/account/theme/apply] [25] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[POST:/v1/student/assignment/507f1f77bcf86cd79943901… | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_student_endpoint_requires_auth[PUT:/v1/student/account/theme/update] [27] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[DELETE:/v1/assignments/delete/507f1f77bcf86cd7994390… | PASSED | 0.06s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[GET:/v1/assignments/adoptive/507f1f77bcf86cd79943901… | PASSED | 0.05s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[GET:/v1/assignments/review/507f1f77bcf86cd799439011]… | PASSED | 0.06s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[GET:/v1/assignments/view/507f1f77bcf86cd799439011] [31] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[POST:/v1/assignments/answer] [32] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[POST:/v1/assignments/create] [33] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[POST:/v1/assignments/share] [34] | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[PUT:/v1/assignments/update/507f1f77bcf86cd799439011]… | PASSED | 0.04s |
| tests.security.test_remaining_endpoints_require_auth | test_common_endpoint_requires_auth[POST:/v1/webhooks/auth0/user-sync] [36] | PASSED | 0.06s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/students/create] [37] | PASSED | 0.05s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/students/bulk/create] [38] | PASSED | 0.05s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[PATCH:/v1/teacher/account/picture/update] [39] | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/account/password/update] [40] | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/class/507f1f77bcf86cd799439011/res… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/class/507f1f77bcf86cd799439011/pho… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[PATCH:/v1/teacher/class/507f1f77bcf86cd799439011/ph… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[DELETE:/v1/teacher/class/507f1f77bcf86cd799439011/p… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[PATCH:/v1/teacher/class/507f1f77bcf86cd799439011/50… | PASSED | 0.07s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[DELETE:/v1/teacher/class/507f1f77bcf86cd799439011/5… | PASSED | 0.05s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[DELETE:/v1/teacher/assignment/507f1f77bcf86cd799439… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/assignment/staff/assignments/creat… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[GET:/v1/teacher/assignment/ABC123/507f1f77bcf86cd79… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[POST:/v1/teacher/assignment/ABC123/507f1f77bcf86cd7… | PASSED | 0.06s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[PUT:/v1/teacher/assignment/ABC123/507f1f77bcf86cd79… | PASSED | 0.04s |
| tests.security.test_teacher_endpoints_require_auth | test_teacher_endpoint_requires_auth[DELETE:/v1/teacher/assignment/ABC123/507f1f77bcf86c… | PASSED | 0.04s |
| Suite | Status | Total | Passed | Failed | Errors | Skipped | Duration |
|---|---|---|---|---|---|---|---|
| classes | PASSED | 299 | 299 | 0 | 0 | 0 | 1m 24s |
| perf | PASSED | 3 | 0 | 0 | 0 | 3 | 0.90s |
| theme | PASSED | 63 | 63 | 0 | 0 | 0 | 24.25s |
classes| Class | Test | Status | Duration |
|---|---|---|---|
| tests.classes.test_EI_1078_class_code_format_and_uniqueness | test_EI_TC_1078_positive_class_code_is_six_upper_case_characters_and_finds_the_class [1] | PASSED | 1.00s |
| tests.classes.test_EI_1078_class_code_format_and_uniqueness | test_EI_TC_1108_positive_three_classes_get_three_different_well_formed_codes [2] | PASSED | 0.67s |
| tests.classes.test_EI_1078_class_code_format_and_uniqueness | test_EI_TC_1078_edge_a_deleted_class_code_is_not_reused_by_the_next_class [3] | PASSED | 0.60s |
| tests.classes.test_EI_1204_teacher_edit_class_prevents_duplicate | test_EI_TC_1204_negative_edit_onto_an_existing_title_and_section_is_refused [4] | PASSED | 0.78s |
| tests.classes.test_EI_1229_edit_class_description_optional | test_EI_TC_1229_positive_editing_a_class_with_an_empty_description_is_saved [5] | PASSED | 0.52s |
| tests.classes.test_EI_1229_edit_class_description_optional | test_EI_TC_1229_negative_editing_a_class_with_a_class_code_is_refused [6] | PASSED | 0.35s |
| tests.classes.test_EI_1246_student_leave_class | test_EI_TC_1246_positive_leave_request_keeps_the_student_enrolled_until_answered [7] | PASSED | 0.81s |
| tests.classes.test_EI_1246_student_leave_class | test_EI_TC_1246_positive_approved_leave_removes_the_student_and_lists_it_as_removed [8] | PASSED | 0.86s |
| tests.classes.test_EI_1246_student_leave_class | test_EI_TC_1246_negative_declined_leave_keeps_the_student_enrolled [9] | PASSED | 0.60s |
| tests.classes.test_EI_1295_teacher_view_class_list | test_EI_TC_3983_positive_class_list_rows_carry_title_code_and_semester [10] | PASSED | 0.35s |
| tests.classes.test_EI_1295_teacher_view_class_list | test_EI_TC_3984_negative_class_list_without_a_token_is_401 [11] | PASSED | 0.04s |
| tests.classes.test_EI_1302_class_schedule_12_hour_time | test_EI_TC_1302_positive_12_hour_schedule_is_stored_normalised [12] | PASSED | 0.20s |
| tests.classes.test_EI_1302_class_schedule_12_hour_time | test_EI_TC_1302_negative_24_hour_time_is_refused [13] | PASSED | 0.10s |
| tests.classes.test_EI_1332_teacher_delete_class_removes_it | test_EI_TC_1332_positive_deleted_class_is_gone_from_the_teachers_list [14] | PASSED | 0.51s |
| tests.classes.test_EI_1332_teacher_delete_class_removes_it | test_EI_TC_1332_negative_deleted_class_is_not_found_by_its_code [15] | PASSED | 0.44s |
| tests.classes.test_EI_1339_non_member_class_lookup | test_EI_TC_4089_positive_non_member_can_look_up_the_class [16] | PASSED | 0.29s |
| tests.classes.test_EI_1339_non_member_class_lookup | test_EI_TC_4091_negative_non_member_sees_no_students [17] | PASSED | 0.30s |
| tests.classes.test_EI_2360_classes_with_students | test_EI_2360_classes_list_returns_200 [18] | PASSED | 0.40s |
| tests.classes.test_EI_2360_classes_with_students | test_EI_2360_classes_list_envelope_has_classes_key [19] | PASSED | 0.19s |
| tests.classes.test_EI_2360_classes_with_students | test_EI_2360_classes_list_no_auth_returns_unauthorized [20] | PASSED | 0.04s |
| tests.classes.test_EI_2360_classes_with_students | test_EI_2360_invalid_path_returns_404 [21] | PASSED | 0.04s |
| tests.classes.test_EI_2589_teacher_view_class_assignment_list | test_EI_TC_3062_positive_owner_gets_the_class_assignment_list [22] | PASSED | 0.29s |
| tests.classes.test_EI_2589_teacher_view_class_assignment_list | test_EI_TC_3063_negative_another_teachers_class_is_not_found [23] | PASSED | 0.70s |
| tests.classes.test_EI_2713_rejected_student_can_rejoin | test_EI_2713_positive_a_rejected_student_can_request_to_join_again [24] | PASSED | 0.73s |
| tests.classes.test_EI_2750_teacher_class_title_special_characters | test_EI_TC_2446_positive_title_with_special_character_is_stored_and_found[@] [25] | PASSED | 0.31s |
| tests.classes.test_EI_2750_teacher_class_title_special_characters | test_EI_TC_2446_positive_title_with_special_character_is_stored_and_found[#] [26] | PASSED | 0.30s |
| tests.classes.test_EI_2750_teacher_class_title_special_characters | test_EI_TC_2446_positive_title_with_special_character_is_stored_and_found[$] [27] | PASSED | 0.30s |
| tests.classes.test_EI_2750_teacher_class_title_special_characters | test_EI_TC_2446_positive_title_with_special_character_is_stored_and_found[&] [28] | PASSED | 0.28s |
| tests.classes.test_EI_2750_teacher_class_title_special_characters | test_EI_TC_2447_edge_regex_characters_in_the_search_are_literal [29] | PASSED | 0.36s |
| tests.classes.test_EI_2816_teacher_view_classes_list | test_EI_TC_3033_positive_new_class_is_listed_with_title_code_and_semester [30] | PASSED | 0.28s |
| tests.classes.test_EI_2816_teacher_view_classes_list | test_EI_TC_3035_positive_new_class_counts_once_and_has_no_students [31] | PASSED | 0.38s |
| tests.classes.test_EI_2819_teacher_class_counters | test_EI_TC_2819_edge_class_counters_ignore_the_title_filter [32] | PASSED | 0.22s |
| tests.classes.test_EI_3274_update_datetime | test_EI_3274_update_no_auth_returns_unauthorized [33] | PASSED | 0.04s |
| tests.classes.test_EI_3274_update_datetime | test_EI_3274_update_invalid_uuid_returns_400 [34] | PASSED | 0.38s |
| tests.classes.test_EI_3274_update_datetime | test_EI_3274_update_nonexistent_uuid_returns_4xx [35] | PASSED | 0.09s |
| tests.classes.test_EI_3274_update_datetime | test_EI_3274_update_error_does_not_leak_uuid [36] | PASSED | 0.09s |
| tests.classes.test_EI_3323_create_class | test_EI_TC_3323_positive_create_class_with_valid_data_returns_201 [37] | PASSED | 0.18s |
| tests.classes.test_EI_3386_assignment_of_deleted_class_closed | test_EI_3386_negative_an_assignment_of_a_deleted_class_is_closed_to_the_student [38] | PASSED | 1.19s |
| tests.classes.test_EI_3386_assignment_of_deleted_class_closed | test_EI_3386_positive_restoring_the_class_reopens_its_assignment [39] | PASSED | 1.24s |
| tests.classes.test_EI_3386_deleted_class_hidden_from_students | test_EI_3386_negative_a_deleted_class_answers_the_student_like_an_unknown_one [40] | PASSED | 0.93s |
| tests.classes.test_EI_3386_deleted_class_hidden_from_students | test_EI_3386_negative_joining_a_deleted_class_is_class_not_found [41] | PASSED | 0.68s |
| tests.classes.test_EI_3386_deleted_class_hidden_from_students | test_EI_3386_positive_a_restored_class_is_listed_again [42] | PASSED | 0.87s |
| tests.classes.test_EI_369_teacher_create_class_semester | test_EI_TC_189_positive_semester_summer_1_round_trips [43] | PASSED | 0.25s |
| tests.classes.test_EI_640_teacher_roster_reject_accept_remove_student | test_EI_TC_2520_positive_accepting_a_pending_student_enrols_them [44] | PASSED | 0.69s |
| tests.classes.test_EI_640_teacher_roster_reject_accept_remove_student | test_EI_TC_640_positive_rejecting_a_pending_student_marks_them_rejected [45] | PASSED | 0.43s |
| tests.classes.test_EI_640_teacher_roster_reject_accept_remove_student | test_EI_TC_660_positive_removing_an_enrolled_student_revokes_their_access [46] | PASSED | 0.95s |
| tests.classes.test_EI_640_teacher_roster_reject_accept_remove_student | test_EI_TC_2558_negative_removing_an_already_removed_student_is_400 [47] | PASSED | 0.62s |
| tests.classes.test_EI_640_teacher_roster_reject_accept_remove_student | test_EI_TC_640_negative_removing_a_student_who_is_not_in_the_class_is_400 [48] | PASSED | 0.42s |
| tests.classes.test_EI_656_teacher_create_class_description_optional | test_EI_TC_180_positive_create_without_a_description_succeeds [49] | PASSED | 0.18s |
| tests.classes.test_EI_656_teacher_create_class_description_optional | test_EI_TC_181_positive_create_with_an_empty_description_succeeds [50] | PASSED | 0.18s |
| tests.classes.test_EI_809_student_pending_and_enrolled_classes | test_EI_TC_489_positive_joined_class_is_pending_only [51] | PASSED | 0.85s |
| tests.classes.test_EI_809_student_pending_and_enrolled_classes | test_EI_TC_492_positive_accepted_class_is_enrolled_only [52] | PASSED | 1.05s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T347_negative_join_cancel_malformed_class_code_rejected [53] | PASSED | 0.10s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T349_negative_join_cancel_long_or_unknown_class_code_rejected[excessively_long]… | PASSED | 0.09s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T349_negative_join_cancel_long_or_unknown_class_code_rejected[unknown_well_form… | PASSED | 0.22s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T348_negative_join_cancel_omitted_class_code_rejected [56] | PASSED | 0.05s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T338_negative_fetch_by_code_malformed_class_code_rejected [57] | PASSED | 0.08s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T340_negative_fetch_by_code_long_or_unknown_class_code_rejected[excessively_lon… | PASSED | 0.10s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T340_negative_fetch_by_code_long_or_unknown_class_code_rejected[unknown_well_fo… | PASSED | 0.08s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T339_negative_fetch_by_code_omitted_class_code_rejected [60] | PASSED | 0.04s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T350_negative_class_announcements_malformed_identifier_rejected [61] | PASSED | 0.09s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T352_negative_class_announcements_long_or_unknown_identifier_rejected[excessive… | PASSED | 0.08s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T352_negative_class_announcements_long_or_unknown_identifier_rejected[unknown_w… | PASSED | 0.09s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T351_negative_class_announcements_omitted_identifier_rejected [64] | PASSED | 0.10s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T341_negative_join_malformed_class_code_rejected [65] | PASSED | 0.11s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T343_negative_join_long_or_unknown_class_code_rejected[excessively_long] [66] | PASSED | 0.10s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T343_negative_join_long_or_unknown_class_code_rejected[unknown_well_formed] [67] | PASSED | 0.10s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T342_negative_join_omitted_class_code_rejected [68] | PASSED | 0.05s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T344_negative_leave_malformed_class_code_rejected [69] | PASSED | 0.09s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T346_negative_leave_long_or_unknown_class_code_rejected[excessively_long] [70] | PASSED | 0.09s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T346_negative_leave_long_or_unknown_class_code_rejected[unknown_well_formed] [71] | PASSED | 0.09s |
| tests.classes.test_EI_R16_negative_student_classes | test_EI_T345_negative_leave_omitted_class_code_rejected [72] | PASSED | 0.04s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T691_edge_out_of_range_page_num_on_all_fetch[page_num=-1] [73] | PASSED | 0.08s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T691_edge_out_of_range_page_num_on_all_fetch[page_num=0] [74] | PASSED | 0.26s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T691_edge_out_of_range_page_num_on_all_fetch[page_num=999999] [75] | PASSED | 0.43s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T692_edge_expired_bearer_rejected_on_all_fetch [76] | PASSED | 0.05s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T693_edge_malformed_class_code_rejected_on_find [77] | PASSED | 0.09s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T694_edge_unknown_class_code_not_found_on_find [78] | PASSED | 0.08s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T695_edge_malformed_class_code_rejected_on_join [79] | PASSED | 0.09s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T696_edge_unknown_class_code_not_found_on_join [80] | PASSED | 0.09s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T697_edge_expired_bearer_rejected_on_join [81] | PASSED | 0.04s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T698_edge_malformed_class_code_rejected_on_leave [82] | PASSED | 0.09s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T699_edge_unknown_class_code_not_found_on_leave [83] | PASSED | 0.10s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T700_edge_expired_bearer_rejected_on_leave [84] | PASSED | 0.21s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T701_edge_malformed_class_code_rejected_on_join_cancel [85] | PASSED | 0.09s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T702_edge_unknown_class_code_not_found_on_join_cancel [86] | PASSED | 0.08s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T703_edge_expired_bearer_rejected_on_join_cancel [87] | PASSED | 0.05s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T704_edge_malformed_class_identifier_rejected_on_messages [88] | PASSED | 0.08s |
| tests.classes.test_EI_R35_edge_student_classes | test_EI_T705_edge_unknown_class_identifier_not_found_on_messages [89] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T194_negative_accept_student_malformed_student_id_rejected [90] | PASSED | 0.62s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T196_negative_accept_student_long_or_unknown_id_rejected[excessively_long] [91] | PASSED | 0.25s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T196_negative_accept_student_long_or_unknown_id_rejected[unknown_well_formed] [92] | PASSED | 0.11s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T195_negative_accept_student_omitted_student_id_rejected [93] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T183_negative_photo_add_malformed_class_id_rejected [94] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T182_negative_photo_add_empty_or_oversized_file_rejected [95] | PASSED | 0.88s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T181_negative_photo_add_unsupported_file_type_rejected [96] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T180_negative_photo_add_no_file_attached_rejected [97] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T203_negative_leave_approved_malformed_class_id_rejected [98] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T202_negative_leave_approved_non_boolean_is_granted_rejected [99] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T201_negative_leave_approved_wrong_type_is_granted_rejected [100] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T200_negative_leave_approved_omitted_is_granted_rejected [101] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T152_negative_create_class_unsupported_semester_rejected [102] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T151_negative_create_class_wrong_type_schedules_rejected [103] | PASSED | 0.24s |
| tests.classes.test_EI_R8_negative_teacher_classes | test_EI_T150_negative_create_class_omitted_title_rejected [104] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T164_negative_delete_announcement_malformed_message_id_rejected [105] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T166_negative_delete_announcement_long_or_unknown_message_id_rejected[excessive… | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T166_negative_delete_announcement_long_or_unknown_message_id_rejected[unknown_w… | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T165_negative_delete_announcement_omitted_message_id_rejected [108] | PASSED | 0.04s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T188_negative_photo_delete_malformed_class_id_rejected [109] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T190_negative_photo_delete_long_or_unknown_class_id_rejected[excessively_long] … | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T190_negative_photo_delete_long_or_unknown_class_id_rejected[unknown_well_forme… | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T189_negative_photo_delete_omitted_class_id_rejected [112] | PASSED | 0.11s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T177_negative_class_delete_malformed_class_id_rejected [113] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T179_negative_class_delete_long_or_unknown_class_id_rejected[excessively_long] … | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T179_negative_class_delete_long_or_unknown_class_id_rejected[unknown_well_forme… | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T178_negative_class_delete_omitted_class_id_rejected [116] | PASSED | 0.04s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T154_negative_find_by_code_malformed_code_rejected [117] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T156_negative_find_by_code_long_or_unknown_code_rejected[excessively_long] [118] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T156_negative_find_by_code_long_or_unknown_code_rejected[unknown_well_formed] [… | PASSED | 0.12s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T155_negative_find_by_code_omitted_code_rejected [120] | PASSED | 0.04s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T167_negative_gradebook_malformed_code_rejected [121] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T169_negative_gradebook_long_or_unknown_code_rejected[excessively_long] [122] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T169_negative_gradebook_long_or_unknown_code_rejected[unknown_well_formed] [123] | PASSED | 0.08s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T168_negative_gradebook_omitted_code_rejected [124] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T170_negative_roster_malformed_class_id_rejected [125] | PASSED | 0.13s |
| tests.classes.test_EI_R8_negative_teacher_classes_delete_fetch | test_EI_T172_negative_roster_long_or_unknown_class_id_rejected [126] | PASSED | 0.16s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T171_negative_roster_omitted_class_id_rejected [127] | PASSED | 0.04s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T153_negative_pagination_non_numeric_rejected[page_num] [128] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T153_negative_pagination_non_numeric_rejected[page_size] [129] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T153_negative_pagination_negative_rejected_not_a_server_error[page_num] [130] | PASSED | 0.18s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T153_negative_pagination_negative_rejected_not_a_server_error[page_size] [131] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T153_negative_pagination_out_of_range_values_are_bounded [132] | PASSED | 0.26s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T157_negative_messages_fetch_malformed_class_id_rejected [133] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T159_negative_messages_fetch_long_or_unknown_class_id_rejected[excessively_long… | PASSED | 0.20s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T159_negative_messages_fetch_long_or_unknown_class_id_rejected[unknown_well_for… | PASSED | 0.06s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T158_negative_messages_fetch_omitted_class_id_rejected [136] | PASSED | 0.01s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T204_negative_class_assignments_malformed_class_id_rejected [137] | PASSED | 0.06s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T206_negative_class_assignments_long_or_unknown_class_id_rejected[excessively_l… | PASSED | 0.07s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T206_negative_class_assignments_long_or_unknown_class_id_rejected[unknown_well_… | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T205_negative_class_assignments_omitted_class_id_rejected [140] | PASSED | 0.01s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T163_negative_post_message_malformed_class_id_rejected [141] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T162_negative_post_message_empty_or_over_length_rejected[empty] [142] | PASSED | 0.32s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T162_negative_post_message_empty_or_over_length_rejected[over_length] [143] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T161_negative_post_message_wrong_data_type_rejected[int] [144] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T161_negative_post_message_wrong_data_type_rejected[list] [145] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T161_negative_post_message_wrong_data_type_rejected[null] [146] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T160_negative_post_message_content_omitted_rejected [147] | PASSED | 0.10s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T197_negative_remove_student_malformed_student_id_rejected [148] | PASSED | 0.18s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T199_negative_remove_student_long_or_unknown_student_id_rejected[excessively_lo… | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T199_negative_remove_student_long_or_unknown_student_id_rejected[unknown_well_f… | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T198_negative_remove_student_omitted_student_id_rejected [151] | PASSED | 0.01s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T191_negative_restore_malformed_class_id_rejected [152] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T193_negative_restore_long_or_unknown_class_id_rejected[excessively_long] [153] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T193_negative_restore_long_or_unknown_class_id_rejected[unknown_well_formed] [154] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T192_negative_restore_omitted_class_id_rejected [155] | PASSED | 0.01s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T187_negative_photo_update_malformed_class_id_rejected [156] | PASSED | 0.09s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T186_negative_photo_update_empty_file_rejected [157] | PASSED | 0.33s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T186_negative_photo_update_oversized_file_rejected [158] | PASSED | 0.74s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T185_negative_photo_update_unsupported_type_rejected [159] | PASSED | 0.25s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T184_negative_photo_update_no_file_rejected [160] | PASSED | 0.23s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T176_negative_update_malformed_class_id_rejected[malformed] [161] | PASSED | 0.04s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T176_negative_update_malformed_class_id_rejected[excessively_long] [162] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T175_negative_update_unsupported_semester_rejected [163] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T174_negative_update_section_wrong_data_type_rejected[int] [164] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T174_negative_update_section_wrong_data_type_rejected[list] [165] | PASSED | 0.05s |
| tests.classes.test_EI_R8_negative_teacher_classes_part3 | test_EI_T173_negative_update_title_omitted_rejected [166] | PASSED | 0.14s |
| tests.classes.test_EI_SEC_003_class_list_own_roster_entry | test_EI_SEC_003_the_class_list_shows_a_student_only_their_own_roster_entry [167] | PASSED | 0.92s |
| tests.classes.test_EI_SEC_003_class_list_own_roster_entry | test_EI_SEC_003_the_other_student_also_sees_only_their_own_entry [168] | PASSED | 0.64s |
| tests.classes.test_EI_T472_missing_title_create_class | test_EI_T472_missing_title_rejected [169] | PASSED | 0.25s |
| tests.classes.test_EI_T473_duplicate_class_submission | test_EI_T473_duplicate_submission_creates_one_class[back_to_back] [170] | PASSED | 0.52s |
| tests.classes.test_EI_T473_duplicate_class_submission | test_EI_T473_duplicate_submission_creates_one_class[concurrent] [171] | PASSED | 0.49s |
| tests.classes.test_EI_T474_expired_token_create_class | test_EI_T474_expired_bearer_rejected_on_create_class [172] | PASSED | 0.24s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[not_an_object_id] [173] | PASSED | 0.08s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[nosql_ne_object] [174] | PASSED | 0.08s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[nosql_gt_object] [175] | PASSED | 0.09s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[nosql_regex_object] [176] | PASSED | 0.08s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[nosql_ne_bare] [177] | PASSED | 0.08s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[nosql_where_bare] [178] | PASSED | 0.08s |
| tests.classes.test_EI_T478_malformed_class_code_find | test_EI_T478_malformed_class_code_rejected_on_find[nosql_ne_bracket] [179] | PASSED | 0.08s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_malformed_class_uuid_rejected [180] | PASSED | 0.08s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_nosql_operator_class_uuid_rejected[ne_operator_json] [181] | PASSED | 0.08s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_nosql_operator_class_uuid_rejected[gt_operator_json] [182] | PASSED | 0.09s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_nosql_operator_class_uuid_rejected[regex_operator_json] [183] | PASSED | 0.09s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_nosql_operator_class_uuid_rejected[bare_ne_operator] [184] | PASSED | 0.09s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_nosql_operator_class_uuid_rejected[where_operator] [185] | PASSED | 0.12s |
| tests.classes.test_EI_T480_malformed_class_uuid_fetch_messages | test_EI_T480_nosql_operator_class_uuid_rejected[bracket_ne_operator] [186] | PASSED | 0.09s |
| tests.classes.test_EI_T482_missing_content_create_announcement | test_EI_T482_missing_content_rejected [187] | PASSED | 0.56s |
| tests.classes.test_EI_T484_expired_token_create_announcement | test_EI_T484_expired_bearer_rejected_on_create_announcement [188] | PASSED | 0.57s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_malformed_class_uuid_rejected [189] | PASSED | 0.10s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_nosql_operator_class_uuid_rejected[ne_operator_json] [190] | PASSED | 0.10s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_nosql_operator_class_uuid_rejected[gt_operator_json] [191] | PASSED | 0.08s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_nosql_operator_class_uuid_rejected[regex_operator_json] [192] | PASSED | 0.09s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_nosql_operator_class_uuid_rejected[bare_ne_operator] [193] | PASSED | 0.09s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_nosql_operator_class_uuid_rejected[where_operator] [194] | PASSED | 0.09s |
| tests.classes.test_EI_T486_malformed_class_uuid_delete_announcement | test_EI_T486_nosql_operator_class_uuid_rejected[bracket_ne_operator] [195] | PASSED | 0.08s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[not_an_object_id] [196] | PASSED | 0.08s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[nosql_ne_object] [197] | PASSED | 0.08s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[nosql_gt_object] [198] | PASSED | 0.09s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[nosql_regex_object] [199] | PASSED | 0.08s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[nosql_ne_bare] [200] | PASSED | 0.08s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[nosql_where_bare] [201] | PASSED | 0.09s |
| tests.classes.test_EI_T489_malformed_class_code_gradebook | test_EI_T489_malformed_class_code_rejected_on_gradebook[nosql_ne_bracket] [202] | PASSED | 0.09s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_malformed_class_uuid_rejected [203] | PASSED | 0.08s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_nosql_operator_class_uuid_rejected[ne_operator_json] [204] | PASSED | 0.08s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_nosql_operator_class_uuid_rejected[gt_operator_json] [205] | PASSED | 0.08s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_nosql_operator_class_uuid_rejected[regex_operator_json] [206] | PASSED | 0.08s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_nosql_operator_class_uuid_rejected[bare_ne_operator] [207] | PASSED | 0.08s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_nosql_operator_class_uuid_rejected[where_operator] [208] | PASSED | 0.08s |
| tests.classes.test_EI_T491_malformed_class_uuid_fetch_roster | test_EI_T491_nosql_operator_class_uuid_rejected[bracket_ne_operator] [209] | PASSED | 0.08s |
| tests.classes.test_EI_T493_missing_title_update_class | test_EI_T493_missing_title_rejected [210] | PASSED | 0.47s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_malformed_class_uuid_rejected [211] | PASSED | 0.14s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_nosql_operator_class_uuid_rejected[ne_operator_json] [212] | PASSED | 0.15s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_nosql_operator_class_uuid_rejected[gt_operator_json] [213] | PASSED | 0.15s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_nosql_operator_class_uuid_rejected[regex_operator_json] [214] | PASSED | 0.14s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_nosql_operator_class_uuid_rejected[bare_ne_operator] [215] | PASSED | 0.12s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_nosql_operator_class_uuid_rejected[where_operator] [216] | PASSED | 0.13s |
| tests.classes.test_EI_T497_malformed_class_uuid_delete_class | test_EI_T497_nosql_operator_class_uuid_rejected[bracket_ne_operator] [217] | PASSED | 0.13s |
| tests.classes.test_EI_T500_missing_file_upload_cover_photo | test_EI_T500_missing_file_rejected [218] | PASSED | 0.60s |
| tests.classes.test_EI_T501_interrupted_cover_photo_upload | test_EI_T501_dropped_upload_keeps_previous_asset_reference [219] | PASSED | 3.56s |
| tests.classes.test_EI_T501_interrupted_cover_photo_upload | test_EI_T501_retry_after_dropped_upload_succeeds_without_duplicate [220] | PASSED | 3.75s |
| tests.classes.test_EI_T504_missing_file_update_cover_photo | test_EI_T504_missing_file_rejected [221] | PASSED | 0.71s |
| tests.classes.test_EI_T505_interrupted_cover_photo_update | test_EI_T505_dropped_update_keeps_previous_cover [222] | PASSED | 3.74s |
| tests.classes.test_EI_T505_interrupted_cover_photo_update | test_EI_T505_retry_after_dropped_update_succeeds_without_duplicate [223] | PASSED | 3.90s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_malformed_class_uuid_rejected [224] | PASSED | 0.22s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_nosql_operator_class_uuid_rejected[ne_operator_json] [225] | PASSED | 0.23s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_nosql_operator_class_uuid_rejected[gt_operator_json] [226] | PASSED | 0.20s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_nosql_operator_class_uuid_rejected[regex_operator_json] [227] | PASSED | 0.19s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_nosql_operator_class_uuid_rejected[bare_ne_operator] [228] | PASSED | 0.21s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_nosql_operator_class_uuid_rejected[where_operator] [229] | PASSED | 0.24s |
| tests.classes.test_EI_T508_malformed_class_uuid_delete_cover_photo | test_EI_T508_nosql_operator_class_uuid_rejected[bracket_ne_operator] [230] | PASSED | 0.19s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_malformed_class_uuid_rejected [231] | PASSED | 0.10s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_nosql_operator_class_uuid_rejected[ne_operator_json] [232] | PASSED | 0.09s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_nosql_operator_class_uuid_rejected[gt_operator_json] [233] | PASSED | 0.08s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_nosql_operator_class_uuid_rejected[regex_operator_json] [234] | PASSED | 0.10s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_nosql_operator_class_uuid_rejected[bare_ne_operator] [235] | PASSED | 0.08s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_nosql_operator_class_uuid_rejected[where_operator] [236] | PASSED | 0.08s |
| tests.classes.test_EI_T511_malformed_class_uuid_restore_class | test_EI_T511_nosql_operator_class_uuid_rejected[bracket_ne_operator] [237] | PASSED | 0.08s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_malformed_class_uuid_rejected [238] | PASSED | 0.08s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_nosql_operator_class_uuid_rejected[ne_operator_json] [239] | PASSED | 0.08s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_nosql_operator_class_uuid_rejected[gt_operator_json] [240] | PASSED | 0.09s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_nosql_operator_class_uuid_rejected[regex_operator_json] [241] | PASSED | 0.09s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_nosql_operator_class_uuid_rejected[bare_ne_operator] [242] | PASSED | 0.08s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_nosql_operator_class_uuid_rejected[where_operator] [243] | PASSED | 0.08s |
| tests.classes.test_EI_T514_malformed_class_uuid_accept_join_request | test_EI_T514_nosql_operator_class_uuid_rejected[bracket_ne_operator] [244] | PASSED | 0.08s |
| tests.classes.test_EI_T516_expired_token_accept_join_request | test_EI_T516_expired_bearer_rejected_on_accept_join_request [245] | PASSED | 0.68s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_malformed_class_uuid_rejected [246] | PASSED | 0.09s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_nosql_operator_class_uuid_rejected[ne_operator_json] [247] | PASSED | 0.09s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_nosql_operator_class_uuid_rejected[gt_operator_json] [248] | PASSED | 0.09s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_nosql_operator_class_uuid_rejected[regex_operator_json] [249] | PASSED | 0.09s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_nosql_operator_class_uuid_rejected[bare_ne_operator] [250] | PASSED | 0.08s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_nosql_operator_class_uuid_rejected[where_operator] [251] | PASSED | 0.08s |
| tests.classes.test_EI_T517_malformed_class_uuid_remove_student | test_EI_T517_nosql_operator_class_uuid_rejected[bracket_ne_operator] [252] | PASSED | 0.08s |
| tests.classes.test_EI_T520_missing_is_granted_accept_leave_request | test_EI_T520_missing_is_granted_rejected [253] | PASSED | 0.96s |
| tests.classes.test_EI_T522_expired_token_accept_leave_request | test_EI_T522_expired_bearer_rejected_on_accept_leave_request [254] | PASSED | 0.82s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_malformed_class_uuid_rejected [255] | PASSED | 0.08s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_nosql_operator_class_uuid_rejected[ne_operator_json] [256] | PASSED | 0.09s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_nosql_operator_class_uuid_rejected[gt_operator_json] [257] | PASSED | 0.11s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_nosql_operator_class_uuid_rejected[regex_operator_json] [258] | PASSED | 0.08s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_nosql_operator_class_uuid_rejected[bare_ne_operator] [259] | PASSED | 0.08s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_nosql_operator_class_uuid_rejected[where_operator] [260] | PASSED | 0.09s |
| tests.classes.test_EI_T524_malformed_class_uuid_fetch_assignments | test_EI_T524_nosql_operator_class_uuid_rejected[bracket_ne_operator] [261] | PASSED | 0.08s |
| tests.classes.test_student_class_reads | test_all_fetch_returns_enrolled_classes [262] | PASSED | 1.05s |
| tests.classes.test_student_class_reads | test_find_returns_the_enrolled_class [263] | PASSED | 0.09s |
| tests.classes.test_student_class_reads | test_messages_returns_message_board [264] | PASSED | 0.24s |
| tests.classes.test_student_enrollment_lifecycle | test_join_then_cancel [265] | PASSED | 0.48s |
| tests.classes.test_student_enrollment_lifecycle | test_join_accept_then_leave [266] | PASSED | 0.55s |
| tests.classes.test_student_enrollment_lifecycle | test_leave_without_membership_returns_400 [267] | PASSED | 0.37s |
| tests.classes.test_teacher_class_gradebook_roster | test_gradebook_returns_200_with_class_and_students [268] | PASSED | 0.39s |
| tests.classes.test_teacher_class_gradebook_roster | test_roster_returns_200_with_class_roster_list [269] | PASSED | 0.08s |
| tests.classes.test_teacher_class_gradebook_roster | test_gradebook_no_auth_returns_401 [270] | PASSED | 0.04s |
| tests.classes.test_teacher_class_gradebook_roster | test_roster_no_auth_returns_401 [271] | PASSED | 0.04s |
| tests.classes.test_teacher_class_message_lifecycle | test_message_create_then_delete [272] | PASSED | 0.45s |
| tests.classes.test_teacher_class_message_lifecycle | test_message_create_no_auth_returns_401 [273] | PASSED | 0.04s |
| tests.classes.test_teacher_class_message_lifecycle | test_message_delete_no_auth_returns_401 [274] | PASSED | 0.04s |
| tests.classes.test_teacher_class_messages_find_assignments | test_messages_returns_200_with_messages [275] | PASSED | 0.38s |
| tests.classes.test_teacher_class_messages_find_assignments | test_all_fetch_returns_200_with_paginated_classes [276] | PASSED | 0.12s |
| tests.classes.test_teacher_class_messages_find_assignments | test_find_returns_200_with_class [277] | PASSED | 0.10s |
| tests.classes.test_teacher_class_messages_find_assignments | test_class_assignments_returns_200_with_assignments [278] | PASSED | 0.09s |
| tests.classes.test_teacher_class_messages_find_assignments | test_messages_no_auth_returns_401 [279] | PASSED | 0.05s |
| tests.classes.test_teacher_class_messages_find_assignments | test_find_no_auth_returns_401 [280] | PASSED | 0.04s |
| tests.classes.test_teacher_class_messages_find_assignments | test_class_assignments_no_auth_returns_401 [281] | PASSED | 0.06s |
| tests.classes.test_teacher_class_photo_lifecycle | test_class_photo_add_update_delete_lifecycle [282] | PASSED | 0.68s |
| tests.classes.test_teacher_class_photo_lifecycle | test_class_photo_add_when_one_exists_returns_400 [283] | PASSED | 0.61s |
| tests.classes.test_teacher_class_photo_lifecycle | test_class_photo_add_unsupported_type_returns_415 [284] | PASSED | 0.38s |
| tests.classes.test_teacher_class_photo_lifecycle | test_class_photo_add_no_auth_returns_401 [285] | PASSED | 0.40s |
| tests.classes.test_teacher_class_photo_lifecycle | test_class_photo_delete_no_auth_returns_401 [286] | PASSED | 0.38s |
| tests.classes.test_teacher_class_update_details | test_update_class_details_persists_new_title [287] | PASSED | 0.52s |
| tests.classes.test_teacher_membership_mutations | test_class_soft_delete_then_restore [288] | PASSED | 1.29s |
| tests.classes.test_teacher_membership_mutations | test_remove_enrolled_student [289] | PASSED | 0.62s |
| tests.classes.test_teacher_membership_mutations | test_approve_student_leave [290] | PASSED | 0.64s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_a_non_numeric_page_is_rejected [291] | PASSED | 0.14s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_a_non_numeric_page_size_is_rejected [292] | PASSED | 0.08s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_a_negative_page_is_rejected_not_a_server_error [293] | PASSED | 0.11s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_a_negative_page_size_is_rejected_not_a_server_error [294] | PASSED | 0.29s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_the_refusal_discloses_no_storage_internals [295] | PASSED | 0.36s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_an_excessive_page_size_returns_no_unbounded_result_set [296] | PASSED | 0.81s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_a_zero_page_resolves_to_the_first_page [297] | PASSED | 0.20s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_a_zero_page_size_resolves_to_the_default [298] | PASSED | 0.51s |
| tests.classes.test_zephyr_edge_student_classes_pagination | test_EI_T337_valid_pagination_is_honoured [299] | PASSED | 0.86s |
perf| Class | Test | Status | Duration |
|---|---|---|---|
| tests.perf.test_EI_3315_teacher_login_concurrent_load | test_login_handles_concurrent_requests[concurrency100] [1] Load tests are opt-in only (set RUN_LOAD_TESTS=1) -- see the module docstring: this repo's Auth0 policy forbids hammering the real tenant with concurrent logins during the default gating run. |
SKIPPED | 0.00s |
| tests.perf.test_EI_3315_teacher_login_concurrent_load | test_login_handles_concurrent_requests[concurrency500] [2] Load tests are opt-in only (set RUN_LOAD_TESTS=1) -- see the module docstring: this repo's Auth0 policy forbids hammering the real tenant with concurrent logins during the default gating run. |
SKIPPED | 0.00s |
| tests.perf.test_EI_3315_teacher_login_concurrent_load | test_login_handles_concurrent_requests[concurrency1000] [3] Load tests are opt-in only (set RUN_LOAD_TESTS=1) -- see the module docstring: this repo's Auth0 policy forbids hammering the real tenant with concurrent logins during the default gating run. |
SKIPPED | 0.00s |
theme| Class | Test | Status | Duration |
|---|---|---|---|
| tests.theme.test_375_teacher_theme_partial_update | test_375_positive_a_partial_font_update_keeps_the_rest_of_the_theme [1] | PASSED | 0.83s |
| tests.theme.test_375_teacher_theme_partial_update | test_375_negative_a_missing_colour_field_is_named_in_the_error [2] | PASSED | 0.35s |
| tests.theme.test_EI_217_teacher_apply_theme | test_auth0_login_response_contains_access_token [3] | PASSED | 0.35s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_217_teacher_fetch_theme [4] | PASSED | 0.38s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_217_teacher_apply_theme [5] | PASSED | 0.15s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_217_teacher_update_theme [6] | PASSED | 0.09s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_217_teacher_delete_theme [7] | PASSED | 0.09s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_TC_971_positive_fetch_themes_with_valid_credentials_and_return_list [8] | PASSED | 0.08s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_TC_972_negative_apply_theme_with_invalid_token_and_insufficient_permissions [9] | PASSED | 0.13s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_default_theme_fetch_has_color_mode [10] | PASSED | 0.09s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_default_theme_fetch_no_nonetype_leak [11] | PASSED | 0.08s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_default_theme_persistence_across_fetches [12] | PASSED | 0.14s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_default_theme_fetch_theme_details_not_null [13] | PASSED | 0.08s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_default_theme_fetch_renderable_attrs_present [14] | PASSED | 0.08s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_pos_step1_teacher_account_exists_via_auth0_login [15] | PASSED | 0.25s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_pos_step2_auth0_login_returns_access_token [16] | PASSED | 0.21s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_pos_step6_default_theme_persisted_returns_same_id_on_repeated_fetch [17] | PASSED | 0.18s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_neg_step2_auth0_login_with_invalid_credentials_returns_403 [18] | PASSED | 0.17s |
| tests.theme.test_EI_217_teacher_apply_theme | test_EI_1214_neg_step5_recovered_account_fetch_has_color_mode [19] | PASSED | 0.08s |
| tests.theme.test_EI_2521_teacher_delete_theme | test_EI_TC_2057_positive_deleting_the_theme_reverts_to_the_default [20] | PASSED | 0.34s |
| tests.theme.test_EI_2521_teacher_delete_theme | test_EI_TC_2058_negative_second_delete_is_404 [21] | PASSED | 0.34s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T622_edge_empty_result_set_on_theme_fetch [22] | PASSED | 0.38s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T624_edge_duplicate_apply_does_not_create_duplicate_theme [23] | PASSED | 0.45s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T623_edge_omit_theme_id_rejected_on_apply [24] | PASSED | 0.38s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T627_edge_omit_theme_name_rejected_on_update [25] | PASSED | 0.40s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T626_edge_script_payload_in_theme_id_neutralised [26] | PASSED | 0.43s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T630_edge_script_payload_in_theme_name_neutralised [27] | PASSED | 0.48s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T628_edge_simultaneous_theme_updates_resolve_deterministically [28] | PASSED | 0.51s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T631_edge_repeating_theme_delete_is_handled_safely [29] | PASSED | 0.43s |
| tests.theme.test_EI_R30_edge_teacher_theme | test_EI_T633_edge_theme_delete_leaves_no_orphaned_data [30] | PASSED | 0.59s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T728_edge_expired_bearer_rejected_on_theme_fetch [31] | PASSED | 0.04s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T729_edge_empty_result_set_on_theme_fetch [32] | PASSED | 0.89s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T730_edge_omit_theme_id_rejected_on_apply [33] | PASSED | 0.60s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T731_edge_duplicate_apply_does_not_create_duplicate_theme [34] | PASSED | 0.66s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T732_edge_expired_bearer_rejected_on_theme_apply [35] | PASSED | 0.04s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T733_edge_script_payload_in_theme_id_neutralised [36] | PASSED | 0.68s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T734_edge_omit_theme_name_rejected_on_update [37] | PASSED | 0.58s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T735_edge_simultaneous_theme_updates_resolve_deterministically [38] | PASSED | 0.74s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T736_edge_expired_bearer_rejected_on_theme_update [39] | PASSED | 0.04s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T737_edge_script_payload_in_theme_name_neutralised [40] | PASSED | 0.74s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T738_edge_idempotent_theme_delete_is_safe [41] | PASSED | 0.66s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T739_edge_expired_bearer_rejected_on_theme_delete [42] | PASSED | 0.04s |
| tests.theme.test_EI_R37_edge_student_theme | test_EI_T740_edge_theme_delete_leaves_no_orphaned_data [43] | PASSED | 0.87s |
| tests.theme.test_EI_T104_student_fetch_current_theme | test_EI_T104_student_fetches_current_theme [44] | PASSED | 0.14s |
| tests.theme.test_EI_T104_student_fetch_current_theme | test_EI_T104_fetch_no_auth_returns_401 [45] | PASSED | 0.04s |
| tests.theme.test_student_theme_lifecycle | test_theme_apply_changes_color_mode [46] | PASSED | 0.57s |
| tests.theme.test_student_theme_lifecycle | test_theme_update_changes_theme_name [47] | PASSED | 0.65s |
| tests.theme.test_student_theme_lifecycle | test_theme_delete_reverts_to_default [48] | PASSED | 0.56s |
| tests.theme.test_student_theme_lifecycle | test_theme_apply_invalid_theme_id_returns_400 [49] | PASSED | 0.12s |
| tests.theme.test_student_theme_lifecycle | test_theme_apply_rejects_color_mode_wrong_data_type [50] | PASSED | 0.45s |
| tests.theme.test_student_theme_lifecycle | test_theme_apply_rejects_theme_id_omitted [51] | PASSED | 0.14s |
| tests.theme.test_student_theme_lifecycle | test_theme_update_rejects_empty_theme_name [52] | PASSED | 0.44s |
| tests.theme.test_student_theme_lifecycle | test_theme_update_rejects_overlength_theme_name [53] | PASSED | 0.57s |
| tests.theme.test_student_theme_lifecycle | test_theme_update_rejects_colors_wrong_data_type [54] | PASSED | 0.53s |
| tests.theme.test_student_theme_lifecycle | test_theme_fetch_with_garbage_query_params_returns_no_server_error [55] | PASSED | 0.16s |
| tests.theme.test_student_theme_lifecycle | test_theme_delete_with_garbage_query_params_returns_no_server_error [56] | PASSED | 0.44s |
| tests.theme.test_teacher_theme_lifecycle | test_theme_apply_changes_color_mode [57] | PASSED | 0.31s |
| tests.theme.test_teacher_theme_lifecycle | test_theme_update_changes_theme_name [58] | PASSED | 0.31s |
| tests.theme.test_teacher_theme_lifecycle | test_theme_apply_invalid_theme_id_returns_400 [59] | PASSED | 0.08s |
| tests.theme.test_zephyr_edge_student_repeat_removal | test_EI_T670_a_second_removal_returns_404_not_500 [60] | PASSED | 0.53s |
| tests.theme.test_zephyr_edge_student_repeat_removal | test_EI_T670_further_removals_stay_404_and_never_escalate [61] | PASSED | 0.65s |
| tests.theme.test_zephyr_edge_student_repeat_removal | test_EI_T670_the_underlying_record_survives_a_repeat_removal [62] | PASSED | 0.52s |
| tests.theme.test_zephyr_edge_student_repeat_removal | test_EI_T670_the_404_is_state_dependent_not_a_dead_endpoint [63] | PASSED | 0.62s |
| Suite | Status | Total | Passed | Failed | Errors | Skipped | Duration |
|---|---|---|---|---|---|---|---|
| dashboard | PASSED | 58 | 58 | 0 | 0 | 0 | 23.27s |
| question | PASSED | 201 | 201 | 0 | 0 | 0 | 41.57s |
| unit | PASSED | 63 | 63 | 0 | 0 | 0 | 1.19s |
dashboard| Class | Test | Status | Duration |
|---|---|---|---|
| tests.dashboard.test_EI_1125_unauthorized_access | test_EI_1125_no_auth_header_returns_unauthorized [1] | PASSED | 0.92s |
| tests.dashboard.test_EI_1125_unauthorized_access | test_EI_1125_invalid_token_returns_401 [2] | PASSED | 0.04s |
| tests.dashboard.test_EI_1125_unauthorized_access | test_EI_1125_teacher_token_on_student_route_returns_403 [3] | PASSED | 0.38s |
| tests.dashboard.test_EI_1125_unauthorized_access | test_EI_1125_unauthorized_response_is_json [4] | PASSED | 0.04s |
| tests.dashboard.test_EI_1196_zero_score_submission_counted | test_EI_TC_1196_positive_zero_score_submission_is_counted [5] | PASSED | 1.87s |
| tests.dashboard.test_EI_1222_search_profile_filtering | test_EI_1222_searching_a_real_full_name_finds_them [6] | PASSED | 0.70s |
| tests.dashboard.test_EI_1222_search_profile_filtering | test_EI_1222_search_ignores_case_and_word_order [7] | PASSED | 0.60s |
| tests.dashboard.test_EI_1222_search_profile_filtering | test_EI_1222_a_name_that_does_not_exist_finds_nobody [8] | PASSED | 0.20s |
| tests.dashboard.test_EI_1222_search_profile_filtering | test_EI_1222_no_search_term_returns_everyone [9] | PASSED | 0.28s |
| tests.dashboard.test_EI_1240_teacher_dashboard_class_count | test_EI_TC_1240_positive_dashboard_total_matches_the_class_list_after_a_create [10] | PASSED | 0.61s |
| tests.dashboard.test_EI_1240_teacher_dashboard_class_count | test_EI_TC_1240_edge_dashboard_total_matches_the_class_list_after_a_delete [11] | PASSED | 1.10s |
| tests.dashboard.test_EI_1327_student_grade_distribution_counts | test_EI_TC_1327_positive_a_perfect_submission_is_counted_in_the_90_100_bucket [12] | PASSED | 1.28s |
| tests.dashboard.test_EI_1327_student_grade_distribution_counts | test_EI_TC_1327_edge_a_failing_submission_is_counted_in_the_below_60_bucket [13] | PASSED | 1.44s |
| tests.dashboard.test_EI_1340_gpa_by_class | test_EI_TC_1340_positive_each_class_reports_its_own_average [14] | PASSED | 2.99s |
| tests.dashboard.test_EI_1344_student_dashboard_class_count | test_EI_TC_1344_positive_dashboard_counts_a_class_only_once_it_is_enrolled [15] | PASSED | 1.23s |
| tests.dashboard.test_EI_1344_student_dashboard_class_count | test_EI_TC_1344_edge_dashboard_stops_counting_a_class_after_an_approved_leave [16] | PASSED | 1.31s |
| tests.dashboard.test_EI_1344_student_dashboard_class_count | test_EI_TC_2384_edge_dashboard_stops_counting_a_class_the_teacher_deleted [17] | PASSED | 1.31s |
| tests.dashboard.test_EI_1346_grade_history | test_EI_TC_1346_positive_correct_submission_shows_in_the_grade_history [18] | PASSED | 1.22s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T677_edge_expired_bearer_rejected_on_achievements [19] | PASSED | 0.04s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T678_edge_empty_result_set_on_achievements [20] | PASSED | 0.09s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T679_edge_expired_bearer_rejected_on_grade_distribution [21] | PASSED | 0.05s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T680_edge_empty_result_set_on_grade_distribution [22] | PASSED | 0.10s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T681_edge_expired_bearer_rejected_on_gpa [23] | PASSED | 0.04s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T682_edge_empty_result_set_on_gpa [24] | PASSED | 0.10s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T683_edge_out_of_range_limit_on_upcoming_assignments[limit=-1] [25] | PASSED | 0.09s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T683_edge_out_of_range_limit_on_upcoming_assignments[limit=0] [26] | PASSED | 0.09s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T683_edge_out_of_range_limit_on_upcoming_assignments[limit=999999] [27] | PASSED | 0.09s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T684_edge_expired_bearer_rejected_on_upcoming_assignments [28] | PASSED | 0.04s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T685_edge_expired_bearer_rejected_on_classes_statistics [29] | PASSED | 0.04s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T686_edge_empty_result_set_on_classes_statistics [30] | PASSED | 0.12s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T687_edge_expired_bearer_rejected_on_assignments_statistics [31] | PASSED | 0.05s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T688_edge_empty_result_set_on_assignments_statistics [32] | PASSED | 0.13s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T689_edge_expired_bearer_rejected_on_submissions_statistics [33] | PASSED | 0.04s |
| tests.dashboard.test_EI_R34_edge_student_dashboard | test_EI_T690_edge_empty_result_set_on_submissions_statistics [34] | PASSED | 0.09s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_empty_result_set_assignments_statistics [35] | PASSED | 0.53s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_empty_result_set_classes_statistics [36] | PASSED | 0.14s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_empty_result_set_students_statistics [37] | PASSED | 0.16s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_empty_result_set_submissions_statistics [38] | PASSED | 0.13s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_invalid_bearer_token_assignments_statistics [39] | PASSED | 0.04s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_invalid_bearer_token_classes_statistics [40] | PASSED | 0.04s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_invalid_bearer_token_students_statistics [41] | PASSED | 0.04s |
| tests.dashboard.test_EI_edge_teacher_dashboard | test_EI_TC_edge_invalid_bearer_token_submissions_statistics [42] | PASSED | 0.04s |
| tests.dashboard.test_student_dashboard_statistics | test_class_statistics_returns_200_with_total [43] | PASSED | 0.41s |
| tests.dashboard.test_student_dashboard_statistics | test_gpa_returns_200_with_overall_average [44] | PASSED | 0.09s |
| tests.dashboard.test_student_dashboard_statistics | test_grade_distribution_returns_200_with_buckets [45] | PASSED | 0.09s |
| tests.dashboard.test_student_dashboard_statistics | test_upcoming_assignments_returns_200_with_upcoming_list [46] | PASSED | 0.13s |
| tests.dashboard.test_student_dashboard_statistics | test_assignments_statistics_returns_200_with_total [47] | PASSED | 0.11s |
| tests.dashboard.test_student_dashboard_statistics | test_submissions_statistics_returns_200_with_total [48] | PASSED | 0.09s |
| tests.dashboard.test_student_dashboard_statistics | test_achievements_returns_200_with_counts [49] | PASSED | 0.10s |
| tests.dashboard.test_student_dashboard_statistics | test_class_statistics_no_auth_returns_401 [50] | PASSED | 0.04s |
| tests.dashboard.test_student_dashboard_statistics | test_gpa_no_auth_returns_401 [51] | PASSED | 0.05s |
| tests.dashboard.test_student_dashboard_statistics | test_achievements_no_auth_returns_401 [52] | PASSED | 0.04s |
| tests.dashboard.test_teacher_dashboard_statistics | test_class_statistics_returns_total_and_details [53] | PASSED | 0.43s |
| tests.dashboard.test_teacher_dashboard_statistics | test_students_statistics_returns_total_and_details [54] | PASSED | 0.14s |
| tests.dashboard.test_teacher_dashboard_statistics | test_assignments_statistics_returns_total_and_details [55] | PASSED | 0.18s |
| tests.dashboard.test_teacher_dashboard_statistics | test_submissions_statistics_returns_data_and_details [56] | PASSED | 0.15s |
| tests.dashboard.test_teacher_dashboard_statistics | test_class_statistics_no_auth_returns_401 [57] | PASSED | 0.06s |
| tests.dashboard.test_teacher_dashboard_statistics | test_submissions_statistics_no_auth_returns_401 [58] | PASSED | 0.06s |
question| Class | Test | Status | Duration |
|---|---|---|---|
| tests.question.test_EI_1167_multi_paragraph_question | test_EI_TC_1167_positive_paragraphs_are_kept_separate_and_in_order [1] | PASSED | 0.67s |
| tests.question.test_EI_1215_question_settings_roundtrip | test_EI_TC_2438_positive_every_setting_is_stored_as_sent [2] | PASSED | 0.38s |
| tests.question.test_EI_1215_question_settings_roundtrip | test_EI_TC_1215_positive_editing_choices_and_points_keeps_the_other_settings [3] | PASSED | 0.29s |
| tests.question.test_EI_137_drag_and_drop_question | test_EI_TC_137_positive_drag_and_drop_is_stored_with_choices_and_blank_answers [4] | PASSED | 0.26s |
| tests.question.test_EI_137_drag_and_drop_question | test_EI_TC_212_positive_edited_choices_keep_their_order_and_the_blank_answers [5] | PASSED | 0.29s |
| tests.question.test_EI_137_drag_and_drop_question | test_EI_TC_213_positive_update_to_three_then_ten_choices_keeps_the_order_sent [6] | PASSED | 0.45s |
| tests.question.test_EI_137_drag_and_drop_question | test_EI_TC_137_negative_no_blank_answers_is_refused [7] | PASSED | 0.14s |
| tests.question.test_EI_137_drag_and_drop_question | test_EI_TC_137_negative_blank_answer_without_its_text_is_refused [8] | PASSED | 0.15s |
| tests.question.test_EI_137_drag_and_drop_question | test_EI_TC_213_negative_update_with_one_choice_is_refused_and_choices_are_kept [9] | PASSED | 0.32s |
| tests.question.test_EI_200_edit_dropdown_options | test_EI_TC_265_positive_renamed_option_is_stored_and_count_kept [10] | PASSED | 0.34s |
| tests.question.test_EI_200_edit_dropdown_options | test_EI_TC_267_negative_removing_every_dropdown_is_refused [11] | PASSED | 0.30s |
| tests.question.test_EI_202_edit_graph_question | test_EI_TC_473_positive_graph_answer_survives_an_edit_byte_for_byte [12] | PASSED | 0.49s |
| tests.question.test_EI_202_edit_graph_question | test_EI_TC_479_negative_graph_question_takes_no_choices [13] | PASSED | 0.14s |
| tests.question.test_EI_205_create_dropdown_question | test_EI_TC_205_positive_dropdown_question_is_stored_with_its_options [14] | PASSED | 0.26s |
| tests.question.test_EI_205_create_dropdown_question | test_EI_TC_205_negative_dropdown_option_must_be_a_string [15] | PASSED | 0.14s |
| tests.question.test_EI_206_update_dropdown_question | test_EI_TC_207_positive_updated_options_are_stored [16] | PASSED | 0.29s |
| tests.question.test_EI_206_update_dropdown_question | test_EI_TC_208_negative_a_single_option_dropdown_is_refused_on_update [17] | PASSED | 0.37s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_TC_974_change_password_requires_authentication [18] | PASSED | 0.31s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_TC_977_change_password_with_invalid_old_password [19] | PASSED | 0.33s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_TC_978_create_question_with_invalid_data_payload [20] | PASSED | 0.15s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_TC_979_fetch_update_delete_malformed_question_id [21] | PASSED | 0.35s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_TC_979_fetch_and_delete_absent_question_id [22] | PASSED | 0.16s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2781_points_at_max_succeeds [23] | PASSED | 0.14s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2781_points_above_max_rejected [24] | PASSED | 0.14s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2781_points_at_zero_rejected [25] | PASSED | 0.12s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2781_points_overflow_rejected [26] | PASSED | 0.16s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2841_category_present_returns_201 [27] | PASSED | 0.22s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2841_category_missing_returns_400 [28] | PASSED | 0.15s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2841_category_null_returns_400 [29] | PASSED | 0.15s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2841_category_empty_string_returns_400 [30] | PASSED | 0.14s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2841_category_whitespace_only_returns_400 [31] | PASSED | 0.14s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[EASY] [32] | PASSED | 0.13s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[easy] [33] | PASSED | 0.27s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[Easy] [34] | PASSED | 0.13s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[AVERAGE] [35] | PASSED | 0.13s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[average] [36] | PASSED | 0.13s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[Advance] [37] | PASSED | 0.13s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[ADVANCE] [38] | PASSED | 0.15s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_case_insensitive_returns_201[advance] [39] | PASSED | 0.15s |
| tests.question.test_EI_218_teacher_create_question_bank | test_EI_2844_difficulty_invalid_value_rejected [40] | PASSED | 0.13s |
| tests.question.test_EI_2367_delete_question | test_EI_TC_1886_positive_question_is_deleted [41] | PASSED | 0.26s |
| tests.question.test_EI_2367_delete_question | test_EI_TC_1887_negative_deleted_question_cannot_be_fetched [42] | PASSED | 0.29s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2388_positive_question_type_filter_returns_only_that_type [43] | PASSED | 0.64s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2388_positive_two_question_types_return_their_union [44] | PASSED | 0.08s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2388_positive_type_and_difficulty_filters_combine_with_and [45] | PASSED | 0.08s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2388_negative_a_type_no_question_carries_returns_nothing [46] | PASSED | 0.08s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2617_positive_difficulty_filter_returns_only_that_difficulty [47] | PASSED | 0.07s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2617_positive_two_difficulties_return_their_union [48] | PASSED | 0.07s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2620_positive_staar_filter_returns_only_staar_and_its_facet_count [49] | PASSED | 0.15s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2620_positive_sat_filter_returns_only_sat [50] | PASSED | 0.07s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2620_edge_clearing_the_assignment_type_filter_restores_the_total [51] | PASSED | 0.22s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_3160_positive_category_filter_returns_only_that_category [52] | PASSED | 0.09s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2387_positive_two_categories_return_their_union [53] | PASSED | 0.09s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_3160_positive_category_composes_with_a_narrower_search_term [54] | PASSED | 0.10s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_3160_positive_category_composes_with_the_assignment_type_filter [55] | PASSED | 0.15s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2387_negative_a_category_with_no_rows_returns_nothing [56] | PASSED | 0.07s |
| tests.question.test_EI_2388_question_bank_filters | test_EI_TC_2548_positive_creating_a_question_raises_the_difficulty_filtered_total_by_on… | PASSED | 0.72s |
| tests.question.test_EI_2478_create_free_response_question | test_EI_TC_2478_positive_free_response_is_stored_with_model_answer_and_explanation [58] | PASSED | 0.26s |
| tests.question.test_EI_2478_create_free_response_question | test_EI_TC_578_edge_long_model_answer_is_stored_whole [59] | PASSED | 0.24s |
| tests.question.test_EI_2478_create_free_response_question | test_EI_TC_443_negative_empty_stem_is_refused [60] | PASSED | 0.20s |
| tests.question.test_EI_2478_create_free_response_question | test_EI_TC_511_negative_empty_topic_is_refused [61] | PASSED | 0.17s |
| tests.question.test_EI_2478_create_free_response_question | test_EI_TC_2478_negative_empty_model_answer_list_is_refused [62] | PASSED | 0.18s |
| tests.question.test_EI_2552_update_question_rules | test_EI_TC_2552_positive_changed_stem_is_stored_and_choices_are_untouched [63] | PASSED | 0.35s |
| tests.question.test_EI_2552_update_question_rules | test_EI_TC_385_positive_added_choice_is_stored_last [64] | PASSED | 0.31s |
| tests.question.test_EI_2552_update_question_rules | test_EI_TC_840_positive_edited_and_deleted_choices_are_stored_and_the_answer_is_kept [65] | PASSED | 0.29s |
| tests.question.test_EI_2552_update_question_rules | test_EI_TC_2552_negative_empty_topic_is_refused_and_the_original_is_kept [66] | PASSED | 0.30s |
| tests.question.test_EI_2552_update_question_rules | test_EI_TC_2552_negative_one_choice_is_refused_and_the_choices_are_kept [67] | PASSED | 0.28s |
| tests.question.test_EI_2552_update_question_rules | test_EI_TC_840_negative_deleting_the_correct_choice_is_refused [68] | PASSED | 0.28s |
| tests.question.test_EI_2555_repeat_question_delete | test_EI_TC_2064_negative_second_delete_is_404 [69] | PASSED | 0.28s |
| tests.question.test_EI_2555_repeat_question_delete | test_EI_TC_2066_edge_question_bank_still_lists_after_a_repeat_delete [70] | PASSED | 0.37s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_2611_positive_search_lists_every_question_carrying_the_term [71] | PASSED | 0.59s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_2611_positive_partial_and_upper_case_terms_still_match [72] | PASSED | 0.22s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_2611_edge_special_characters_are_searched_literally [73] | PASSED | 0.34s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_1097_negative_unknown_term_returns_no_questions [74] | PASSED | 0.08s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_1097_positive_total_questions_counts_all_matches_while_total_count_is_the_pa… | PASSED | 0.08s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_2560_positive_search_term_combines_with_difficulty_and_type_filters [76] | PASSED | 0.07s |
| tests.question.test_EI_2611_question_bank_search_text | test_EI_TC_2560_negative_a_matching_term_with_an_excluding_filter_returns_nothing [77] | PASSED | 0.34s |
| tests.question.test_EI_2621_restful_api_functionality | test_EI_TC_2892_positive_get_retrieves_data [78] | PASSED | 0.38s |
| tests.question.test_EI_2621_restful_api_functionality | test_EI_TC_2893_positive_post_creates_resource [79] | PASSED | 0.19s |
| tests.question.test_EI_2621_restful_api_functionality | test_EI_TC_2894_positive_put_updates_resource [80] | PASSED | 0.31s |
| tests.question.test_EI_2621_restful_api_functionality | test_EI_TC_2895_negative_get_without_token_is_rejected [81] | PASSED | 0.05s |
| tests.question.test_EI_2621_restful_api_functionality | test_EI_TC_2896_negative_invalid_payload_rejected [82] | PASSED | 0.12s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2654_positive_first_page_holds_page_size_questions [83] | PASSED | 1.29s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2654_positive_second_page_is_disjoint_and_keeps_the_same_total [84] | PASSED | 0.15s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2921_positive_the_pages_together_are_the_whole_set_newest_first [85] | PASSED | 0.16s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2654_positive_a_page_size_of_25_puts_everything_on_one_page [86] | PASSED | 0.08s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2921_edge_total_pages_is_the_rounded_up_division_and_the_last_page_is_short … | PASSED | 0.16s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2921_edge_a_page_past_the_end_is_empty_with_the_total_unchanged [88] | PASSED | 0.07s |
| tests.question.test_EI_2654_question_bank_pagination | test_EI_TC_2921_positive_page_size_snake_case_is_an_alias_of_page_size [89] | PASSED | 0.73s |
| tests.question.test_EI_2701_multiple_choice_choice_count | test_EI_TC_2701_negative_one_choice_is_refused [90] | PASSED | 0.12s |
| tests.question.test_EI_2701_multiple_choice_choice_count | test_EI_TC_2435_negative_missing_required_field_is_refused [91] | PASSED | 0.13s |
| tests.question.test_EI_2701_multiple_choice_choice_count | test_EI_TC_2701_edge_ten_choices_are_accepted_and_kept_in_order [92] | PASSED | 0.26s |
| tests.question.test_EI_2701_multiple_choice_choice_count | test_EI_TC_2435_positive_only_the_required_fields_create_a_question [93] | PASSED | 0.26s |
| tests.question.test_EI_3398_question_listing_after_create | test_EI_TC_3398_positive_new_dropdown_question_is_counted_and_listed_right_after_create… | PASSED | 0.31s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_positive_two_groups_are_stored_as_sent [95] | PASSED | 0.23s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_negative_one_group_is_refused [96] | PASSED | 0.14s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_negative_no_groups_key_is_refused [97] | PASSED | 0.12s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_negative_a_group_with_one_choice_is_refused [98] | PASSED | 0.12s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_negative_a_group_without_its_question_text_is_refused [99] | PASSED | 0.12s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_negative_a_group_answer_that_is_not_one_of_its_choices_is_refused [100] | PASSED | 0.14s |
| tests.question.test_EI_3444_multi_part_question | test_EI_TC_3444_negative_two_groups_on_the_same_page_are_refused [101] | PASSED | 0.13s |
| tests.question.test_EI_3445_single_stimulus_and_embedded_questions | test_EI_TC_3445_positive_two_group_question_is_created_and_read_back_with_both_groups [… | PASSED | 0.25s |
| tests.question.test_EI_3445_single_stimulus_and_embedded_questions | test_EI_TC_3445_negative_one_group_is_not_enough [103] | PASSED | 0.13s |
| tests.question.test_EI_3445_single_stimulus_and_embedded_questions | test_EI_TC_3445_negative_a_group_without_a_marked_correct_answer_is_refused [104] | PASSED | 0.14s |
| tests.question.test_EI_3445_single_stimulus_and_embedded_questions | test_EI_TC_3443_positive_embedded_question_is_created_and_read_back [105] | PASSED | 0.26s |
| tests.question.test_EI_3445_single_stimulus_and_embedded_questions | test_EI_TC_3443_positive_the_correct_answer_is_stored_as_the_choice_id [106] | PASSED | 0.23s |
| tests.question.test_EI_3445_single_stimulus_and_embedded_questions | test_EI_TC_3443_negative_a_passage_with_no_marked_choice_is_refused [107] | PASSED | 0.12s |
| tests.question.test_EI_464_question_bank_facets | test_EI_TC_3374_positive_each_facet_adds_up_to_the_total [108] | PASSED | 0.58s |
| tests.question.test_EI_464_question_bank_facets | test_EI_TC_464_positive_a_question_type_facet_equals_the_total_when_filtering_by_it [109] | PASSED | 0.29s |
| tests.question.test_EI_464_question_bank_facets | test_EI_TC_464_positive_an_assignment_type_facet_equals_the_total_when_filtering_by_it … | PASSED | 0.23s |
| tests.question.test_EI_464_question_bank_facets | test_EI_TC_3374_edge_a_filtered_list_has_facets_of_the_filtered_set_only [111] | PASSED | 0.08s |
| tests.question.test_EI_464_question_bank_facets | test_EI_TC_3374_positive_the_category_facet_leaves_out_the_category_less_sat_questions … | PASSED | 0.36s |
| tests.question.test_EI_645_question_readback | test_EI_TC_645_positive_details_shown_to_the_teacher_round_trip_exactly [113] | PASSED | 0.23s |
| tests.question.test_EI_645_question_readback | test_EI_TC_1242_positive_multiple_choice_keeps_choices_answer_points_and_difficulty [114] | PASSED | 0.22s |
| tests.question.test_EI_645_question_readback | test_EI_TC_2549_positive_fetch_returns_the_stored_question [115] | PASSED | 0.24s |
| tests.question.test_EI_645_question_readback | test_EI_TC_2549_positive_the_list_returns_the_same_document_as_the_single_fetch [116] | PASSED | 0.31s |
| tests.question.test_EI_645_question_readback | test_EI_TC_1168_positive_free_response_keeps_its_answer_and_has_no_choices [117] | PASSED | 0.28s |
| tests.question.test_EI_645_question_readback | test_EI_TC_1168_negative_free_response_with_an_empty_stem_is_refused [118] | PASSED | 0.14s |
| tests.question.test_EI_840_answer_must_match_other_types | test_EI_840_negative_a_checkbox_answer_that_is_not_a_choice_is_refused [119] | PASSED | 0.33s |
| tests.question.test_EI_840_answer_must_match_other_types | test_EI_840_negative_an_embedded_answer_that_is_not_a_choice_id_is_refused [120] | PASSED | 0.28s |
| tests.question.test_EI_840_answer_must_match_other_types | test_EI_840_negative_a_dropdown_answer_from_another_blank_is_refused [121] | PASSED | 0.26s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T526_edge_malformed_teacher_id_on_all_fetch [122] | PASSED | 0.18s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T527_edge_unknown_teacher_id_on_all_fetch [123] | PASSED | 0.18s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T528_edge_unknown_assignment_types_on_staff_questions [124] | PASSED | 0.29s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T529_edge_expired_bearer_rejected_on_staff_questions [125] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T530_edge_duplicate_create_does_not_corrupt [126] | PASSED | 0.50s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T531_edge_expired_bearer_rejected_on_create [127] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T532_edge_parallel_creates_without_corruption [128] | PASSED | 0.55s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T533_edge_missing_authorization_rejected_on_create [129] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T534_edge_malformed_question_id_rejected_on_fetch [130] | PASSED | 0.08s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T535_edge_unknown_question_id_not_found_on_fetch [131] | PASSED | 0.10s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T536_edge_malformed_question_id_rejected_on_update [132] | PASSED | 0.13s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T537_edge_unknown_question_id_not_found_on_update [133] | PASSED | 0.09s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T538_edge_expired_bearer_rejected_on_update [134] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T539_edge_empty_update_payload_handled [135] | PASSED | 0.28s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T540_edge_malformed_question_id_rejected_on_delete [136] | PASSED | 0.08s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T541_edge_unknown_question_id_not_found_on_delete [137] | PASSED | 0.09s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T542_edge_expired_bearer_rejected_on_delete [138] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T543_edge_expired_bearer_rejected_on_filter_options [139] | PASSED | 0.05s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T544_edge_empty_result_set_on_filter_options [140] | PASSED | 0.18s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T545_edge_expired_bearer_rejected_on_clear_filters [141] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T546_edge_empty_result_set_on_clear_filters [142] | PASSED | 0.11s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T547_edge_omit_file_rejected_on_image_upload [143] | PASSED | 0.17s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T548_edge_interrupted_upload_leaves_no_orphaned_asset [144] | PASSED | 0.32s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T549_edge_expired_bearer_rejected_on_image_upload [145] | PASSED | 0.04s |
| tests.question.test_EI_R26_edge_teacher_question | test_EI_T550_edge_script_payload_in_file_neutralised [146] | PASSED | 0.14s |
| tests.question.test_teacher_question_image_upload | test_image_upload_returns_cdn_url [147] | PASSED | 0.14s |
| tests.question.test_teacher_question_image_upload | test_image_upload_unsupported_type_returns_415 [148] | PASSED | 0.13s |
| tests.question.test_teacher_question_image_upload | test_image_upload_no_auth_returns_401 [149] | PASSED | 0.04s |
| tests.question.test_teacher_question_reads_and_crud | test_fetch_question_returns_200 [150] | PASSED | 0.44s |
| tests.question.test_teacher_question_reads_and_crud | test_filter_options_returns_200_with_facets [151] | PASSED | 0.17s |
| tests.question.test_teacher_question_reads_and_crud | test_clear_filters_returns_200_with_data [152] | PASSED | 0.13s |
| tests.question.test_teacher_question_reads_and_crud | test_fetch_no_auth_returns_401 [153] | PASSED | 0.04s |
| tests.question.test_teacher_question_reads_and_crud | test_update_no_auth_returns_401 [154] | PASSED | 0.04s |
| tests.question.test_teacher_question_reads_and_crud | test_delete_no_auth_returns_401 [155] | PASSED | 0.04s |
| tests.question.test_teacher_question_reads_and_crud | test_filter_options_no_auth_returns_401 [156] | PASSED | 0.04s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T207_fetch_all_questions_with_malformed_filter_values_is_rejected[assignment_ty… | PASSED | 0.09s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T207_fetch_all_questions_with_malformed_filter_values_is_rejected[question_type… | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T207_fetch_all_questions_with_malformed_filter_values_is_rejected[grade_level] … | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T207_fetch_all_questions_with_malformed_filter_values_is_rejected[page] [160] | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T207_fetch_all_questions_with_malformed_filter_values_is_rejected[page_size] [161] | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T208_fetch_staff_questions_with_malformed_filter_values_is_rejected[assignment_… | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T208_fetch_staff_questions_with_malformed_filter_values_is_rejected[question_ty… | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T208_fetch_staff_questions_with_malformed_filter_values_is_rejected[grade_level… | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T208_fetch_staff_questions_with_malformed_filter_values_is_rejected[page] [165] | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T208_fetch_staff_questions_with_malformed_filter_values_is_rejected[page_size] … | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T209_create_question_without_the_stem_is_rejected [167] | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T210_create_question_with_answer_options_wrong_data_type_is_rejected[string] [168] | PASSED | 0.12s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T210_create_question_with_answer_options_wrong_data_type_is_rejected[number] [169] | PASSED | 0.14s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T210_create_question_with_answer_options_wrong_data_type_is_rejected[object] [170] | PASSED | 0.10s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T210_create_question_with_answer_options_wrong_data_type_is_rejected[list_of_nu… | PASSED | 0.13s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T210_create_question_with_answer_options_wrong_data_type_is_rejected[list_of_st… | PASSED | 0.09s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T211_create_question_with_an_empty_payload_is_rejected [173] | PASSED | 0.09s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T211_create_question_with_an_oversized_payload_is_rejected [174] | PASSED | 0.23s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T212_fetch_question_with_a_malformed_id_is_rejected [175] | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T214_fetch_question_with_a_long_or_unknown_id_is_rejected[long] [176] | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T214_fetch_question_with_a_long_or_unknown_id_is_rejected[unknown] [177] | PASSED | 0.07s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T213_fetch_question_with_the_id_omitted_is_rejected [178] | PASSED | 0.01s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T215_update_question_without_the_stem_is_rejected [179] | PASSED | 0.30s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T216_update_question_with_answer_options_wrong_data_type_is_rejected[string] [180] | PASSED | 0.30s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T216_update_question_with_answer_options_wrong_data_type_is_rejected[number] [181] | PASSED | 0.31s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T216_update_question_with_answer_options_wrong_data_type_is_rejected[object] [182] | PASSED | 0.29s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T216_update_question_with_answer_options_wrong_data_type_is_rejected[list_of_nu… | PASSED | 0.33s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T216_update_question_with_answer_options_wrong_data_type_is_rejected[list_of_st… | PASSED | 0.28s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T217_update_question_with_an_empty_payload_is_rejected [185] | PASSED | 0.29s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T217_update_question_with_an_oversized_payload_is_rejected [186] | PASSED | 0.41s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T218_update_question_with_a_malformed_id_is_rejected [187] | PASSED | 0.08s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T219_delete_question_with_a_malformed_id_is_rejected [188] | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T221_delete_question_with_a_long_or_unknown_id_is_rejected[long] [189] | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T221_delete_question_with_a_long_or_unknown_id_is_rejected[unknown] [190] | PASSED | 0.07s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T220_delete_question_with_the_id_omitted_is_rejected [191] | PASSED | 0.01s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T222_filter_options_with_malformed_request_parameters_returns_no_server_error[j… | PASSED | 0.20s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T222_filter_options_with_malformed_request_parameters_returns_no_server_error[b… | PASSED | 0.26s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T222_filter_options_with_malformed_request_parameters_returns_no_server_error[o… | PASSED | 0.19s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T223_clear_filters_with_malformed_request_parameters_returns_no_server_error[ju… | PASSED | 0.05s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T223_clear_filters_with_malformed_request_parameters_returns_no_server_error[ba… | PASSED | 0.07s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T223_clear_filters_with_malformed_request_parameters_returns_no_server_error[od… | PASSED | 0.09s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T235_poll_import_status_with_a_malformed_job_id_is_rejected [198] | PASSED | 0.25s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T237_poll_import_status_with_a_long_or_unknown_job_id_is_rejected[unknown] [199] | PASSED | 0.18s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T237_poll_import_status_with_a_long_or_unknown_job_id_is_rejected[long] [200] | PASSED | 0.16s |
| tests.question.test_zephyr_negative_question_bank | test_EI_T236_poll_import_status_with_the_job_id_omitted_is_rejected [201] | PASSED | 0.01s |
unit| Class | Test | Status | Duration |
|---|---|---|---|
| tests.unit.test_auth0_service_mocked | test_login_posts_ropg_grant_to_the_token_endpoint [1] | PASSED | 0.01s |
| tests.unit.test_auth0_service_mocked | test_login_returns_auth0_token_payload_unmodified [2] | PASSED | 0.00s |
| tests.unit.test_auth0_service_mocked | test_auth0_login_response_model_parses_token_payload [3] | PASSED | 0.00s |
| tests.unit.test_auth0_service_mocked | test_auth0_login_response_model_rejects_body_missing_access_token [4] | PASSED | 0.00s |
| tests.unit.test_auth0_service_mocked | test_login_retries_once_after_a_single_429_then_succeeds [5] | PASSED | 0.00s |
| tests.unit.test_auth0_service_mocked | test_login_backs_off_in_increasing_steps_across_repeated_429s [6] | PASSED | 0.00s |
| tests.unit.test_auth0_service_mocked | test_login_gives_up_and_returns_429_after_exhausting_the_backoff [7] | PASSED | 0.00s |
| tests.unit.test_auth0_service_mocked | test_login_does_not_retry_invalid_credentials [8] | PASSED | 0.00s |
| tests.unit.test_batch_runner_status_label | test_deselected_suite_is_not_failed [9] | PASSED | 0.00s |
| tests.unit.test_batch_runner_status_label | test_empty_suite_with_other_nonzero_exit_is_still_failed [10] | PASSED | 0.00s |
| tests.unit.test_batch_runner_status_label | test_collection_error_is_still_failed [11] | PASSED | 0.00s |
| tests.unit.test_batch_runner_status_label | test_real_test_failure_is_still_failed [12] | PASSED | 0.00s |
| tests.unit.test_batch_runner_status_label | test_passing_suite_with_nonzero_exit_is_still_failed [13] | PASSED | 0.00s |
| tests.unit.test_batch_runner_status_label | test_fully_passing_suite_is_passed [14] | PASSED | 0.00s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheAuth0PolicyThatActuallyBinds | test_no_password_has_three_identical_characters_in_a_row [15] | PASSED | 0.04s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheAuth0PolicyThatActuallyBinds | test_the_repair_helper_removes_a_run [16] | PASSED | 0.00s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_every_password_contains[an uppercase letter- |
PASSED | 0.01s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_every_password_contains[a digit- |
PASSED | 0.01s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_every_password_contains[a special character- |
PASSED | 0.01s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_every_password_contains[a lowercase letter- |
PASSED | 0.01s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_the_length_is_respected [21] | PASSED | 0.00s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_it_clears_the_tenant_minimum_of_ten [22] | PASSED | 0.00s |
| tests.unit.test_generated_passwords_satisfy_auth0.TestTheApiPolicyStillHolds | test_passwords_are_not_all_the_same [23] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheAuth0LoginExchange | test_the_client_secret_is_not_logged [24] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheAuth0LoginExchange | test_every_token_in_the_response_is_redacted [25] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheAuth0LoginExchange | test_the_password_masking_that_already_worked_still_works [26] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheAuth0LoginExchange | test_non_secret_fields_survive_so_the_log_stays_useful [27] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheKeyListIsNotTheOnlyDefence | test_a_token_under_an_unexpected_key_is_still_redacted [28] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheKeyListIsNotTheOnlyDefence | test_a_token_nested_deep_in_the_body_is_redacted [29] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheKeyListIsNotTheOnlyDefence | test_a_token_embedded_in_a_sentence_is_redacted [30] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheKeyListIsNotTheOnlyDefence | test_a_token_in_a_url_is_redacted [31] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestTheKeyListIsNotTheOnlyDefence | test_the_matcher_recognises_a_real_jwt_shape [32] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestRedactionIsCaseInsensitiveAndTotal | test_an_uppercased_key_is_still_caught [33] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestRedactionIsCaseInsensitiveAndTotal | test_a_list_of_credentials_is_redacted_elementwise [34] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestRedactionIsCaseInsensitiveAndTotal | test_ordinary_text_is_left_alone [35] | PASSED | 0.00s |
| tests.unit.test_request_log_redaction.TestRedactionIsCaseInsensitiveAndTotal | test_a_value_that_merely_starts_with_ey_is_not_mangled [36] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_seed_failure_is_a_failure_not_a_skip [37] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_seed_failure_message_keeps_the_diagnostic [38] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_downgrades_to_skip[1] [39] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_downgrades_to_skip[true] [40] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_downgrades_to_skip[TRUE] [41] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_downgrades_to_skip[yes] [42] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_is_off_unless_explicitly_set[] [43] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_is_off_unless_explicitly_set[0] [44] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_is_off_unless_explicitly_set[false] [45] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_is_off_unless_explicitly_set[no] [46] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_escape_hatch_is_off_unless_explicitly_set[off] [47] | PASSED | 0.00s |
| tests.unit.test_seed_guard | test_precondition_missing_is_still_a_skip [48] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestARenewableTokenRecovers | test_a_401_triggers_exactly_one_retry [49] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestARenewableTokenRecovers | test_the_retry_carries_the_new_token [50] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestARenewableTokenRecovers | test_the_replacement_is_itself_renewable [51] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestARenewableTokenRecovers | test_a_healthy_request_never_re_authenticates [52] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheGuardOnDeliberate401s | test_a_plain_token_is_never_renewed [53] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheGuardOnDeliberate401s | test_clearing_the_token_also_clears_renewal [54] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheGuardOnDeliberate401s | test_replacing_a_renewable_token_with_a_plain_one_disables_renewal [55] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestItCannotLoop | test_a_persistent_401_is_returned_after_one_retry [56] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestItCannotLoop | test_a_renewal_that_yields_nothing_returns_the_original_401 [57] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheTokenStillBehavesLikeAString | test_it_is_a_str [58] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheTokenStillBehavesLikeAString | test_it_formats_into_a_header_unchanged [59] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheTokenStillBehavesLikeAString | test_it_compares_equal_to_its_value [60] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheRawPassthroughsAreRenewable | test_get_raw_renews_on_401 [61] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheRawPassthroughsAreRenewable | test_upload_text_raw_renews_on_401 [62] | PASSED | 0.00s |
| tests.unit.test_token_renewal_on_401.TestTheRawPassthroughsAreRenewable | test_a_deliberately_bad_token_still_is_not_renewed [63] | PASSED | 0.00s |