Beispiel #1
0
    def test_form_valid(self, mock_get_auth_user, mock_auth, mock_remote_login,
                        mock_get_user_id, mock_get_and_update_user):
        # Fake user and required attributes
        user = self.user
        user.backend = 'accounts.authentication.WocatCMSAuthenticationBackend'
        mock_get_auth_user.return_value = user
        mock_auth.return_value = user

        mock_remote_login.return_value = 1
        mock_get_user_id.return_value = 1
        mock_get_and_update_user.return_value = self.user

        form = WocatAuthenticationForm
        form.get_user = lambda x: user
        # Add message store
        request = RequestFactory().post(
            reverse('login'),
            data={'form': form(initial=self.invalid_login_credentials)}
        )
        request.user = user
        request.session = MagicMock()
        request._messages = FallbackStorage

        view = self.setup_view(LoginView(), request)

        response = view.form_valid(form(initial=self.invalid_login_credentials))

        self.assertEqual(request.user, self.user)
        self.assertEqual(response.url, reverse('home'))
    def test_response_change_change_history_setting_off(self):
        """
        Test the response_change method that it works with a _change_history
        in the POST and settings.SIMPLE_HISTORY_EDIT set to False
        """
        request = RequestFactory().post('/')
        request.POST = {'_change_history': True}
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.path = '/awesome/url/'
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        response = admin.response_change(request, poll)

        with patch(
            'simple_history.admin.admin.ModelAdmin.response_change'
        ) as m_admin:
            m_admin.return_value = 'it was called'
            response = admin.response_change(request, poll)

        self.assertEqual(response, 'it was called')
Beispiel #3
0
    def test_form_valid(self, mock_get_auth_user, mock_auth, mock_remote_login,
                        mock_get_user_id, mock_get_and_update_user):
        # Fake user and required attributes
        user = self.user
        user.backend = 'accounts.authentication.WocatCMSAuthenticationBackend'
        mock_get_auth_user.return_value = user
        mock_auth.return_value = user

        mock_remote_login.return_value = 1
        mock_get_user_id.return_value = 1
        mock_get_and_update_user.return_value = self.user

        form = WocatAuthenticationForm
        form.get_user = lambda x: user
        # Add message store
        request = RequestFactory().post(
            reverse('login'),
            data={'form': form(initial=self.invalid_login_credentials)})
        request.user = user
        request.session = MagicMock()
        request._messages = FallbackStorage

        view = self.setup_view(LoginView(), request)

        response = view.form_valid(
            form(initial=self.invalid_login_credentials))

        self.assertEqual(request.user, self.user)
        self.assertEqual(response.url, reverse('home'))
Beispiel #4
0
    def test_response_change_change_history_setting_off(self):
        """
        Test the response_change method that it works with a _change_history
        in the POST and settings.SIMPLE_HISTORY_EDIT set to False
        """
        request = RequestFactory().post("/")
        request.POST = {"_change_history": True}
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.path = "/awesome/url/"
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        response = admin.response_change(request, poll)

        with patch("simple_history.admin.admin.ModelAdmin.response_change"
                   ) as m_admin:
            m_admin.return_value = "it was called"
            response = admin.response_change(request, poll)

        self.assertEqual(response, "it was called")
Beispiel #5
0
    def test_history_form_view_accepts_additional_context(self):
        request = RequestFactory().post("/")
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()
        history = poll.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch("simple_history.admin.render") as mock_render:
            admin.history_form_view(
                request,
                poll.id,
                history.pk,
                extra_context={"anything_else": "will be merged into context"},
            )

        context = {
            # Verify this is set for original object
            "anything_else": "will be merged into context",
            "original": poll,
            "change_history": False,
            "title": "Revert %s" % force_str(poll),
            "adminform": ANY,
            "object_id": poll.id,
            "is_popup": False,
            "media": ANY,
            "errors": ANY,
            "app_label": "tests",
            "original_opts": ANY,
            "changelist_url": "/admin/tests/poll/",
            "change_url": ANY,
            "history_url": "/admin/tests/poll/1/history/",
            "add": False,
            "change": True,
            "has_add_permission": admin.has_add_permission(request),
            "has_change_permission":
            admin.has_change_permission(request, poll),
            "has_delete_permission":
            admin.has_delete_permission(request, poll),
            "revert_disabled": admin.revert_disabled,
            "has_file_field": True,
            "has_absolute_url": False,
            "form_url": "",
            "opts": ANY,
            "content_type_id": ANY,
            "save_as": admin.save_as,
            "save_on_top": admin.save_on_top,
            "root_path": getattr(admin_site, "root_path", None),
        }
        context.update(admin_site.each_context(request))
        mock_render.assert_called_once_with(request,
                                            admin.object_history_form_template,
                                            context)
    def test_history_form_view_getting_history(self):
        request = RequestFactory().post('/')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.user = self.user
        request.POST = {'_change_history': True}

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()
        history = poll.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch('simple_history.admin.render') as mock_render:
            with patch('simple_history.admin.SIMPLE_HISTORY_EDIT', True):
                admin.history_form_view(request, poll.id, history.pk)

        context = {
            # Verify this is set for history object not poll object
            'original': history.instance,
            'change_history': True,
            'title': 'Revert %s' % force_text(history.instance),
            'adminform': ANY,
            'object_id': poll.id,
            'is_popup': False,
            'media': ANY,
            'errors': ANY,
            'app_label': 'tests',
            'original_opts': ANY,
            'changelist_url': '/admin/tests/poll/',
            'change_url': ANY,
            'history_url':
            '/admin/tests/poll/{pk}/history/'.format(pk=poll.pk),
            'add': False,
            'change': True,
            'has_add_permission': admin.has_add_permission(request),
            'has_change_permission':
            admin.has_change_permission(request, poll),
            'has_delete_permission':
            admin.has_delete_permission(request, poll),
            'has_file_field': True,
            'has_absolute_url': False,
            'form_url': '',
            'opts': ANY,
            'content_type_id': ANY,
            'save_as': admin.save_as,
            'save_on_top': admin.save_on_top,
            'root_path': getattr(admin_site, 'root_path', None),
        }

        mock_render.assert_called_once_with(
            request,
            template_name=admin.object_history_form_template,
            dictionary=context,
            current_app=admin_site.name)
    def test_history_form_view_getting_history(self):
        request = RequestFactory().post('/')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.user = self.user
        request.POST = {'_change_history': True}

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()
        history = poll.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch('simple_history.admin.render') as mock_render:
            with patch('simple_history.admin.SIMPLE_HISTORY_EDIT', True):
                admin.history_form_view(request, poll.id, history.pk)

        context = {
            # Verify this is set for history object not poll object
            'original': history.instance,
            'change_history': True,

            'title': 'Revert %s' % force_text(history.instance),
            'adminform': ANY,
            'object_id': poll.id,
            'is_popup': False,
            'media': ANY,
            'errors': ANY,
            'app_label': 'tests',
            'original_opts': ANY,
            'changelist_url': '/admin/tests/poll/',
            'change_url': ANY,
            'history_url': '/admin/tests/poll/{pk}/history/'.format(
                pk=poll.pk),
            'add': False,
            'change': True,
            'has_add_permission': admin.has_add_permission(request),
            'has_change_permission': admin.has_change_permission(
                request, poll),
            'has_delete_permission': admin.has_delete_permission(
                request, poll),
            'has_file_field': True,
            'has_absolute_url': False,
            'form_url': '',
            'opts': ANY,
            'content_type_id': ANY,
            'save_as': admin.save_as,
            'save_on_top': admin.save_on_top,
            'root_path': getattr(admin_site, 'root_path', None),
        }

        mock_render.assert_called_once_with(
            request, template_name=admin.object_history_form_template,
            dictionary=context, current_app=admin_site.name)
    def test_history_form_view_accepts_additional_context(self):
        request = RequestFactory().post("/")
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()
        history = poll.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch("simple_history.admin.render") as mock_render:
            admin.history_form_view(
                request,
                poll.id,
                history.pk,
                extra_context={"anything_else": "will be merged into context"},
            )

        context = {
            # Verify this is set for original object
            "anything_else": "will be merged into context",
            "original": poll,
            "change_history": False,
            "title": "Revert %s" % force_text(poll),
            "adminform": ANY,
            "object_id": poll.id,
            "is_popup": False,
            "media": ANY,
            "errors": ANY,
            "app_label": "tests",
            "original_opts": ANY,
            "changelist_url": "/admin/tests/poll/",
            "change_url": ANY,
            "history_url": "/admin/tests/poll/1/history/",
            "add": False,
            "change": True,
            "has_add_permission": admin.has_add_permission(request),
            "has_change_permission": admin.has_change_permission(request, poll),
            "has_delete_permission": admin.has_delete_permission(request, poll),
            "has_file_field": True,
            "has_absolute_url": False,
            "form_url": "",
            "opts": ANY,
            "content_type_id": ANY,
            "save_as": admin.save_as,
            "save_on_top": admin.save_on_top,
            "root_path": getattr(admin_site, "root_path", None),
        }
        context.update(admin_site.each_context(request))
        mock_render.assert_called_once_with(
            request, admin.object_history_form_template, context
        )
    def test_history_form_view_getting_history_abstract_external(self):
        request = RequestFactory().post("/")
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.user = self.user
        request.POST = {"_change_history": True}

        obj = ConcreteExternal.objects.create(name="test")
        obj.name = "new_test"
        obj.save()
        history = obj.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(ConcreteExternal, admin_site)

        with patch("simple_history.admin.render") as mock_render:
            with patch("simple_history.admin.SIMPLE_HISTORY_EDIT", True):
                admin.history_form_view(request, obj.id, history.pk)

        context = {
            # Verify this is set for history object
            "original": history.instance,
            "change_history": True,
            "title": "Revert %s" % force_str(history.instance),
            "adminform": ANY,
            "object_id": obj.id,
            "is_popup": False,
            "media": ANY,
            "errors": ANY,
            "app_label": "tests",
            "original_opts": ANY,
            "changelist_url": "/admin/tests/concreteexternal/",
            "change_url": ANY,
            "history_url": "/admin/tests/concreteexternal/{pk}/history/".format(
                pk=obj.pk
            ),
            "add": False,
            "change": True,
            "has_add_permission": admin.has_add_permission(request),
            "has_change_permission": admin.has_change_permission(request, obj),
            "has_delete_permission": admin.has_delete_permission(request, obj),
            "revert_disabled": admin.revert_disabled,
            "has_file_field": True,
            "has_absolute_url": False,
            "form_url": "",
            "opts": ANY,
            "content_type_id": ANY,
            "save_as": admin.save_as,
            "save_on_top": admin.save_on_top,
            "root_path": getattr(admin_site, "root_path", None),
        }
        context.update(admin_site.each_context(request))
        mock_render.assert_called_once_with(
            request, admin.object_history_form_template, context
        )
Beispiel #10
0
    def test_history_form_view_getting_history_abstract_external(self):
        request = RequestFactory().post('/')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.user = self.user
        request.POST = {'_change_history': True}

        obj = ConcreteExternal.objects.create(name='test')
        obj.name = "new_test"
        obj.save()
        history = obj.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(ConcreteExternal, admin_site)

        with patch('simple_history.admin.render') as mock_render:
            with patch('simple_history.admin.SIMPLE_HISTORY_EDIT', True):
                admin.history_form_view(request, obj.id, history.pk)

        context = {
            # Verify this is set for history object
            'original': history.instance,
            'change_history': True,

            'title': 'Revert %s' % force_text(history.instance),
            'adminform': ANY,
            'object_id': obj.id,
            'is_popup': False,
            'media': ANY,
            'errors': ANY,
            'app_label': 'tests',
            'original_opts': ANY,
            'changelist_url': '/admin/tests/concreteexternal/',
            'change_url': ANY,
            'history_url':
                '/admin/tests/concreteexternal/{pk}/history/'
                .format(pk=obj.pk),
            'add': False,
            'change': True,
            'has_add_permission': admin.has_add_permission(request),
            'has_change_permission': admin.has_change_permission(
                request, obj),
            'has_delete_permission': admin.has_delete_permission(
                request, obj),
            'has_file_field': True,
            'has_absolute_url': False,
            'form_url': '',
            'opts': ANY,
            'content_type_id': ANY,
            'save_as': admin.save_as,
            'save_on_top': admin.save_on_top,
            'root_path': getattr(admin_site, 'root_path', None),
        }
        mock_render.assert_called_once_with(
            request, admin.object_history_form_template, context)
    def test_history_does_not_exist(self):
        request = RequestFactory().post('/')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.user = self.user

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)
        admin.show_all_history = True
        with self.assertRaises(http.Http404) as cm:
            admin.history_view(request, '9')
    def test_history_form_view_getting_history_abstract_external(self):
        request = RequestFactory().post("/")
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.user = self.user
        request.POST = {"_change_history": True}

        obj = ConcreteExternal.objects.create(name="test")
        obj.name = "new_test"
        obj.save()
        history = obj.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(ConcreteExternal, admin_site)

        with patch("simple_history.admin.render") as mock_render:
            with patch("simple_history.admin.SIMPLE_HISTORY_EDIT", True):
                admin.history_form_view(request, obj.id, history.pk)

        context = {
            # Verify this is set for history object
            "original": history.instance,
            "change_history": True,
            "title": "Revert %s" % force_text(history.instance),
            "adminform": ANY,
            "object_id": obj.id,
            "is_popup": False,
            "media": ANY,
            "errors": ANY,
            "app_label": "tests",
            "original_opts": ANY,
            "changelist_url": "/admin/tests/concreteexternal/",
            "change_url": ANY,
            "history_url": "/admin/tests/concreteexternal/{pk}/history/".format(
                pk=obj.pk
            ),
            "add": False,
            "change": True,
            "has_add_permission": admin.has_add_permission(request),
            "has_change_permission": admin.has_change_permission(request, obj),
            "has_delete_permission": admin.has_delete_permission(request, obj),
            "has_file_field": True,
            "has_absolute_url": False,
            "form_url": "",
            "opts": ANY,
            "content_type_id": ANY,
            "save_as": admin.save_as,
            "save_on_top": admin.save_on_top,
            "root_path": getattr(admin_site, "root_path", None),
        }
        context.update(admin_site.each_context(request))
        mock_render.assert_called_once_with(
            request, admin.object_history_form_template, context
        )
Beispiel #13
0
    def test_history_form_view_without_getting_history(self):
        request = RequestFactory().post('/')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()
        history = poll.history.all()[0]

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch('simple_history.admin.render') as mock_render:
            admin.history_form_view(request, poll.id, history.pk)

        context = {
            # Verify this is set for original object
            'original': poll,
            'change_history': False,
            'title': 'Revert %s' % force_text(poll),
            'adminform': ANY,
            'object_id': poll.id,
            'is_popup': False,
            'media': ANY,
            'errors': ANY,
            'app_label': 'tests',
            'original_opts': ANY,
            'changelist_url': '/admin/tests/poll/',
            'change_url': ANY,
            'history_url': '/admin/tests/poll/1/history/',
            'add': False,
            'change': True,
            'has_add_permission': admin.has_add_permission(request),
            'has_change_permission':
            admin.has_change_permission(request, poll),
            'has_delete_permission':
            admin.has_delete_permission(request, poll),
            'has_file_field': True,
            'has_absolute_url': False,
            'form_url': '',
            'opts': ANY,
            'content_type_id': ANY,
            'save_as': admin.save_as,
            'save_on_top': admin.save_on_top,
            'root_path': getattr(admin_site, 'root_path', None),
        }
        context.update(admin_site.each_context(request))
        mock_render.assert_called_once_with(request,
                                            admin.object_history_form_template,
                                            context)
Beispiel #14
0
    def test_git_extract_action(self):
        addon1 = addon_factory()
        addon2 = addon_factory()

        addons = Addon.objects.filter(pk__in=(addon1.pk, addon2.pk))
        addon_admin = AddonAdmin(Addon, admin.site)
        request = RequestFactory().get('/')
        request.user = user_factory()
        core.set_user(request.user)
        request._messages = default_messages_storage(request)
        addon_admin.git_extract_action(request, addons)

        assert len(GitExtractionEntry.objects.all()) == 2
        assert GitExtractionEntry.objects.filter(addon=addon1).exists()
        assert GitExtractionEntry.objects.filter(addon=addon2).exists()
    def test_response_change_no_change_history(self):
        request = RequestFactory().post("/")
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch("simple_history.admin.admin.ModelAdmin.response_change") as m_admin:
            m_admin.return_value = "it was called"
            response = admin.response_change(request, poll)

        self.assertEqual(response, "it was called")
    def test_response_change_no_change_history(self):
        request = RequestFactory().post("/")
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch("simple_history.admin.admin.ModelAdmin.response_change") as m_admin:
            m_admin.return_value = "it was called"
            response = admin.response_change(request, poll)

        self.assertEqual(response, "it was called")
Beispiel #17
0
def create_request(method, *a, **b):
    """ setup a request with an anonymous user """
    from django.contrib.auth.models import AnonymousUser
    from django.test.client import RequestFactory

    if method == "GET":
        request = RequestFactory().get(*a, **b)
    elif method == "POST":
        request = RequestFactory().post(*a, **b)
    elif method == "PUT":
        request = RequestFactory().put(*a, **b)
    elif method == "DELETE":
        request = RequestFactory().delete(*a, **b)
    request.user = AnonymousUser()
    request.session = TestSessionStore()
    request._messages = mock.Mock()
    request._messages.__iter__ = mock.Mock(return_value=iter([]))
    return request
Beispiel #18
0
    def test_loading(self):
        """Test different types of supported XLS/CSV taxonomy upload"""
        request = RequestFactory().get('/', SERVER_NAME='testserver')
        request.user = User.objects.create_user(username='******',
                                                email='*****@*****.**',
                                                password='******')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        test_files = [(5427, 'taxonomy-with-ids.en-GB.xls'),
                      (28, 'world-with-ids.UN-001.csv'),
                      (28, 'world-no-ids1.xls'), (28, 'world-no-ids.csv'),
                      (28, 'world-with-ids-parents.csv')]

        for no, fn in test_files:
            with open('vocabulary/test_data/' + fn, 'rb') as f:
                slug = fn.split('.')[0]
                url = load_xls(request, f.read(), slug)
                self.assertEqual(url, '/vocabularies/' + slug + '/')
                v = Vocabulary.objects.all().last()
                self.assertEqual(no, v.concept_set.all().count())
    def test_all_history_view(self):
        request = RequestFactory().post('/')
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.user = self.user

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()
        history = poll.history.all()[0]

        admin_site = AdminSite()
        admin = AllHistoryAdmin(Poll, admin_site)
        admin.show_all_history = True

        with patch('simple_history.admin.render') as mock_render:
            with patch('simple_history.admin.SIMPLE_HISTORY_EDIT', True):
                admin.all_history_view(request, )

        context = {
            # Verify this is set for history object not poll object
            'title':
            'All History: %s' % force_text(Poll._meta.verbose_name.title()),
            'action_list':
            ANY,
            'module_name':
            "Polls",
            'root_path':
            getattr(admin_site, 'root_path', None),
            'app_label':
            'tests',
            'opts':
            ANY,
            'admin_user_view':
            ANY
        }

        mock_render.assert_called_once_with(request,
                                            admin.objects_history_template,
                                            context, **extra_kwargs)
    def test_response_change(self):
        """
        Test the response_change method that it works with a _change_history
        in the POST and settings.SIMPLE_HISTORY_EDIT set to True
        """
        request = RequestFactory().post('/')
        request.POST = {'_change_history': True}
        request.session = 'session'
        request._messages = FallbackStorage(request)
        request.path = '/awesome/url/'

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch('simple_history.admin.SIMPLE_HISTORY_EDIT', True):
            response = admin.response_change(request, poll)

        self.assertEqual(response['Location'], '/awesome/url/')
Beispiel #21
0
    def test_response_change(self):
        """
        Test the response_change method that it works with a _change_history
        in the POST and settings.SIMPLE_HISTORY_EDIT set to True
        """
        request = RequestFactory().post("/")
        request.POST = {"_change_history": True}
        request.session = "session"
        request._messages = FallbackStorage(request)
        request.path = "/awesome/url/"

        poll = Poll.objects.create(question="why?", pub_date=today)
        poll.question = "how?"
        poll.save()

        admin_site = AdminSite()
        admin = SimpleHistoryAdmin(Poll, admin_site)

        with patch("simple_history.admin.SIMPLE_HISTORY_EDIT", True):
            response = admin.response_change(request, poll)

        self.assertEqual(response["Location"], "/awesome/url/")