diff options
| -rw-r--r-- | brevisurl/backends/local.py | 5 | ||||
| -rw-r--r-- | brevisurl/settings.py | 5 | ||||
| -rw-r--r-- | brevisurl/tests/backends/test_local.py | 23 | ||||
| -rw-r--r-- | brevisurl/tests/templatetags/test_brevisurltags.py | 4 | ||||
| -rw-r--r-- | brevisurl/tests/test_models.py | 7 | ||||
| -rw-r--r-- | brevisurl/tests/test_views.py | 3 | ||||
| -rw-r--r-- | brevisurl/views.py | 2 | 
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 | 
