def test_delete_user(self): user = AdminFactory() self.login(user) other_user = UserFactory() response = self.delete(url_for('api.user', user=other_user)) self.assert204(response) other_user.reload() response = self.delete(url_for('api.user', user=other_user)) self.assert410(response) response = self.delete(url_for('api.user', user=user)) self.assert403(response)
def test_delete_user(self): user = AdminFactory() self.login(user) other_user = UserFactory() response = self.delete(url_for('api.user', user=other_user)) self.assert204(response) other_user.reload() response = self.delete(url_for('api.user', user=other_user)) self.assert410(response) response = self.delete(url_for('api.user', user=user)) self.assert403(response)
def test_org_admin_can_accept_transfer(self): owner = UserFactory() admin = UserFactory() org = OrganizationFactory(members=[Member(user=admin, role='admin')]) subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=org, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 org.reload() # Needs updated metrics assert org.metrics['datasets'] == 0 admin.reload() # Needs updated metrics assert admin.metrics['datasets'] == 0 login_user(admin) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.organization == org assert subject.owner is None org.reload() assert org.metrics['datasets'] == 1 admin.reload() assert admin.metrics['datasets'] == 0 owner.reload() assert owner.metrics['datasets'] == 0
def test_recipient_user_can_accept_transfer(self): owner = UserFactory() recipient = UserFactory() subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=recipient, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 recipient.reload() # Needs updated metrics assert recipient.metrics['datasets'] == 0 login_user(recipient) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.owner == recipient recipient.reload() assert recipient.metrics['datasets'] == 1 owner.reload() assert owner.metrics['datasets'] == 0
def test_org_admin_can_accept_transfer(self): owner = UserFactory() admin = UserFactory() org = OrganizationFactory(members=[Member(user=admin, role='admin')]) subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=org, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 org.reload() # Needs updated metrics assert org.metrics['datasets'] == 0 admin.reload() # Needs updated metrics assert admin.metrics['datasets'] == 0 login_user(admin) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.organization == org assert subject.owner is None org.reload() assert org.metrics['datasets'] == 1 admin.reload() assert admin.metrics['datasets'] == 0 owner.reload() assert owner.metrics['datasets'] == 0
def test_recipient_user_can_accept_transfer(self): owner = UserFactory() recipient = UserFactory() subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=recipient, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 recipient.reload() # Needs updated metrics assert recipient.metrics['datasets'] == 0 login_user(recipient) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.owner == recipient recipient.reload() assert recipient.metrics['datasets'] == 1 owner.reload() assert owner.metrics['datasets'] == 0
def test_org_admin_can_accept_transfer(self): owner = UserFactory() admin = UserFactory() org = OrganizationFactory(members=[Member(user=admin, role='admin')]) subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=org, subject=subject) owner.reload() # Needs updated metrics self.assertEqual(owner.metrics['datasets'], 1) org.reload() # Needs updated metrics self.assertEqual(org.metrics['datasets'], 0) admin.reload() # Needs updated metrics self.assertEqual(admin.metrics['datasets'], 0) login_user(admin) transfer = accept_transfer(transfer) self.assertEqual(transfer.status, 'accepted') subject.reload() self.assertEqual(subject.organization, org) self.assertIsNone(subject.owner) org.reload() self.assertEqual(org.metrics['datasets'], 1) admin.reload() self.assertEqual(admin.metrics['datasets'], 0) owner.reload() self.assertEqual(owner.metrics['datasets'], 0)
def test_recipient_user_can_accept_transfer(self): owner = UserFactory() recipient = UserFactory() subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=recipient, subject=subject) owner.reload() # Needs updated metrics self.assertEqual(owner.metrics['datasets'], 1) recipient.reload() # Needs updated metrics self.assertEqual(recipient.metrics['datasets'], 0) login_user(recipient) transfer = accept_transfer(transfer) self.assertEqual(transfer.status, 'accepted') subject.reload() self.assertEqual(subject.owner, recipient) recipient.reload() self.assertEqual(recipient.metrics['datasets'], 1) owner.reload() self.assertEqual(owner.metrics['datasets'], 0)
def test_delete_user(self): user = AdminFactory() self.login(user) other_user = UserFactory() file = create_test_image() response = self.post(url_for('api.user_avatar', user=other_user), {'file': (file, 'test.png')}, json=False) response = self.delete(url_for('api.user', user=other_user)) self.assertEqual(list(storages.avatars.list_files()), []) self.assert204(response) other_user.reload() response = self.delete(url_for('api.user', user=other_user)) self.assert410(response) response = self.delete(url_for('api.user', user=user)) self.assert403(response)
def test_update_user_on_authorize_callback(self): '''Should only update specific field on authorize callback''' user = UserFactory() old_slug = user.slug with self.mock_authorize(email=user.email, is_superuser=True) as (profile, client): response = self.get(url_for('youckan.authorized', code='code'), client=client) self.assertRedirects(response, url_for('site.home')) self.assertIn('youckan.token', session) self.assertTrue(current_user.is_authenticated) user.reload() self.assertEqual(user.slug, old_slug) self.assertEqual(user.first_name, profile['first_name']) self.assertEqual(user.last_name, profile['last_name']) self.assertEqual(user.email, profile['email']) self.assertEqual(user.avatar_url, profile['profile']['avatar']) self.assertEqual(len(User.objects), 1)