Ejemplo n.º 1
0
    def test_generate_allowlist_honor_cert(self):
        """
        Test that verifies we can generate an Honor cert for an Open edX installation configured to support Honor
        certificates.
        """
        course_run = CourseFactory()
        course_run_key = course_run.id  # pylint: disable=no-member
        enrollment_mode = CourseMode.HONOR
        CourseEnrollmentFactory(
            user=self.user,
            course_id=course_run_key,
            is_active=True,
            mode=enrollment_mode,
        )

        CertificateAllowlistFactory.create(course_id=course_run_key,
                                           user=self.user)

        # Enable Honor Certificates and verify we can generate an AllowList certificate
        with override_settings(
                FEATURES={
                    **settings.FEATURES, 'DISABLE_HONOR_CERTIFICATES': False
                }):
            assert _can_generate_allowlist_certificate(self.user,
                                                       course_run_key,
                                                       enrollment_mode)

        # Disable Honor Certificates and verify we cannot generate an AllowList certificate
        with override_settings(
                FEATURES={
                    **settings.FEATURES, 'DISABLE_HONOR_CERTIFICATES': True
                }):
            assert not _can_generate_allowlist_certificate(
                self.user, course_run_key, enrollment_mode)
 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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 def test_can_generate_auto_disabled(self):
     """
     Test handling when automatic generation is disabled
     """
     with override_waffle_switch(AUTO_GENERATION_SWITCH, active=False):
         assert not _can_generate_allowlist_certificate(
             self.user, self.course_run_key)
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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, self.enrollment_mode)
         assert _set_allowlist_cert_status(self.user, self.course_run_key, self.enrollment_mode, self.grade) is None
Ejemplo n.º 8
0
 def test_handle_valid(self):
     """
     Test handling of a valid user/course run combo
     """
     assert _can_generate_allowlist_certificate(self.user,
                                                self.course_run_key)
     assert generate_allowlist_certificate_task(self.user,
                                                self.course_run_key)
Ejemplo n.º 9
0
 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
     CertificateWhitelistFactory.create(course_id=key, user=u)
     assert not _can_generate_allowlist_certificate(u, key)
 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, self.enrollment_mode)
         assert _set_allowlist_cert_status(self.user, self.course_run_key, self.enrollment_mode, self.grade) == \
                CertificateStatuses.unverified
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
 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
     mode = None
     grade = None
     CertificateAllowlistFactory.create(course_id=key, user=u)
     assert not _can_generate_allowlist_certificate(u, key, mode)
     assert _set_allowlist_cert_status(u, key, mode, grade) is None
Ejemplo n.º 13
0
 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)
Ejemplo n.º 14
0
 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)
Ejemplo n.º 15
0
 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)
Ejemplo n.º 16
0
 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
Ejemplo n.º 17
0
 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=GeneratedCertificate.MODES.verified,
     )
     assert not _can_generate_allowlist_certificate(u, key)
     assert _set_allowlist_cert_status(u, key) is None
Ejemplo n.º 18
0
 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)
Ejemplo n.º 19
0
    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",
        )
        CertificateWhitelistFactory.create(course_id=key, user=u)

        assert not _can_generate_allowlist_certificate(u, key)
Ejemplo n.º 20
0
    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
        mode = CourseMode.AUDIT
        CourseEnrollmentFactory(
            user=u,
            course_id=key,
            is_active=True,
            mode=mode,
        )
        CertificateAllowlistFactory.create(course_id=key, user=u)

        assert not _can_generate_allowlist_certificate(u, key, mode)
        assert _set_allowlist_cert_status(u, key, mode, self.grade) is None