def test_change_preprint_provider_subjects_change_permissions(self, plain_view, preprint_user, provider_one, provider_osf, subject_osf): """ Testing that subjects are changed when providers are changed and theres no related mapping between subjects, the old subject stays in place. """ auth_user = AuthUserFactory() change_permission = Permission.objects.get(codename='change_preprint') view_permission = Permission.objects.get(codename='view_preprint') auth_user.user_permissions.add(change_permission) auth_user.user_permissions.add(view_permission) preprint = PreprintFactory(subjects=[[subject_osf._id]], provider=provider_osf, creator=preprint_user) request = RequestFactory().post(reverse('preprints:preprint', kwargs={'guid': preprint._id}), data={'provider': provider_one.id}) request.user = auth_user # django.contrib.messages has a bug which effects unittests # more info here -> https://code.djangoproject.com/ticket/17971 setattr(request, 'session', 'session') messages = FallbackStorage(request) setattr(request, '_messages', messages) response = plain_view.as_view()(request, guid=preprint._id) assert response.status_code == 302 preprint.refresh_from_db() assert preprint.provider == provider_one assert subject_osf in preprint.subjects.all()
class TestPreprintDeleteView(AdminTestCase): def setUp(self): super(TestPreprintDeleteView, self).setUp() self.user = AuthUserFactory() self.preprint = PreprintFactory(creator=self.user) self.request = RequestFactory().post('/fake_path') self.plain_view = views.PreprintDeleteView self.view = setup_log_view(self.plain_view(), self.request, guid=self.preprint._id) self.url = reverse('preprints:remove', kwargs={'guid': self.preprint._id}) def test_get_object(self): obj = self.view.get_object() assert isinstance(obj, Preprint) def test_get_context(self): res = self.view.get_context_data(object=self.preprint) assert 'guid' in res assert res.get('guid') == self.preprint._id def test_remove_preprint(self): count = AdminLogEntry.objects.count() self.view.delete(self.request) self.preprint.refresh_from_db() assert self.preprint.deleted is not None assert AdminLogEntry.objects.count() == count + 1 def test_restore_preprint(self): self.view.delete(self.request) self.preprint.refresh_from_db() assert self.preprint.deleted is not None count = AdminLogEntry.objects.count() self.view.delete(self.request) self.preprint.reload() assert self.preprint.deleted is None assert AdminLogEntry.objects.count() == count + 1 def test_no_user_permissions_raises_error(self): guid = self.preprint._id request = RequestFactory().get(self.url) request.user = self.user with pytest.raises(PermissionDenied): self.plain_view.as_view()(request, guid=guid, user_id=self.user) def test_correct_view_permissions(self): user = AuthUserFactory() guid = self.preprint._id change_permission = Permission.objects.get(codename='delete_preprint') view_permission = Permission.objects.get(codename='view_preprint') user.user_permissions.add(change_permission) user.user_permissions.add(view_permission) user.save() request = RequestFactory().get(self.url) request.user = user response = self.plain_view.as_view()(request, guid=guid) assert response.status_code == 200
class TestPreprintDeleteView(AdminTestCase): def setUp(self): super(TestPreprintDeleteView, self).setUp() self.user = AuthUserFactory() self.preprint = PreprintFactory(creator=self.user) self.request = RequestFactory().post('/fake_path') self.plain_view = views.PreprintDeleteView self.view = setup_log_view(self.plain_view(), self.request, guid=self.preprint._id) self.url = reverse('preprints:remove', kwargs={'guid': self.preprint._id}) def test_remove_preprint(self): count = AdminLogEntry.objects.count() self.view.post(self.request) self.preprint.refresh_from_db() assert self.preprint.deleted is not None assert AdminLogEntry.objects.count() == count + 1 def test_restore_preprint(self): self.view.post(self.request) self.preprint.refresh_from_db() assert self.preprint.deleted is not None count = AdminLogEntry.objects.count() self.view.post(self.request) self.preprint.reload() assert self.preprint.deleted is None assert AdminLogEntry.objects.count() == count + 1
def test_change_preprint_provider_subjects_change_permissions( self, plain_view, preprint_user, provider_one, provider_osf, subject_osf): """ Testing that subjects are changed when providers are changed and theres no related mapping between subjects, the old subject stays in place. """ auth_user = AuthUserFactory() change_permission = Permission.objects.get(codename='change_preprint') view_permission = Permission.objects.get(codename='view_preprint') auth_user.user_permissions.add(change_permission) auth_user.user_permissions.add(view_permission) preprint = PreprintFactory(subjects=[[subject_osf._id]], provider=provider_osf, creator=preprint_user) request = RequestFactory().post(reverse('preprints:preprint', kwargs={'guid': preprint._id}), data={'provider': provider_one.id}) request.user = auth_user patch_messages(request) response = plain_view.as_view()(request, guid=preprint._id) assert response.status_code == 302 preprint.refresh_from_db() assert preprint.provider == provider_one assert subject_osf in preprint.subjects.all()
def test_change_preprint_provider_subjects_to_osf(self, plain_view, preprint_user, provider_one, provider_osf, subject_osf): """ Testing that subjects are changed when providers are changed to osf using the bepress subject id of the old subject """ subject_one = SubjectFactory(provider=provider_one, bepress_subject=subject_osf) preprint = PreprintFactory(subjects=[[subject_one._id]], provider=provider_one, creator=preprint_user) request = RequestFactory().post(reverse('preprints:preprint', kwargs={'guid': preprint._id}), data={'provider': provider_osf.id}) request.user = preprint_user response = plain_view.as_view()(request, guid=preprint._id) assert response.status_code == 302 preprint.refresh_from_db() assert preprint.provider == provider_osf assert subject_osf in preprint.subjects.all()
def test_confirm_preprint_as_ham(self, mock_akismet): request = RequestFactory().post('/fake_path') user = AuthUserFactory() preprint = PreprintFactory(creator=user) view = views.PreprintConfirmHamView() view = setup_log_view(view, request, guid=preprint._id) view.post(request) preprint.refresh_from_db() assert preprint.spam_status == 4
def test_change_preprint_provider_subjects_custom_taxonomies(self, plain_view, preprint_user, provider_one, provider_two, subject_one): """ Testing that subjects are changed when providers are changed between two custom taxonomies. """ subject_two = SubjectFactory(provider=provider_two, bepress_subject=subject_one.bepress_subject) preprint = PreprintFactory(subjects=[[subject_one._id]], provider=provider_one, creator=preprint_user) request = RequestFactory().post(reverse('preprints:preprint', kwargs={'guid': preprint._id}), data={'provider': provider_two.id}) request.user = preprint_user response = plain_view.as_view()(request, guid=preprint._id) assert response.status_code == 302 preprint.refresh_from_db() assert preprint.provider == provider_two assert subject_two in preprint.subjects.all()
class TestPreprintConfirmHamSpamViews(AdminTestCase): def setUp(self): super(TestPreprintConfirmHamSpamViews, self).setUp() self.request = RequestFactory().post('/fake_path') self.user = AuthUserFactory() self.preprint = PreprintFactory(creator=self.user) def test_confirm_preprint_as_ham(self): view = views.PreprintConfirmHamView() view = setup_log_view(view, self.request, guid=self.preprint._id) view.delete(self.request) self.preprint.refresh_from_db() assert self.preprint.spam_status == 4 def test_confirm_preprint_as_spam(self): assert self.preprint.is_public view = views.PreprintConfirmSpamView() view = setup_log_view(view, self.request, guid=self.preprint._id) view.delete(self.request) self.preprint.refresh_from_db() assert self.preprint.spam_status == 2 assert not self.preprint.is_public