Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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()
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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