class UserExtrasViewTest(OCLAPITestCase): def setUp(self): self.user = UserProfileFactory(extras=dict()) self.token = self.user.get_token() def test_get(self): response = self.client.get('/users/{}/extras/'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, {}) extras = dict(foo='bar') self.user.extras = extras self.user.save() response = self.client.get('/users/{}/extras/'.format( self.user.username), HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, extras) response = self.client.get('/user/extras/', HTTP_AUTHORIZATION='Token ' + self.token, format='json') self.assertEqual(response.status_code, 200) self.assertEqual(response.data, extras)
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_update_password(self): user = UserProfileFactory() user.set_password('Password123!') user.save() user.update_password() self.assertTrue(user.check_password('Password123!')) self.assertEqual( user.update_password(password='******'), dict(errors=[ 'This password is too common.', 'This password is not alphanumeric.' ])) self.assertEqual( user.update_password(password='******'), dict(errors=[ 'This password is too short. It must contain at least 8 characters.', 'This password is not alphanumeric.' ])) user.verification_token = 'some-token' user.save() user.update_password(password='******') self.assertIsNone(user.verification_token) self.assertFalse(user.check_password('Password123!')) self.assertTrue(user.check_password('Newpassw0rd')) user.update_password(hashed_password='******') self.assertFalse(user.check_password('password')) self.assertEqual(user.password, 'hashedpassword')
def test_update_password(self): user = UserProfileFactory() user.set_password('password') user.save() user.update_password() self.assertTrue(user.check_password('password')) user.update_password(password='******') self.assertFalse(user.check_password('password')) self.assertTrue(user.check_password('newpassword')) user.update_password(hashed_password='******') self.assertFalse(user.check_password('password')) self.assertEqual(user.password, 'hashedpassword')
def test_user_active_inactive_should_affect_children(self): user = UserProfileFactory(is_active=True) source = SourceFactory(user=user, is_active=True) collection = CollectionFactory(user=user, is_active=True) user.is_active = False user.save() source.refresh_from_db() collection.refresh_from_db() self.assertFalse(user.is_active) self.assertFalse(source.is_active) self.assertFalse(collection.is_active) user.is_active = True user.save() source.refresh_from_db() collection.refresh_from_db() self.assertTrue(user.is_active) self.assertTrue(source.is_active) self.assertTrue(collection.is_active)
def test_login(self): user = UserProfileFactory(username='******') user.set_password('boogeyman') user.save() 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())) response = self.client.post('/users/login/', dict(username='******', password='******'), format='json') self.assertEqual(response.status_code, 400) self.assertEqual( response.data, dict(non_field_errors=[ "Unable to log in with provided credentials." ]))
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'))