Unverified Commit 5332b692 by Tyler Hallada Committed by GitHub

Merge pull request #16466 from edx/thallada/ret-fix-absolute-url

Schedules: absolute_url returns given URL if already absolute
parents e758e20a 1f88d528
......@@ -31,6 +31,14 @@ def encode_url(url):
def absolute_url(site, relative_path):
"""
Add site.domain to the beginning of the given relative path.
If the given URL is already absolute (has a netloc part), then it is just returned.
"""
if bool(urlparse(relative_path).netloc):
# Given URL is already absolute
return relative_path
root = site.domain.rstrip('/')
relative_path = relative_path.lstrip('/')
return encode_url(u'https://{root}/{path}'.format(root=root, path=relative_path))
......
from openedx.core.djangoapps.schedules.template_context import absolute_url
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms
@skip_unless_lms
class TestTemplateContext(CacheIsolationTestCase):
def setUp(self):
self.site = SiteFactory.create()
self.site.domain = 'example.com'
def test_absolute_url(self):
absolute = absolute_url(self.site, '/foo/bar')
self.assertEqual(absolute, 'https://example.com/foo/bar')
def test_absolute_url_domain_lstrip(self):
self.site.domain = 'example.com/'
absolute = absolute_url(self.site, 'foo/bar')
self.assertEqual(absolute, 'https://example.com/foo/bar')
def test_absolute_url_already_absolute(self):
absolute = absolute_url(self.site, 'https://some-cdn.com/foo/bar')
self.assertEqual(absolute, 'https://some-cdn.com/foo/bar')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment