def test_fine_with_multiple_verification_records(self): """ Testing there are no issues with excluding learners with multiple sso verifications """ SSOVerificationFactory( status='approved', user=self.user1, ) SSOVerificationFactory( status='approved', user=self.user1, ) assert SSOVerification.objects.count() == 2 call_command('backfill_sso_verifications_for_old_account_links', '--provider-slug', self.provider.provider_id) assert SSOVerification.objects.count() == 2
def _construct_id_verification(self, user): """ Helper function to create the SSO verified record for the user so that the user is ID Verified """ SSOVerificationFactory( identity_provider_slug=self.org_key_list[0], user=user, ) return IDVerificationService.user_status(user)
def test_multiple_verification_types(self): self.manual_verification = ManualVerification.objects.create( # lint-amnesty, pylint: disable=attribute-defined-outside-init user=self.user, status='approved', reason='testing') self.sso_verification = SSOVerificationFactory(user=self.user, status='approved') # lint-amnesty, pylint: disable=attribute-defined-outside-init self.photo_verification.error_msg = 'tested_error' self.photo_verification.error_code = 'error_code' self.photo_verification.status = 'denied' self.photo_verification.save() response = self.client.get(self.path) self.assertEqual(response.status_code, 200) expected_expires = self.CREATED_AT + datetime.timedelta( settings.VERIFY_STUDENT['DAYS_GOOD_FOR']) expected = [ { 'type': 'Software Secure', 'status': self.photo_verification.status, 'expiration_datetime': '{}Z'.format(expected_expires.isoformat()), 'message': self.photo_verification.error_msg, 'updated_at': '{}Z'.format(self.CREATED_AT.isoformat()), 'receipt_id': self.photo_verification.receipt_id }, { 'type': 'SSO', 'status': self.sso_verification.status, 'expiration_datetime': '{}Z'.format(expected_expires.isoformat()), 'message': '', 'updated_at': '{}Z'.format(self.CREATED_AT.isoformat()), 'receipt_id': None, }, { 'type': 'Manual', 'status': self.manual_verification.status, 'expiration_datetime': '{}Z'.format(expected_expires.isoformat()), 'message': self.manual_verification.reason, 'updated_at': '{}Z'.format(self.CREATED_AT.isoformat()), 'receipt_id': None, }, ] self.assertEqual(json.loads(response.content.decode('utf-8')), expected)
def test_multiple_verification_instances(self): self.sso_verification = SSOVerificationFactory(user=self.user, status='approved') second_ss_photo_verification = SoftwareSecurePhotoVerification.objects.create( user=self.user, status='denied', error_msg='test error message for denial', error_code='plain_code') response = self.client.get(self.path) self.assertEqual(response.status_code, 200) expected_expires = self.CREATED_AT + datetime.timedelta( settings.VERIFY_STUDENT['DAYS_GOOD_FOR']) expected = [ { 'type': 'Software Secure', 'status': self.photo_verification.status, 'expiration_datetime': '{}Z'.format(expected_expires.isoformat()), 'message': self.photo_verification.error_msg, 'updated_at': '{}Z'.format(self.CREATED_AT.isoformat()), 'receipt_id': self.photo_verification.receipt_id, }, { 'type': 'Software Secure', 'status': second_ss_photo_verification.status, 'expiration_datetime': '{}Z'.format(expected_expires.isoformat()), 'message': second_ss_photo_verification.error_msg, 'updated_at': '{}Z'.format(self.CREATED_AT.isoformat()), 'receipt_id': second_ss_photo_verification.receipt_id, }, { 'type': 'SSO', 'status': self.sso_verification.status, 'expiration_datetime': '{}Z'.format(expected_expires.isoformat()), 'message': '', 'updated_at': '{}Z'.format(self.CREATED_AT.isoformat()), 'receipt_id': None, }, ] self.assertEqual(json.loads(response.content.decode('utf-8')), expected)
def test_multiple_verification_instances(self): self.sso_verification = SSOVerificationFactory(user=self.user, status='approved') # lint-amnesty, pylint: disable=attribute-defined-outside-init second_ss_photo_verification = SoftwareSecurePhotoVerification.objects.create( user=self.user, status='denied', error_msg='test error message for denial', error_code='plain_code') response = self.client.get(self.path) assert response.status_code == 200 expected_expires = self.CREATED_AT + datetime.timedelta( settings.VERIFY_STUDENT['DAYS_GOOD_FOR']) expected = [ { 'type': 'Software Secure', 'status': self.photo_verification.status, 'expiration_datetime': f'{expected_expires.isoformat()}Z', 'message': self.photo_verification.error_msg, 'updated_at': f'{self.CREATED_AT.isoformat()}Z', 'receipt_id': self.photo_verification.receipt_id, }, { 'type': 'Software Secure', 'status': second_ss_photo_verification.status, 'expiration_datetime': f'{expected_expires.isoformat()}Z', 'message': second_ss_photo_verification.error_msg, 'updated_at': f'{self.CREATED_AT.isoformat()}Z', 'receipt_id': second_ss_photo_verification.receipt_id, }, { 'type': 'SSO', 'status': self.sso_verification.status, 'expiration_datetime': f'{expected_expires.isoformat()}Z', 'message': '', 'updated_at': f'{self.CREATED_AT.isoformat()}Z', 'receipt_id': None, }, ] assert json.loads(response.content.decode('utf-8')) == expected