def get_user_program_credentials(user): """Given a user, get the list of all program credentials earned and returns list of dictionaries containing related programs data. Arguments: user (User): The user object for getting programs credentials. Returns: list, containing programs dictionaries. """ programs_credentials_data = [] credential_configuration = CredentialsApiConfig.current() if not credential_configuration.is_learner_issuance_enabled: log.debug('Display of certificates for programs is disabled.') return programs_credentials_data credentials = get_user_credentials(user) if not credentials: log.info('No credential earned by the given user.') return programs_credentials_data programs_credentials = [] for credential in credentials: try: if 'program_id' in credential['credential'] and credential['status'] == 'awarded': programs_credentials.append(credential) except KeyError: log.exception('Invalid credential structure: %r', credential) if programs_credentials: programs_credentials_data = get_programs_for_credentials(user, programs_credentials) return programs_credentials_data
def get_user_program_credentials(user): """Given a user, get the list of all program credentials earned and returns list of dictionaries containing related programs data. Arguments: user (User): The user object for getting programs credentials. Returns: list, containing programs dictionaries. """ programs_credentials_data = [] credential_configuration = CredentialsApiConfig.current() if not credential_configuration.is_learner_issuance_enabled: log.debug('Display of certificates for programs is disabled.') return programs_credentials_data credentials = get_user_credentials(user) if not credentials: log.info('No credential earned by the given user.') return programs_credentials_data programs_credentials = [] for credential in credentials: try: if 'program_id' in credential['credential'] and credential[ 'status'] == 'awarded': programs_credentials.append(credential) except KeyError: log.exception('Invalid credential structure: %r', credential) if programs_credentials: programs_credentials_data = get_programs_for_credentials( user, programs_credentials) return programs_credentials_data
def test_get_program_for_certificates_no_data(self): """Verify behavior when no programs data is found for the user.""" self.create_programs_config() self.create_credentials_config() self.mock_programs_api(data={'results': []}) actual = get_programs_for_credentials(self.user, self.PROGRAMS_CREDENTIALS_DATA) self.assertEqual(actual, [])
def test_get_program_for_certificates_no_data(self): """Verify behavior when no programs data is found for the user.""" self.create_programs_config() self.create_credentials_config() self.mock_programs_api(data={'results': []}) program_credentials_data = self._expected_progam_credentials_data() actual = utils.get_programs_for_credentials(self.user, program_credentials_data) self.assertEqual(actual, [])
def test_get_program_for_certificates(self): """Verify programs data can be retrieved and parsed correctly for certificates.""" self.create_programs_config() self.mock_programs_api() actual = get_programs_for_credentials(self.user, self.PROGRAMS_CREDENTIALS_DATA) expected = self.PROGRAMS_API_RESPONSE['results'] expected[0]['credential_url'] = self.PROGRAMS_CREDENTIALS_DATA[0]['certificate_url'] expected[1]['credential_url'] = self.PROGRAMS_CREDENTIALS_DATA[1]['certificate_url'] self.assertEqual(len(actual), 2) self.assertEqual(actual, expected)
def test_get_program_for_certificates(self): """Verify programs data can be retrieved and parsed correctly for certificates.""" self.create_programs_config() self.mock_programs_api() program_credentials_data = self._expected_progam_credentials_data() actual = utils.get_programs_for_credentials(self.user, program_credentials_data) expected = self.PROGRAMS_API_RESPONSE['results'][:2] expected[0]['credential_url'] = program_credentials_data[0]['certificate_url'] expected[1]['credential_url'] = program_credentials_data[1]['certificate_url'] self.assertEqual(len(actual), 2) self.assertEqual(actual, expected)
def test_get_program_for_certificates_id_not_exist(self): """Verify behavior when no program with the given program_id in credentials exists. """ self.create_programs_config() self.create_credentials_config() self.mock_programs_api() credential_data = [ { "id": 1, "username": "******", "credential": {"credential_id": 1, "program_id": 100}, "status": "awarded", "credential_url": "www.example.com", } ] actual = utils.get_programs_for_credentials(self.user, credential_data) self.assertEqual(actual, [])
def test_get_program_for_certificates_id_not_exist(self): """Verify behavior when no program with the given program_id in credentials exists. """ self.create_programs_config() self.create_credentials_config() self.mock_programs_api() credential_data = [{ "id": 1, "username": "******", "credential": { "credential_id": 1, "program_id": 100 }, "status": "awarded", "credential_url": "www.example.com" }] actual = utils.get_programs_for_credentials(self.user, credential_data) self.assertEqual(actual, [])