def test_invalid_site(self): """Verify that the view returns a 404 if user_credentials are displayed on a site they are not associated with. """ domain = "unused.testsite" site_configuration = SiteConfigurationFactory( site__domain=domain, ) test_site = site_configuration.site test_program_certificate = factories.ProgramCertificateFactory(site=test_site) test_signatory_1 = factories.SignatoryFactory() test_signatory_2 = factories.SignatoryFactory() test_program_certificate.signatories.add(test_signatory_1, test_signatory_2) test_user_credential = factories.UserCredentialFactory( username=self.MOCK_USER_DATA["username"], credential=test_program_certificate ) response = self.client.get(test_user_credential.get_absolute_url()) self.assertEqual(response.status_code, 404) # Change the program certificate site to the client's site and check that the # response returns the user's certificate. test_program_certificate.site = self.site test_program_certificate.save() response = self._render_user_credential( user_credential=test_user_credential, program_certificate=test_program_certificate ) self.assertEqual(response.status_code, 200)
def setUp(self): super(RenderCredentialPageTests, self).setUp() self.program_certificate = factories.ProgramCertificateFactory(site=self.site) self.signatory_1 = factories.SignatoryFactory() self.signatory_2 = factories.SignatoryFactory() self.program_certificate.signatories.add(self.signatory_1, self.signatory_2) self.user_credential = factories.UserCredentialFactory(credential=self.program_certificate)
def test_partial_update(self, user_kwargs, expected_status): """ The partial update (PATCH) method requires the 'change' permission. """ program_cert = factories.ProgramCertificateFactory() user_credential = factories.UserCredentialFactory.create( credential=program_cert, username='******') detail_path = reverse("api:v1:usercredential-detail", args=[user_credential.id]) post_data = { 'username': '******', 'credential': { 'program_id': program_cert.program_id }, 'attributes': [{ 'name': 'dummy-attr-name', 'value': 'dummy-attr-value' }], } self.client.force_authenticate(self.make_user(**user_kwargs)) response = self.client.patch(path=detail_path, data=json.dumps(post_data), content_type=JSON_CONTENT_TYPE) self.assertEqual(response.status_code, expected_status)
def test_create_with_in_active_program_certificate(self): """ Verify the endpoint throws error if Program is inactive. """ program_certificate = factories.ProgramCertificateFactory( is_active=False) data = { "username": self.username, "credential": { "program_id": program_certificate.program_id }, "attributes": [ { "name": self.user_credential_attribute.name, "value": self.user_credential_attribute.value }, ] } msg = "Credential ID [{cred_id}] for ProgramCertificate matching query does not exist.".format( cred_id=program_certificate.program_id) # Verify log is captured. with LogCapture(LOGGER_NAME_SERIALIZER) as l: response = self._attempt_create_user_credentials(data) l.check((LOGGER_NAME_SERIALIZER, 'ERROR', msg)) self.assertEqual(response.status_code, 400)
def test_create_with_programcertificate(self): """ Verify the endpoint supports issuing a new ProgramCertificate credential. """ program_certificate = factories.ProgramCertificateFactory() data = { "username": self.username, "credential": { "program_id": program_certificate.program_id }, "attributes": [ { "name": self.user_credential_attribute.name, "value": self.user_credential_attribute.value }, ] } response = self._attempt_create_user_credentials(data) self.assertEqual(response.status_code, 201) user_credential = UserCredential.objects.get(username=self.username) self.assertEqual( dict(response.data), dict( UserCredentialSerializer(user_credential, context={ 'request': self.request }).data))
def setUp(self): super(ProgramCredentialViewSetTests, self).setUp() self.program_certificate = factories.ProgramCertificateFactory() self.program_id = self.program_certificate.program_id self.user_credential = factories.UserCredentialFactory.create( credential=self.program_certificate) self.request = APIRequestFactory().get('/')
def setUp(self): super().setUp() self.program_certificate = factories.ProgramCertificateFactory( site=self.site) self.signatory_1 = factories.SignatoryFactory() self.signatory_2 = factories.SignatoryFactory() self.program_certificate.signatories.add(self.signatory_1, self.signatory_2) self.user_credential = factories.UserCredentialFactory( credential=self.program_certificate) self.platform_name = self.site.siteconfiguration.platform_name
def setUp(self): super().setUp() self.program_certificate = factories.ProgramCertificateFactory(site=self.site) self.signatory_1 = factories.SignatoryFactory() self.signatory_2 = factories.SignatoryFactory() self.program_certificate.signatories.add(self.signatory_1, self.signatory_2) self.user_credential = factories.UserCredentialFactory( username=self.MOCK_USER_DATA['username'], credential=self.program_certificate ) self.platform_name = self.site.siteconfiguration.platform_name user = UserFactory(username=self.MOCK_USER_DATA['username']) self.client.login(username=user.username, password=USER_PASSWORD)
def setUp(self): super(UserCredentialViewSetTests, self).setUp() self.user = UserFactory() self.client.force_authenticate(self.user) self.program_cert = factories.ProgramCertificateFactory() self.program_id = self.program_cert.program_id self.user_credential = factories.UserCredentialFactory.create( credential=self.program_cert) self.user_credential_attribute = factories.UserCredentialAttributeFactory.create( user_credential=self.user_credential) self.username = "******" self.request = APIRequestFactory().get('/')
def test_retrieve(self, user_kwargs, expected_status): """ The retrieve (GET) method requires the 'view' permission, or for the requested object to be associated with the username of the requesting user. """ program_cert = factories.ProgramCertificateFactory() user_credential = factories.UserCredentialFactory.create( credential=program_cert, username='******') detail_path = reverse("api:v1:usercredential-detail", args=[user_credential.id]) self.client.force_authenticate(self.make_user(**user_kwargs)) response = self.client.get(detail_path) self.assertEqual(response.status_code, expected_status)
def setUp(self): super().setUp() self.program_certificate = factories.ProgramCertificateFactory(site=self.site) self.signatory_1 = factories.SignatoryFactory() self.signatory_2 = factories.SignatoryFactory() self.program_certificate.signatories.add(self.signatory_1, self.signatory_2) self.user_credential = factories.UserCredentialFactory( username=self.MOCK_USER_DATA["username"], credential=self.program_certificate ) self.visible_date_attr = factories.UserCredentialAttributeFactory( user_credential=self.user_credential, name="visible_date", value="1970-01-01T01:01:01Z", ) self.platform_name = self.site.siteconfiguration.platform_name user = UserFactory(username=self.MOCK_USER_DATA["username"]) self.client.login(username=user.username, password=USER_PASSWORD)
def test_create(self, user_kwargs, expected_status): """ The creation (POST) method requires the 'add' permission. """ list_path = reverse('api:v1:usercredential-list') program_certificate = factories.ProgramCertificateFactory() post_data = { 'username': '******', 'credential': { 'program_id': program_certificate.program_id }, 'attributes': [], } self.client.force_authenticate(self.make_user(**user_kwargs)) response = self.client.post(list_path, data=json.dumps(post_data), content_type=JSON_CONTENT_TYPE) self.assertEqual(response.status_code, expected_status)
def test_list_with_program_id_filter(self): """ Verify the list endpoint supports filter data by program_id.""" program_cert = factories.ProgramCertificateFactory(program_id=001) factories.UserCredentialFactory.create(credential=program_cert) self.assert_list_with_id_filter(data={'program_id': self.program_id})