From 94b9d0fc9b06e8eb29c1de45600770e43e47a05b Mon Sep 17 00:00:00 2001 From: charlesedeh021-cell Date: Wed, 21 Oct 2026 11:36:42 +0100 Subject: [PATCH] test(progress): reject revoked delegate quiz retakes --- tests/unit/progress_tests.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/unit/progress_tests.rs b/tests/unit/progress_tests.rs index ef6bc19..7787c07 100644 --- a/tests/unit/progress_tests.rs +++ b/tests/unit/progress_tests.rs @@ -2528,4 +2528,30 @@ mod progress_unit_tests { client.unpause(&admin); assert!(client.try_retake_quiz_for(&caller, &learner, &course_id, &Symbol::new(&env, "quiz_1"), &80).is_ok()); } -} + + #[test] + fn test_retake_quiz_for_rejects_former_delegate_after_revocation() { + let env = Env::default(); + let (_admin, contract_id) = setup_contract(&env); + let client = ProgressTrackerClient::new(&env, &contract_id); + + env.mock_all_auths(); + let course_id = create_test_course(&env, &client); + let learner = Address::generate(&env); + let delegate = Address::generate(&env); + let quiz_id = Symbol::new(&env, "quiz_1"); + + client.enroll(&learner, &course_id); + client.submit_quiz_score(&learner, &course_id, &quiz_id, &60); + client.delegate_progress(&learner, &delegate); + client.revoke_delegation(&learner); + + let result = client.try_retake_quiz_for( + &delegate, + &learner, + &course_id, + &quiz_id, + &80, + ); + assert!(result.is_err()); + }}