class TestRemoveContributor(AdminTestCase): def setUp(self): super(TestRemoveContributor, self).setUp() self.user = AuthUserFactory() self.preprint = PreprintFactory(creator=self.user) self.user_2 = AuthUserFactory() self.preprint.add_contributor(self.user_2) self.preprint.save() self.view = views.PreprintRemoveContributorView self.request = RequestFactory().post('/fake_path') self.url = reverse('preprints:remove-user', kwargs={ 'guid': self.preprint._id, 'user_id': self.user._id }) def test_remove_contributor(self): user_id = self.user_2.id preprint_id = self.preprint._id view = setup_log_view(self.view(), self.request, guid=preprint_id, user_id=user_id) view.post(self.request) assert not self.preprint.contributors.filter(id=user_id) def test_integration_remove_contributor(self): assert self.user_2 in self.preprint.contributors view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user_2.id) count = AdminLogEntry.objects.count() view.post(self.request) assert self.user_2 not in self.preprint.contributors assert AdminLogEntry.objects.count() == count + 1 def test_do_not_remove_last_admin(self): assert len( list( self.preprint.get_admin_contributors( self.preprint.contributors))) == 1 view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user.id) count = AdminLogEntry.objects.count() patch_messages(self.request) view.post(self.request) self.preprint.reload( ) # Reloads instance to show that nothing was removed assert len(list(self.preprint.contributors)) == 2 assert len( list( self.preprint.get_admin_contributors( self.preprint.contributors))) == 1 assert AdminLogEntry.objects.count() == count def test_no_log(self): view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user_2.id) view.post(self.request) assert self.preprint.logs.latest( ).action != PreprintLog.CONTRIB_REMOVED
class TestRemoveContributor(AdminTestCase): def setUp(self): super(TestRemoveContributor, self).setUp() self.user = AuthUserFactory() self.preprint = PreprintFactory(creator=self.user) self.user_2 = AuthUserFactory() self.preprint.add_contributor(self.user_2) self.preprint.save() self.view = views.PreprintRemoveContributorView self.request = RequestFactory().post('/fake_path') self.url = reverse('preprints:remove_user', kwargs={'guid': self.preprint._id, 'user_id': self.user._id}) def test_get_object(self): view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user._id) preprint, user = view.get_object() assert isinstance(preprint, Preprint) assert isinstance(user, OSFUser) @mock.patch('admin.preprints.views.Preprint.remove_contributor') def test_remove_contributor(self, mock_remove_contributor): user_id = self.user_2._id preprint_id = self.preprint._id view = setup_log_view(self.view(), self.request, guid=preprint_id, user_id=user_id) view.delete(self.request) mock_remove_contributor.assert_called_with(self.user_2, None, log=False) def test_integration_remove_contributor(self): assert self.user_2 in self.preprint.contributors view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user_2._id) count = AdminLogEntry.objects.count() view.delete(self.request) assert self.user_2 not in self.preprint.contributors assert AdminLogEntry.objects.count() == count + 1 def test_do_not_remove_last_admin(self): assert len(list(self.preprint.get_admin_contributors(self.preprint.contributors))) == 1 view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user._id) count = AdminLogEntry.objects.count() view.delete(self.request) self.preprint.reload() # Reloads instance to show that nothing was removed assert len(list(self.preprint.contributors)) == 2 assert len(list(self.preprint.get_admin_contributors(self.preprint.contributors))) == 1 assert AdminLogEntry.objects.count() == count def test_no_log(self): view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user_2._id) view.delete(self.request) assert self.preprint.logs.latest().action != PreprintLog.CONTRIB_REMOVED def test_no_user_permissions_raises_error(self): request = RequestFactory().get(self.url) request.user = self.user with pytest.raises(PermissionDenied): self.view.as_view()(request, guid=self.preprint._id, user_id=self.user) def test_correct_view_permissions(self): change_permission = Permission.objects.get(codename='change_preprint') view_permission = Permission.objects.get(codename='view_preprint') self.user.user_permissions.add(change_permission) self.user.user_permissions.add(view_permission) self.user.save() request = RequestFactory().get(self.url) request.user = self.user response = self.view.as_view()(request, guid=self.preprint._id, user_id=self.user._id) assert response.status_code == 200
class TestRemoveContributor(AdminTestCase): def setUp(self): super(TestRemoveContributor, self).setUp() self.user = AuthUserFactory() self.preprint = PreprintFactory(creator=self.user) self.user_2 = AuthUserFactory() self.preprint.add_contributor(self.user_2) self.preprint.save() self.view = views.PreprintRemoveContributorView self.request = RequestFactory().post('/fake_path') self.url = reverse('preprints:remove_user', kwargs={'guid': self.preprint._id, 'user_id': self.user._id}) def test_get_object(self): view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user._id) preprint, user = view.get_object() assert isinstance(preprint, Preprint) assert isinstance(user, OSFUser) @mock.patch('admin.preprints.views.Preprint.remove_contributor') def test_remove_contributor(self, mock_remove_contributor): user_id = self.user_2._id preprint_id = self.preprint._id view = setup_log_view(self.view(), self.request, guid=preprint_id, user_id=user_id) view.delete(self.request) mock_remove_contributor.assert_called_with(self.user_2, None, log=False) def test_integration_remove_contributor(self): assert self.user_2 in self.preprint.contributors view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user_2._id) count = AdminLogEntry.objects.count() view.delete(self.request) assert self.user_2 not in self.preprint.contributors assert AdminLogEntry.objects.count() == count + 1 def test_do_not_remove_last_admin(self): assert len(list(self.preprint.get_admin_contributors(self.preprint.contributors))) == 1 view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user._id) count = AdminLogEntry.objects.count() view.delete(self.request) self.preprint.reload() # Reloads instance to show that nothing was removed assert len(list(self.preprint.contributors)) == 2 assert len(list(self.preprint.get_admin_contributors(self.preprint.contributors))) == 1 assert AdminLogEntry.objects.count() == count def test_no_log(self): view = setup_log_view(self.view(), self.request, guid=self.preprint._id, user_id=self.user_2._id) view.delete(self.request) assert self.preprint.logs.latest().action != PreprintLog.CONTRIB_REMOVED def test_no_user_permissions_raises_error(self): request = RequestFactory().get(self.url) request.user = self.user with pytest.raises(PermissionDenied): self.view.as_view()(request, guid=self.preprint._id, user_id=self.user) def test_correct_view_permissions(self): change_permission = Permission.objects.get(codename='change_preprint') view_permission = Permission.objects.get(codename='view_preprint') self.user.user_permissions.add(change_permission) self.user.user_permissions.add(view_permission) self.user.save() request = RequestFactory().get(self.url) request.user = self.user response = self.view.as_view()(request, guid=self.preprint._id, user_id=self.user._id) assert response.status_code == 200