class UserLogoViewTest(OCLAPITestCase): def setUp(self): super().setUp() self.user = UserProfileFactory(username='******') self.token = self.user.get_token() @patch('core.common.services.S3.upload_base64') def test_post_200(self, upload_base64_mock): upload_base64_mock.return_value = 'users/username1/logo.png' self.assertIsNone(self.user.logo_url) self.assertIsNone(self.user.logo_path) response = self.client.post(self.user.uri + 'logo/', dict(base64='base64-data'), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) expected_logo_url = 'http://oclapi2-dev.s3.amazonaws.com/users/username1/logo.png' self.assertEqual( response.data['logo_url'].replace('https://', 'http://'), expected_logo_url) self.user.refresh_from_db() self.assertEqual(self.user.logo_url.replace('https://', 'http://'), expected_logo_url) self.assertEqual(self.user.logo_path, 'users/username1/logo.png') upload_base64_mock.assert_called_once_with('base64-data', 'users/username1/logo.png', False, True)
def test_request_and_reset(self, send_mail_mock): user = UserProfileFactory(username='******', email='*****@*****.**') self.assertIsNone(user.verification_token) response = self.client.post('/users/password/reset/', dict(), format='json') self.assertEqual(response.status_code, 400) response = self.client.post('/users/password/reset/', dict(email='*****@*****.**'), format='json') self.assertEqual(response.status_code, 404) response = self.client.post('/users/password/reset/', dict(email='*****@*****.**'), format='json') self.assertEqual(response.status_code, 200) user.refresh_from_db() self.assertIsNotNone(user.verification_token) send_mail_mock.assert_called_once() response = self.client.put('/users/password/reset/', dict(), format='json') self.assertEqual(response.status_code, 400) response = self.client.put('/users/password/reset/', dict(token='bad-token'), format='json') self.assertEqual(response.status_code, 400) response = self.client.put('/users/password/reset/', dict(new_password='******'), format='json') self.assertEqual(response.status_code, 400) response = self.client.put('/users/password/reset/', dict(token='bad-token', new_password='******'), format='json') self.assertEqual(response.status_code, 404) response = self.client.put('/users/password/reset/', dict(token=user.verification_token, new_password='******'), format='json') self.assertEqual(response.status_code, 200) user.refresh_from_db() self.assertIsNone(user.verification_token) self.assertTrue(user.check_password('new-password123')) response = self.client.post('/users/login/', dict(username='******', password='******'), format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, dict(token=user.get_token()))
def test_login(self): response = self.client.post('/users/login/', {}) self.assertEqual(response.status_code, 400) self.assertEqual( response.data, dict(username=['This field is required.'], password=['This field is required.'])) response = self.client.post('/users/login/', dict(username='******', password='******')) self.assertEqual(response.status_code, 400) self.assertEqual( response.data, dict(non_field_errors=[ "Unable to log in with provided credentials." ])) user = UserProfileFactory() user.set_password('password') user.save() self.assertIsNone(user.last_login) response = self.client.post( '/users/login/', dict(username=user.username, password='******')) self.assertEqual(response.status_code, 200) self.assertEqual(response.data, dict(token=ANY)) user.refresh_from_db() self.assertIsNotNone(user.last_login)
def test_put_204(self): inactive_user = UserProfileFactory(is_active=False) response = self.client.put( '/users/{}/reactivate/'.format(inactive_user.username), HTTP_AUTHORIZATION='Token ' + self.superuser.get_token(), format='json') self.assertEqual(response.status_code, 204) inactive_user.refresh_from_db() self.assertTrue(inactive_user.is_active)
def test_mark_verified(self): user = UserProfileFactory(verified=False, verification_token='some-token') self.assertFalse(user.verified) self.assertFalse(user.mark_verified(token='wrong-token')) user.refresh_from_db() self.assertEqual(user.verification_token, 'some-token') self.assertFalse(user.verified) self.assertTrue(user.mark_verified(token='some-token')) user.refresh_from_db() self.assertIsNone(user.verification_token) self.assertTrue(user.verified) user.save = Mock() self.assertTrue(user.mark_verified(token='some-token')) self.assertIsNone(user.verification_token) user.save.assert_not_called()
class UserDetailViewTest(OCLAPITestCase): def setUp(self): super().setUp() self.user = UserProfileFactory() self.token = self.user.get_token() self.superuser = UserProfile.objects.get(username='******') def test_get_200(self): response = self.client.get('/users/{}/'.format(self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data['username'], self.user.username) self.assertEqual(response.data['name'], self.user.name) self.assertEqual(response.data['url'], self.user.uri) def test_get_200_with_subscribed_orgs(self): response = self.client.get( '/users/{}/?includeSubscribedOrgs=false'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data['username'], self.user.username) self.assertEqual(response.data['name'], self.user.name) self.assertEqual(response.data['url'], self.user.uri) self.assertFalse('subscribed_orgs' in response.data) response = self.client.get( '/users/{}/?includeSubscribedOrgs=true'.format(self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data['username'], self.user.username) self.assertEqual(len(response.data['subscribed_orgs']), 0) org = OrganizationFactory() self.user.organizations.add(org) response = self.client.get( '/users/{}/?includeSubscribedOrgs=true'.format(self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data['username'], self.user.username) self.assertEqual(len(response.data['subscribed_orgs']), 1) def test_get_404(self): response = self.client.get('/users/foobar/', HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 404) def test_put_200(self): self.user.set_password('password') self.user.email = '*****@*****.**' self.user.save() self.assertTrue(self.user.check_password('password')) response = self.client.put('/users/{}/'.format(self.user.username), dict(password='******', email='*****@*****.**'), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data['username'], self.user.username) self.user.refresh_from_db() self.assertTrue(self.user.check_password('newpassword123')) self.assertEqual(self.user.email, '*****@*****.**') def test_delete_self_405(self): response = self.client.delete( '/users/{}/'.format(self.superuser.username), HTTP_AUTHORIZATION='Token ' + self.superuser.get_token(), format='json') self.assertEqual(response.status_code, 405) def test_delete_403(self): random_user = UserProfileFactory() response = self.client.delete('/users/{}/'.format(self.user.username), HTTP_AUTHORIZATION='Token ' + random_user.get_token(), format='json') self.assertEqual(response.status_code, 403) def test_delete_204(self): response = self.client.delete('/users/{}/'.format(self.user.username), HTTP_AUTHORIZATION='Token ' + self.superuser.get_token(), format='json') self.assertEqual(response.status_code, 204) self.user.refresh_from_db() self.assertFalse(self.user.is_active)
class UserExtraRetrieveUpdateDestroyViewTest(OCLAPITestCase): def setUp(self): self.user = UserProfileFactory(extras=dict()) self.token = self.user.get_token() def test_put(self): self.assertEqual(self.user.extras, {}) response = self.client.put('/users/{}/extras/foo/'.format( self.user.username), dict(foo='bar'), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, dict(foo='bar')) self.user.refresh_from_db() self.assertEqual(self.user.extras, dict(foo='bar')) response = self.client.put('/users/{}/extras/bar/'.format( self.user.username), dict(foo='bar'), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 400) self.assertEqual(response.data, ['Must specify bar param in body.']) self.user.refresh_from_db() self.assertEqual(self.user.extras, dict(foo='bar')) response = self.client.put('/users/random/extras/foo/', dict(foo='bar'), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 404) def test_get(self): response = self.client.get('/users/{}/extras/foo/'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 404) self.user.extras = dict(foo='bar') self.user.save() response = self.client.get('/users/{}/extras/foo/'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, dict(foo='bar')) def test_delete(self): response = self.client.delete('/users/{}/extras/foo/'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 404) self.user.extras = dict(foo='bar', tao='ching') self.user.save() response = self.client.delete('/users/{}/extras/foo/'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 204) self.user.refresh_from_db() self.assertEqual(self.user.extras, dict(tao='ching'))