aboutsummaryrefslogtreecommitdiffstats
path: root/brevisurl
diff options
context:
space:
mode:
authorVladimir Gorej2012-06-20 20:49:43 +0200
committerVladimir Gorej2012-06-20 20:49:43 +0200
commit178d820541e874fe9913080c5125876b9c0b82ca (patch)
tree9253fc8b190c7e9e957d55ebf7de28609a06c276 /brevisurl
parent395fa7a203aba58e24362f55a6997f2fc82deb2a (diff)
downloaddjango-brevisurl-178d820541e874fe9913080c5125876b9c0b82ca.tar.bz2
Issue #5; Configure protocol of local backend via settings
Diffstat (limited to 'brevisurl')
-rw-r--r--brevisurl/backends/local.py5
-rw-r--r--brevisurl/settings.py5
-rw-r--r--brevisurl/tests/backends/test_local.py23
-rw-r--r--brevisurl/tests/templatetags/test_brevisurltags.py4
-rw-r--r--brevisurl/tests/test_models.py7
-rw-r--r--brevisurl/tests/test_views.py3
-rw-r--r--brevisurl/views.py2
7 files changed, 39 insertions, 10 deletions
diff --git a/brevisurl/backends/local.py b/brevisurl/backends/local.py
index 741904d..2c54c5b 100644
--- a/brevisurl/backends/local.py
+++ b/brevisurl/backends/local.py
@@ -20,8 +20,6 @@ class TokensExhaustedError(Error):
class BrevisUrlBackend(BaseBrevisUrlBackend):
- PROTOCOL = 'http'
-
def shorten_url(self, original_url):
"""
:raises: ImproperlyConfigured, django.core.exceptions.ValidationError
@@ -46,7 +44,8 @@ class BrevisUrlBackend(BaseBrevisUrlBackend):
kwargs={'token': self.__generate_token()}))
else:
current_site = Site.objects.get_current()
- short_url.shortened_url = '{0}://{1}{2}'.format(self.PROTOCOL, current_site.domain,
+ short_url.shortened_url = '{0}://{1}{2}'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL,
+ current_site.domain,
reverse('brevisurl_redirect',
kwargs={'token': self.__generate_token()}))
short_url.original_url = original_url
diff --git a/brevisurl/settings.py b/brevisurl/settings.py
index 5037a07..3334798 100644
--- a/brevisurl/settings.py
+++ b/brevisurl/settings.py
@@ -17,4 +17,7 @@ LOCAL_BACKEND_TOKEN_LENGTH = getattr(settings, 'BREVISURL_LOCAL_BACKEND_TOKEN_LE
# Settings for url pattern
LOCAL_BACKEND_URL_PATTERN = getattr(settings, 'BREVISURL_LOCAL_BACKEND_URL_PATTERN',
- r'^(?P<token>[a-zA-Z0-9]{' + str(LOCAL_BACKEND_TOKEN_LENGTH) + r'})$') \ No newline at end of file
+ r'^(?P<token>[a-zA-Z0-9]{' + str(LOCAL_BACKEND_TOKEN_LENGTH) + r'})$')
+
+# Protocol for local backend
+LOCAL_BACKEND_DOMAIN_PROTOCOL = getattr(settings, 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL', 'http') \ No newline at end of file
diff --git a/brevisurl/tests/backends/test_local.py b/brevisurl/tests/backends/test_local.py
index 620b9a4..ebf27e8 100644
--- a/brevisurl/tests/backends/test_local.py
+++ b/brevisurl/tests/backends/test_local.py
@@ -14,6 +14,7 @@ class TestLocalBrevisUrlBackend(TestCase):
self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend')
def test_shorten_url_use_site_framework(self):
+ _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN
brevisurl.settings.LOCAL_BACKEND_DOMAIN = None
self.assertEqual(ShortUrl.objects.all().count(), 0)
original_url = 'http://www.codescale.net/'
@@ -21,15 +22,18 @@ class TestLocalBrevisUrlBackend(TestCase):
self.assertEqual(ShortUrl.objects.all().count(), 1)
self.assertEqual(short_url.original_url, original_url)
self.assertRegexpMatches(short_url.shortened_url, URLValidator.regex)
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain
def test_shorten_url_domain_from_settings(self):
self.assertEqual(ShortUrl.objects.all().count(), 0)
+ _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN
brevisurl.settings.LOCAL_BACKEND_DOMAIN = 'http://brevisurl.net/'
original_url = 'http://www.codescale.net/'
short_url = self.connection.shorten_url(original_url)
self.assertEqual(ShortUrl.objects.all().count(), 1)
self.assertEqual(short_url.original_url, original_url)
self.assertRegexpMatches(short_url.shortened_url, r'^http://brevisurl\.net/[a-zA-Z0-9]{5}$')
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain
def test_shorten_url_reuse_old(self):
original_url = 'http://www.codescale.net/'
@@ -95,4 +99,21 @@ class TestLocalBrevisUrlBackend(TestCase):
self.assertEqual(ShortUrl.objects.all().count(), 0)
short_url = connection.shorten_url(original_url)
self.assertEqual(ShortUrl.objects.all().count(), 1)
- self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/.{5}') \ No newline at end of file
+ self.assertRegexpMatches(short_url.shortened_url, r'^http://test\.com/.{5}')
+
+ def test_configurable_protocol(self):
+ _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN = None
+ original_url = 'http://www.codescale.net/'
+ self.assertEqual(ShortUrl.objects.all().count(), 0)
+ short_url = self.connection.shorten_url(original_url)
+ self.assertEqual(ShortUrl.objects.all().count(), 1)
+ self.assertRegexpMatches(short_url.shortened_url, '^http://')
+ original_url = 'http://www.codescale.net/another'
+ _default_protocol = brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL = 'https'
+ short_url = self.connection.shorten_url(original_url)
+ self.assertEqual(ShortUrl.objects.all().count(), 2)
+ self.assertRegexpMatches(short_url.shortened_url, '^https://')
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL = _default_protocol
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN = None \ No newline at end of file
diff --git a/brevisurl/tests/templatetags/test_brevisurltags.py b/brevisurl/tests/templatetags/test_brevisurltags.py
index b4c7c56..808dc2d 100644
--- a/brevisurl/tests/templatetags/test_brevisurltags.py
+++ b/brevisurl/tests/templatetags/test_brevisurltags.py
@@ -38,6 +38,7 @@ class TestShortenUrlTag(TestCase):
def test_absurl_tag_domain_from_settings(self):
+ _original_domain = brevisurl.settings.LOCAL_BACKEND_DOMAIN
brevisurl.settings.LOCAL_BACKEND_DOMAIN = 'http://brevisurl.net/'
url = Template("""
{% load brevisurltags %}
@@ -46,4 +47,5 @@ class TestShortenUrlTag(TestCase):
""").render(Context()).strip()
self.assertEqual(ShortUrl.objects.all().count(), 1)
self.assertRegexpMatches(url, URLValidator.regex)
- self.assertRegexpMatches(url, r'^http://brevisurl\.net/[a-zA-Z0-9]{5}$') \ No newline at end of file
+ self.assertRegexpMatches(url, r'^http://brevisurl\.net/[a-zA-Z0-9]{5}$')
+ brevisurl.settings.LOCAL_BACKEND_DOMAIN = _original_domain \ No newline at end of file
diff --git a/brevisurl/tests/test_models.py b/brevisurl/tests/test_models.py
index 6942124..9a843f1 100644
--- a/brevisurl/tests/test_models.py
+++ b/brevisurl/tests/test_models.py
@@ -2,6 +2,7 @@ from django.core.exceptions import ValidationError
from django.test import TestCase
from django.contrib.sites.models import Site
+import brevisurl.settings
from brevisurl.models import ShortUrl
from brevisurl import get_connection
@@ -13,7 +14,8 @@ class TestModels(TestCase):
connection = get_connection('brevisurl.backends.local.BrevisUrlBackend')
short_url = ShortUrl()
short_url.original_url = 'http://www.codescale.net/'
- short_url.shortened_url = '{0}://{1}/12345'.format(connection.PROTOCOL, site.domain)
+ short_url.shortened_url = '{0}://{1}/12345'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL,
+ site.domain)
short_url.backend = connection.class_path
short_url.save()
self.assertIsNotNone(short_url.pk)
@@ -24,7 +26,8 @@ class TestModels(TestCase):
self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend')
self.short_url = ShortUrl()
self.short_url.original_url = 'www.codescale.'
- self.short_url.shortened_url = '{0}://{1}/12345'.format(self.connection.PROTOCOL, self.site.domain)
+ self.short_url.shortened_url = '{0}://{1}/12345'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL,
+ self.site.domain)
self.short_url.backend = self.connection.class_path
self.short_url.save()
diff --git a/brevisurl/tests/test_views.py b/brevisurl/tests/test_views.py
index ec46911..b943a1d 100644
--- a/brevisurl/tests/test_views.py
+++ b/brevisurl/tests/test_views.py
@@ -17,7 +17,8 @@ class TestBrevisUrlRedirectView(TestCase):
self.connection = get_connection('brevisurl.backends.local.BrevisUrlBackend')
self.short_url = ShortUrl()
self.short_url.original_url = 'http://www.codescale.net/'
- self.short_url.shortened_url = '{0}://{1}/12345'.format(self.connection.PROTOCOL, self.site.domain)
+ self.short_url.shortened_url = '{0}://{1}/12345'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL,
+ self.site.domain)
self.short_url.backend = self.connection.class_path
self.short_url.save()
self.client = Client()
diff --git a/brevisurl/views.py b/brevisurl/views.py
index 82cf875..965439d 100644
--- a/brevisurl/views.py
+++ b/brevisurl/views.py
@@ -28,7 +28,7 @@ class BrevisUrlRedirectView(RedirectView):
else:
try:
site = Site.objects.get_current()
- domain = '{0}://{1}'.format(connection.PROTOCOL, site.domain)
+ domain = '{0}://{1}'.format(brevisurl.settings.LOCAL_BACKEND_DOMAIN_PROTOCOL, site.domain)
except ImproperlyConfigured:
log.exception('No site object configured for this django project')
raise Http404