Ejemplo n.º 1
0
 def test_issue_credential_with_invalid_type(self):
     """ Verify the method raises an error for attempts to issue an unsupported credential type. """
     accreditor = Accreditor(issuers=[ProgramCertificateIssuer()])
     course_cert = CourseCertificateFactory()
     with self.assertRaises(UnsupportedCredentialTypeError):
         accreditor.issue_credential(course_cert,
                                     'tester',
                                     attributes=self.attributes)
Ejemplo n.º 2
0
    def test_create_credential_type_issuer_map(self):
        """ Verify the Accreditor supports only one issuer per credential type. """
        accreditor = Accreditor(
            issuers=[ProgramCertificateIssuer(),
                     ProgramCertificateIssuer()])

        expected = {self.program_credential: accreditor.issuers[0]}
        self.assertEqual(accreditor.credential_type_issuer_map, expected)
Ejemplo n.º 3
0
 def setUp(self):
     super(AccreditorTests, self).setUp()
     self.accreditor = Accreditor()
     self.program_cert = ProgramCertificateFactory()
     self.program_credential = ProgramCertificate
     self.attributes = [{
         "name": "whitelist_reason",
         "value": "Reason for whitelisting."
     }]
Ejemplo n.º 4
0
    def test_constructor_with_multiple_issuers(self):
        """ Verify the Accreditor supports multiple Issuers """
        accreditor = Accreditor(issuers=[CourseCertificateIssuer(), ProgramCertificateIssuer()])

        expected = {
            self.course_credential: accreditor.issuers[0],
            self.program_credential: accreditor.issuers[1],
        }
        self.assertDictEqual(accreditor.credential_type_issuer_map, expected)
Ejemplo n.º 5
0
 def test_issue_credential(self):
     """ Verify the method calls the Issuer's issue_credential method. """
     accreditor = Accreditor(issuers=[ProgramCertificateIssuer()])
     with patch.object(ProgramCertificateIssuer,
                       'issue_credential') as mock_method:
         accreditor.issue_credential(self.program_cert,
                                     'tester',
                                     attributes=self.attributes)
         mock_method.assert_called_with(self.program_cert, 'tester',
                                        'awarded', self.attributes, None)
Ejemplo n.º 6
0
    def test_constructor_with_multiple_issuers_for_same_credential_type(self):
        """ Verify the Accreditor supports a single Issuer per credential type.
        Attempts to register additional issuers for a credential type should
        result in a warning being logged.
        """
        msg = 'The issuer [{}] is already registered to issue credentials of type [{}]. [{}] will NOT be used.'.format(
            ProgramCertificateIssuer, self.program_credential, ProgramCertificateIssuer
        )

        with LogCapture(LOGGER_NAME) as l:
            accreditor = Accreditor(issuers=[ProgramCertificateIssuer(), ProgramCertificateIssuer()])
            l.check((LOGGER_NAME, 'WARNING', msg))
        expected = {self.program_credential: accreditor.issuers[0]}
        self.assertEqual(accreditor.credential_type_issuer_map, expected)
Ejemplo n.º 7
0
    def issue_credential(self, validated_data):
        """
        Issue a new credential.

        Args:
            validated_data (dict): Input data specifying the credential type, recipient, and attributes.

        Returns:
            AbstractCredential
        """
        accreditor = Accreditor()
        credential = validated_data['credential']
        username = validated_data['username']
        attributes = validated_data.pop('attributes', None)

        return accreditor.issue_credential(credential, username, attributes)
Ejemplo n.º 8
0
    def issue_credential(self, validated_data):
        """
        Issue a new credential.

        Args:
            validated_data (dict): Input data specifying the credential type, recipient, and attributes.

        Returns:
            AbstractCredential
        """
        accreditor = Accreditor()
        credential = validated_data["credential"]
        username = validated_data["username"]
        status = validated_data.get("status", UserCredentialStatus.AWARDED)
        attributes = validated_data.pop("attributes", None)
        request = self.context.get("request")

        return accreditor.issue_credential(credential, username, status=status, attributes=attributes, request=request)
Ejemplo n.º 9
0
 def setUp(self):
     super().setUp()
     self.accreditor = Accreditor()
     self.program_cert = ProgramCertificateFactory()