def test_can_generate_invalidated(self): """ Test handling when user is on the invalidate list """ u = UserFactory() cr = CourseFactory() key = cr.id # pylint: disable=no-member CourseEnrollmentFactory( user=u, course_id=key, is_active=True, mode="verified", ) cert = GeneratedCertificateFactory( user=u, course_id=key, mode=GeneratedCertificate.MODES.verified, status=CertificateStatuses.downloadable ) CertificateAllowlistFactory.create(course_id=key, user=u) CertificateInvalidationFactory.create( generated_certificate=cert, invalidated_by=self.user, active=True ) assert not _can_generate_allowlist_certificate(u, key) assert _set_allowlist_cert_status(u, key) == CertificateStatuses.unavailable
def test_can_generate_web_cert_disabled(self): """ Test handling when web certs are not enabled """ with mock.patch(WEB_CERTS_METHOD, return_value=False): assert not _can_generate_allowlist_certificate(self.user, self.course_run_key) assert _set_allowlist_cert_status(self.user, self.course_run_key) is None
def test_can_generate_not_verified(self): """ Test handling when the user's id is not verified """ with mock.patch(ID_VERIFIED_METHOD, return_value=False): assert not _can_generate_allowlist_certificate(self.user, self.course_run_key) assert _set_allowlist_cert_status(self.user, self.course_run_key) == CertificateStatuses.unverified
def test_can_generate_no_overview(self): """ Test handling when the course overview is missing """ with mock.patch(COURSE_OVERVIEW_METHOD, return_value=None): assert not _can_generate_allowlist_certificate(self.user, self.course_run_key, self.enrollment_mode) assert _set_allowlist_cert_status(self.user, self.course_run_key, self.enrollment_mode, self.grade) is None
def test_can_generate_not_enrolled(self): """ Test handling when user is not enrolled """ u = UserFactory() cr = CourseFactory() key = cr.id # pylint: disable=no-member CertificateAllowlistFactory.create(course_id=key, user=u) assert not _can_generate_allowlist_certificate(u, key) assert _set_allowlist_cert_status(u, key) is None
def test_handle_invalid(self): """ Test handling of an invalid user/course run combo """ u = UserFactory() assert not _can_generate_allowlist_certificate(u, self.course_run_key) assert not generate_allowlist_certificate_task(u, self.course_run_key) assert not generate_certificate_task(u, self.course_run_key) assert _set_allowlist_cert_status(u, self.course_run_key) is None
def test_can_generate_not_verified(self, idv_retired): """ Test handling when the user's id is not verified """ with mock.patch(ID_VERIFIED_METHOD, return_value=False), \ mock.patch(INTEGRITY_ENABLED_METHOD, return_value=idv_retired): self.assertEqual(idv_retired, _can_generate_allowlist_certificate(self.user, self.course_run_key, self.enrollment_mode)) self.assertIsNot(idv_retired, _set_allowlist_cert_status( self.user, self.course_run_key, self.enrollment_mode, self.grade) == CertificateStatuses.unverified)
def test_can_generate_not_verified(self, enable_integrity_signature): """ Test handling when the user's id is not verified """ with mock.patch(ID_VERIFIED_METHOD, return_value=False), \ mock.patch.dict(settings.FEATURES, ENABLE_INTEGRITY_SIGNATURE=enable_integrity_signature): self.assertEqual(enable_integrity_signature, _can_generate_allowlist_certificate(self.user, self.course_run_key, self.enrollment_mode)) self.assertIsNot(enable_integrity_signature, _set_allowlist_cert_status( self.user, self.course_run_key, self.enrollment_mode, self.grade) == CertificateStatuses.unverified)
def test_can_generate_not_whitelisted(self): """ Test handling when user is not whitelisted """ u = UserFactory() cr = CourseFactory() key = cr.id # pylint: disable=no-member CourseEnrollmentFactory( user=u, course_id=key, is_active=True, mode="verified", ) assert not _can_generate_allowlist_certificate(u, key) assert _set_allowlist_cert_status(u, key) is None
def test_can_generate_not_allowlisted(self): """ Test handling when user is not on the certificate allowlist. """ u = UserFactory() cr = CourseFactory() key = cr.id # pylint: disable=no-member CourseEnrollmentFactory( user=u, course_id=key, is_active=True, mode=CourseMode.VERIFIED, ) assert not _can_generate_allowlist_certificate(u, key, self.enrollment_mode) assert _set_allowlist_cert_status(u, key, self.enrollment_mode, self.grade) is None
def test_can_generate_not_verified(self, enable_idv_requirement): """ Test handling when the user's id is not verified """ with mock.patch(ID_VERIFIED_METHOD, return_value=False), \ mock.patch.dict(settings.FEATURES, ENABLE_CERTIFICATES_IDV_REQUIREMENT=enable_idv_requirement): self.assertNotEqual( enable_idv_requirement, _can_generate_allowlist_certificate(self.user, self.course_run_key, self.enrollment_mode)) self.assertIs( enable_idv_requirement, _set_allowlist_cert_status( self.user, self.course_run_key, self.enrollment_mode, self.grade) == CertificateStatuses.unverified)
def test_can_generate_audit(self): """ Test handling when user is enrolled in audit mode """ u = UserFactory() cr = CourseFactory() key = cr.id # pylint: disable=no-member CourseEnrollmentFactory( user=u, course_id=key, is_active=True, mode="audit", ) CertificateAllowlistFactory.create(course_id=key, user=u) assert not _can_generate_allowlist_certificate(u, key) assert _set_allowlist_cert_status(u, key) is None
def test_cert_status_downloadable(self): """ Test cert status when status is already downloadable """ u = UserFactory() cr = CourseFactory() key = cr.id # pylint: disable=no-member CourseEnrollmentFactory( user=u, course_id=key, is_active=True, mode=GeneratedCertificate.MODES.verified, ) GeneratedCertificateFactory(user=u, course_id=key, mode=GeneratedCertificate.MODES.verified, status=CertificateStatuses.downloadable) assert _set_allowlist_cert_status(u, key) is None