Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test leak fixes #1360

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 4 additions & 3 deletions cms/test_utils/testcases.py
Expand Up @@ -227,17 +227,17 @@ def reload(self, obj):
def get_pages_root(self):
return urllib.unquote(reverse("pages-root"))

def get_context(self, path=None):
def get_context(self, path=None, page=None):
if not path:
path = self.get_pages_root()
context = {}
request = self.get_request(path)
request = self.get_request(path, page=page)

context['request'] = request

return Context(context)

def get_request(self, path=None, language=None, post_data=None, enforce_csrf_checks=False):
def get_request(self, path=None, language=None, post_data=None, enforce_csrf_checks=False, page=None):
factory = RequestFactory()

if not path:
Expand All @@ -254,6 +254,7 @@ def get_request(self, path=None, language=None, post_data=None, enforce_csrf_che
request.user = getattr(self, 'user', AnonymousUser())
request.LANGUAGE_CODE = language
request._dont_enforce_csrf_checks = not enforce_csrf_checks
request.current_page = page
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to me this looks like covering up the real issue. which is that request.current_page apparently leaked in some test to another test. Shouldn't that be fixed instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that the change per se is a bad one (it makes the fake request look more like a real one). But I'll admit that it may cover the real problem. Let's try to fix that first, then merge this

return request

def check_published_page_attributes(self, page):
Expand Down
10 changes: 6 additions & 4 deletions cms/tests/menu.py
Expand Up @@ -263,8 +263,9 @@ def test_show_breadcrumb(self):
self.assertEqual(nodes[1].get_absolute_url(), page2.get_absolute_url())

def test_language_chooser(self):
# test simple language chooser with default args
context = self.get_context(path=self.get_page(3).get_absolute_url())
# test simple language chooser with default args
page = self.get_page(3)
context = self.get_context(path=page.get_absolute_url(), page=page)
tpl = Template("{% load menu_tags %}{% language_chooser %}")
tpl.render(context)
self.assertEqual(len(context['languages']), len(settings.CMS_SITE_LANGUAGES[settings.SITE_ID]))
Expand All @@ -279,8 +280,9 @@ def test_language_chooser(self):
self.assertEqual(*lang)

def test_page_language_url(self):
path = self.get_page(3).get_absolute_url()
context = self.get_context(path=path)
page = self.get_page(3)
path = page.get_absolute_url()
context = self.get_context(path=path, page=page)
tpl = Template("{%% load menu_tags %%}{%% page_language_url '%s' %%}" % settings.LANGUAGES[0][0])
url = tpl.render(context)
self.assertEqual(url, "/%s%s" % (settings.LANGUAGES[0][0], path))
Expand Down
5 changes: 4 additions & 1 deletion cms/tests/nonroot.py
Expand Up @@ -49,12 +49,14 @@ def create_some_pages(self):

def test_basic_cms_menu(self):
with SettingsOverride(CMS_MODERATOR = False):
self.client.get('/')
response = self.client.get(self.get_pages_root())
self.assertEquals(response.status_code, 200)
self.assertEquals(self.get_pages_root(), "/content/")

def test_show_menu(self):
with SettingsOverride(CMS_MODERATOR = False):
self.client.get('/')
context = self.get_context()
tpl = Template("{% load menu_tags %}{% show_menu %}")
tpl.render(context)
Expand All @@ -63,7 +65,8 @@ def test_show_menu(self):
self.assertEqual(nodes[0].get_absolute_url(), "/content/")

def test_show_breadcrumb(self):
with SettingsOverride(CMS_MODERATOR = False):
with SettingsOverride(CMS_MODERATOR = False):
self.client.get('/')
page2 = Page.objects.get(pk=self.page2.pk)
context = self.get_context(path=self.page2.get_absolute_url())
tpl = Template("{% load menu_tags %}{% show_breadcrumb %}")
Expand Down
8 changes: 4 additions & 4 deletions cms/tests/views.py
Expand Up @@ -106,22 +106,22 @@ def test_redirect_to_self(self):
one = create_page("one", "nav_playground.html", "en", published=True,
redirect='/')
url = one.get_absolute_url()
request = self.get_request(url)
request = self.get_request(url, page=one)
response = details(request, url.strip('/'))
self.assertEqual(response.status_code, HttpResponse.status_code)

def test_redirect_to_self_with_host(self):
one = create_page("one", "nav_playground.html", "en", published=True,
redirect='http://testserver/')
url = one.get_absolute_url()
request = self.get_request(url)
request = self.get_request(url, page=one)
response = details(request, url.strip('/'))
self.assertEqual(response.status_code, HttpResponse.status_code)

def test_login_required(self):
create_page("page", "nav_playground.html", "en", published=True,
one = create_page("page", "nav_playground.html", "en", published=True,
login_required=True)
request = self.get_request('/')
request = self.get_request('/', page=one)
response = details(request, '')
self.assertEqual(response.status_code, 302)
self.assertEqual(response['Location'], '%s?next=/en/' % settings.LOGIN_URL)
Expand Down