Here are the examples of the python api django.utils.six.moves.urllib.parse.urlparse.path.startswith taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
0
Example 1
Project: mezzanine Source File: tests.py
def test_login_required(self):
public, _ = RichTextPage.objects.get_or_create(
title="Public", slug="public", login_required=False)
private, _ = RichTextPage.objects.get_or_create(
title="Private", slug="private", login_required=True)
accounts_installed = ("mezzanine.accounts" in settings.INSTALLED_APPS)
args = {"for_user": AnonymousUser()}
self.assertTrue(public in RichTextPage.objects.published(**args))
self.assertTrue(private not in RichTextPage.objects.published(**args))
args = {"for_user": User.objects.get(username=self._username)}
self.assertTrue(public in RichTextPage.objects.published(**args))
self.assertTrue(private in RichTextPage.objects.published(**args))
public_url = public.get_absolute_url()
private_url = private.get_absolute_url()
self.client.logout()
response = self.client.get(private_url, follow=True)
login_prefix = ""
login_url = resolve_url(settings.LOGIN_URL)
login_next = private_url
try:
redirects_count = len(response.redirect_chain)
response_url = response.redirect_chain[-1][0]
except (AttributeError, IndexError):
redirects_count = 0
response_url = ""
if urlparse(response_url).path.startswith("/%s/" % get_language()):
# With LocaleMiddleware a language code can be added at the
# beginning of the path.
login_prefix = "/%s" % get_language()
if redirects_count > 1:
# With LocaleMiddleware and a string LOGIN_URL there can be
# a second redirect that encodes the next parameter.
login_next = urlquote_plus(login_next)
login = "%s%s?next=%s" % (login_prefix, login_url, login_next)
if accounts_installed:
# For an inaccessible page with mezzanine.accounts we should
# see a login page, without it 404 is more appropriate than an
# admin login.
target_status_code = 200
else:
target_status_code = 404
self.assertRedirects(response, login,
target_status_code=target_status_code)
response = self.client.get(public_url, follow=True)
self.assertEqual(response.status_code, 200)
if accounts_installed:
# View / pattern name redirect properly, without encoding next.
login = "%s%s?next=%s" % (login_prefix, login_url, private_url)
with override_settings(LOGIN_URL="login"):
# Note: The "login" is a pattern name in accounts.urls.
response = self.client.get(public_url, follow=True)
self.assertEqual(response.status_code, 200)
response = self.client.get(private_url, follow=True)
self.assertRedirects(response, login)
self.client.login(username=self._username, password=self._password)
response = self.client.get(private_url, follow=True)
self.assertEqual(response.status_code, 200)
response = self.client.get(public_url, follow=True)
self.assertEqual(response.status_code, 200)
if accounts_installed:
with override_settings(LOGIN_URL="mezzanine.accounts.views.login"):
response = self.client.get(public_url, follow=True)
self.assertEqual(response.status_code, 200)
response = self.client.get(private_url, follow=True)
self.assertEqual(response.status_code, 200)
with override_settings(LOGIN_URL="login"):
response = self.client.get(public_url, follow=True)
self.assertEqual(response.status_code, 200)
response = self.client.get(private_url, follow=True)
self.assertEqual(response.status_code, 200)