def test_change_view_redirects_to_login_if_non_staff_user(self): user = factories.UserFactory(is_superuser=False, is_staff=False) self.client.force_login(user) menu_content = factories.MenuContentFactory() item = factories.ChildMenuItemFactory(parent=menu_content.root) change_url = reverse( "admin:djangocms_navigation_menuitem_change", kwargs={"menu_content_id": menu_content.pk, "object_id": item.pk}, ) content_type = ContentType.objects.get(app_label="cms", model="page") page = factories.PageContentFactory().page data = { "title": "My new Title", "content_type": content_type.pk, "object_id": page.pk, "_ref_node_id": menu_content.root.id, "numchild": 1, "link_target": "_blank", "_position": "first-child", } # For POST response = self.client.post(change_url, data) redirect_url = reverse("admin:login") + "?next=" + change_url self.assertRedirects(response, redirect_url) # For GET response = self.client.get(change_url) self.assertRedirects(response, redirect_url)
def test_navigation_menu_not_added_to_admin_menu_if_user_doesnt_have_permissions( self): user = factories.UserFactory() page_content = factories.PageContentFactory() toolbar = self._get_toolbar(page_content, preview_mode=True, user=user) toolbar.populate() toolbar.post_template_populate() cms_toolbar = toolbar.toolbar navigation_menu_item = self._find_menu_item("Navigation...", cms_toolbar) self.assertIsNone(navigation_menu_item)
def test_changelist_view_redirects_to_login_if_non_staff_user(self): user = factories.UserFactory(is_superuser=False, is_staff=False) self.client.force_login(user) menu_content = factories.MenuContentFactory() factories.ChildMenuItemFactory.create_batch(5, parent=menu_content.root) list_url = reverse( "admin:djangocms_navigation_menuitem_list", args=(menu_content.id,) ) response = self.client.get(list_url) redirect_url = reverse("admin:login") + "?next=" + list_url self.assertRedirects(response, redirect_url)
def _get_toolbar(self, content_obj, user=None, **kwargs): """Helper method to set up the toolbar """ if not user: user = factories.UserFactory(is_staff=True) request = self._get_page_request( page=content_obj.page if content_obj else None, user=user) cms_toolbar = CMSToolbar(request) toolbar = NavigationToolbar(cms_toolbar.request, toolbar=cms_toolbar, is_current_app=True, app_path="/") toolbar.toolbar.set_object(content_obj) return toolbar
def get_toolbar(content_obj, user=None, **kwargs): """ Helper method to set up the toolbar :param content_obj: A content object :param user: The user requesting the toolbar :return: A toolbar object """ if not user: user = factories.UserFactory(is_staff=True) request = get_page_request( page=content_obj.page if content_obj else None, user=user ) cms_toolbar = CMSToolbar(request) toolbar = NavigationToolbar( cms_toolbar.request, toolbar=cms_toolbar, is_current_app=True, app_path="/" ) toolbar.toolbar.set_object(content_obj) return toolbar
def test_navigation_menu_added_to_admin_menu(self): user = factories.UserFactory() user.user_permissions.add( Permission.objects.get( content_type__app_label="djangocms_navigation", codename="change_menucontent", )) page_content = factories.PageContentFactory() toolbar = self._get_toolbar(page_content, preview_mode=True, user=user) toolbar.populate() toolbar.post_template_populate() cms_toolbar = toolbar.toolbar navigation_menu_item = self._find_menu_item("Navigation...", cms_toolbar) url = reverse("admin:djangocms_navigation_menucontent_changelist") self.assertIsNotNone(navigation_menu_item) self.assertIsInstance(navigation_menu_item, SideframeItem) self.assertEqual(navigation_menu_item.url, url)
def test_move_node_view_redirects_to_login_if_non_staff_user(self): user = factories.UserFactory(is_superuser=False, is_staff=False) self.client.force_login(user) menu_content = factories.MenuContentFactory() child = factories.ChildMenuItemFactory(parent=menu_content.root) child_of_child = factories.ChildMenuItemFactory(parent=child) move_url = reverse("admin:djangocms_navigation_menuitem_move_node", args=(menu_content.id, )) data = { "node_id": child_of_child.pk, "sibling_id": menu_content.root.pk, "as_child": 1, } # For POST response = self.client.post(move_url, data=data) redirect_url = reverse("admin:login") + "?next=" + move_url self.assertRedirects(response, redirect_url) # For GET response = self.client.get(move_url) self.assertRedirects(response, redirect_url)
def setUp(self): self.request = RequestFactory().get("/") self.user = factories.UserFactory() self.request.user = self.user self.renderer = menu_pool.get_renderer(self.request) self.menu = CMSMenu(self.renderer)
def setUp(self): self.selector = NavigationSelector(None) self.request = RequestFactory().get("/") self.request.user = factories.UserFactory() self.request.toolbar = CMSToolbar(self.request)
def setUpTestData(cls): cls.user = factories.UserFactory()