def test_shard_strategy_invalid(): domain = 'my-social-network-1.imgix.net' builder = imgix.UrlBuilder(domain, shard_strategy='invalid-shard-strategy') # Should not throw an exception assert builder.create_url('/users/1.png') is not None
def get_imgix(image_url, alias=None, wh=None, **kwargs): try: domains = settings.IMGIX_DOMAINS except: raise ImproperlyConfigured("IMGIX_DOMAINS not set in settings.py") ### Build arguments args = {} # Get arguments from settings shard_strategy, sign_key, use_https, aliases,\ format_detect, web_proxy = get_settings_variables() args['use_https'] = use_https if sign_key: args['sign_key'] = sign_key if shard_strategy: args['shard_strategy'] = shard_strategy # Get builder instance builder = imgix.UrlBuilder(domains, **args) # Has the wh argument been passed? If yes, # set w and h arguments accordingly if wh: size = wh if isinstance(size, str): m = WH_PATTERN.match(size) if m: w = int(m.group(1)) h = int(m.group(2)) if w > 0: kwargs['w'] = int(m.group(1)) if h > 0: kwargs['h'] = int(m.group(2)) else: raise TemplateSyntaxError("%r is not a valid size." % size) # Is format detection on? If yes, use the appropriate image format. arguments = get_kwargs(alias, aliases, kwargs) if format_detect and 'fm' not in arguments: fm = get_fm(image_url) if fm: arguments['fm'] = fm # Take only the relative path of the URL if the source is not a Web Proxy Source if not web_proxy: image_url = urlparse(image_url).path # URLs should append an 'ixlib=django-<version_number>' parameter arguments['ixlib'] = "django-" + __version__ # Build the imgix URL url = builder.create_url(image_url, arguments) return mark_safe(url)
def test_create_accepts_domains_tuple(): domains = ('my-social-network-1.imgix.net', 'my-social-network-2.imgix.net') builder = imgix.UrlBuilder(domains, shard_strategy=imgix.SHARD_STRATEGY_CRC) assert domains[0] == _get_domain(builder.create_url('/users/1.png')) assert domains[1] == _get_domain(builder.create_url('/users/a.png'))
def test_create_sign_mode_warning(): with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") imgix.UrlBuilder('my-social-network.imgix.net', sign_mode=imgix.SIGNATURE_MODE_QUERY) assert len(w) == 1 assert issubclass(w[-1].category, DeprecationWarning) assert "deprecated" in str(w[-1].message)
def test_use_https(): # Defaults to https builder = imgix.UrlBuilder('my-social-network.imgix.net') url = builder.create_url("/users/1.png") assert urlparse(url).scheme == "https" builder = imgix.UrlBuilder('my-social-network.imgix.net', use_https=False) url = builder.create_url("/users/1.png") assert urlparse(url).scheme == "http" builder = imgix.UrlBuilder('my-social-network.imgix.net', True) url = builder.create_url("/users/1.png") assert urlparse(url).scheme == "https" builder = imgix.UrlBuilder('my-social-network.imgix.net', use_https=True) url = builder.create_url("/users/1.png") assert urlparse(url).scheme == "https"
def test_shard_strategy_crc_single_domain(): domain = 'my-social-network-1.imgix.net' builder = imgix.UrlBuilder(domain, shard_strategy=imgix.SHARD_STRATEGY_CRC) assert domain == _get_domain(builder.create_url('/users/1.png')) assert domain == _get_domain(builder.create_url('/users/1.png')) assert domain == _get_domain(builder.create_url('/users/2.png')) assert domain == _get_domain(builder.create_url('/users/2.png'))
def test_create_srcset_2257_to_4087(): ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) actual = ub.create_srcset(JPG_PATH, start=2257, stop=4087) expected = "https://testing.imgix.net/image.jpg?w=2257 2257w,\n" + \ "https://testing.imgix.net/image.jpg?w=2618 2618w,\n" + \ "https://testing.imgix.net/image.jpg?w=3037 3037w,\n" + \ "https://testing.imgix.net/image.jpg?w=3523 3523w,\n" + \ "https://testing.imgix.net/image.jpg?w=4087 4087w" assert (expected == actual)
def test_invalid_domain_prepend_scheme(): url_prepend_protocol = 'https://assets.imgix.net' # Should fail if the expected error isn't raised try: imgix.UrlBuilder(url_prepend_protocol) except ValueError: assert (True) else: assert (False)
def test_create_srcset_with_widths(): ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) actual = ub.create_srcset(JPG_PATH, widths=[100, 200, 300, 400, 500]) expected = "https://testing.imgix.net/image.jpg?w=100 100w,\n" + \ "https://testing.imgix.net/image.jpg?w=200 200w,\n" + \ "https://testing.imgix.net/image.jpg?w=300 300w,\n" + \ "https://testing.imgix.net/image.jpg?w=400 400w,\n" + \ "https://testing.imgix.net/image.jpg?w=500 500w" assert (expected == actual)
def test_invalid_domain_append_dash(): url_append_dash = 'assets.imgix.net-products' # Should fail if the expected error isn't raised try: imgix.UrlBuilder(url_append_dash) except ValueError: assert (True) else: assert (False)
def test_create_srcset_100_to_108(): # Test that `tol=1` produces the correct spread. ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) actual = ub.create_srcset(JPG_PATH, start=100, stop=108, tol=0.01) expected = "https://testing.imgix.net/image.jpg?w=100 100w,\n" + \ "https://testing.imgix.net/image.jpg?w=102 102w,\n" + \ "https://testing.imgix.net/image.jpg?w=104 104w,\n" + \ "https://testing.imgix.net/image.jpg?w=106 106w,\n" + \ "https://testing.imgix.net/image.jpg?w=108 108w" assert (expected == actual)
def test_disable_variable_output_quality(): ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) srcset = ub.create_srcset(JPG_PATH, disable_variable_quality=True) srclist = srcset.split(',') dpr_qualities = sorted([q for q in DPR_QUALITIES.values()], reverse=True) for src, dpr_quality in zip(srclist, dpr_qualities): quality = "q=" + str(dpr_quality) # Ensure we _do not_ find variable qualities in each src. assert (not (quality in src))
def test_shard_strategy_cycle(): domains = ( 'my-social-network-1.imgix.net', 'my-social-network-2.imgix.net', 'my-social-network-3.imgix.net', ) builder = imgix.UrlBuilder(domains, shard_strategy=imgix.SHARD_STRATEGY_CYCLE) assert domains[0] == _get_domain(builder.create_url('/users/1.png')) assert domains[1] == _get_domain(builder.create_url('/users/1.png')) assert domains[2] == _get_domain(builder.create_url('/users/1.png')) assert domains[0] == _get_domain(builder.create_url('/users/a.png')) assert domains[1] == _get_domain(builder.create_url('/users/b.png')) assert domains[2] == _get_domain(builder.create_url('/users/c.png'))
def flickrstagram(): data = json.loads(request.data) url = data['source'] caption = data['caption'] auth_key = os.environ.get('AUTH', None) if (auth_key is not None and ('auth' not in data or data['auth'] != os.environ.get('AUTH', ''))): return "NO" insta = InstagramSession() builder = imgix.UrlBuilder(os.environ.get('IMGIX_HOST', ''), sign_key=os.environ.get('IMGIX_SIGN_KEY', '')) photo = builder.create_url(url, { 'w': 1280, 'h': 1280, 'fit': 'crop', 'crop': 'entropy', 'auto': 'enchance' }) print "downloading" urllib.urlretrieve(photo, 'tmp/image.jpg') print "uploading" if insta.login(os.environ.get('INSTAGRAM_USER', ''), os.environ.get('INSTAGRAM_PASSWORD', '')): media_id = insta.upload_photo('tmp/image.jpg') print media_id if media_id is not None: insta.configure_photo(media_id, caption) else: print "failed to upload" else: print "failed to login" print "done" return "OK"
def test_create_srcset_start_equals_stop(): ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) actual = ub.create_srcset(JPG_PATH, start=713, stop=713) expected = "https://testing.imgix.net/image.jpg?w=713 713w" assert (expected == actual)
# -*-coding:UTF-8-*- import unittest from previews.model import Preview from previews.routes import adds_http import redis import os import json import imgix redis_url = os.getenv("REDIS_URL", "redis://localhost:6379") redis = redis.from_url(redis_url) if os.getenv("IMGIX_KEY") is not None: builder = imgix.UrlBuilder("ada-previewer.imgix.net", use_https=True, sign_key=os.getenv("IMGIX_KEY")) else: raise ValueError("Please set IMGIX_KEY in your environment variables") IMAGE_LINK_MAX_WIDTH = 768 # TODO: We should re-write our tests with fixtures! We are currently testing # against live websites that we do not control. Our tests could break whenever # a change is made to one of these sites. # https://adasupport.atlassian.net/browse/CXP-138 class PreviewUnitTests(unittest.TestCase): maxDiff = None def setUp(self):
def test_signing_url_with_ixlib(): builder = imgix.UrlBuilder('my-social-network.imgix.net') url = builder.create_url("/users/1.png") assert url == ( "https://my-social-network.imgix.net/users/1.png?ixlib=python-" + imgix._version.__version__)
def _default_builder_with_signature(): return imgix.UrlBuilder('my-social-network.imgix.net', True, "FOO123bar", include_library_param=False)
def _default_builder(): return imgix.UrlBuilder('my-social-network.imgix.net', sign_with_library_version=False)
def _default_builder(): return imgix.UrlBuilder('my-social-network.imgix.net', include_library_param=False)
def _default_srcset(params={}): ub = imgix.UrlBuilder(domain=DOMAIN, sign_key=TOKEN, include_library_param=False) return ub.create_srcset(JPG_PATH, params)
def _default_builder_with_signature(): return imgix.UrlBuilder('my-social-network.imgix.net', True, "FOO123bar", sign_with_library_version=False)
def test_start_0_raises(self): ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) with self.assertRaises(WidthRangeError): ub.create_srcset(JPG_PATH, start=0)
def test_create(): builder = imgix.UrlBuilder('my-social-network.imgix.net') assert type(builder) is imgix.UrlBuilder
def test_include_library_param_true(): url = ("https://assets.imgix.net/image.jpg?ixlib=python-" + imgix._version.__version__) ub = imgix.UrlBuilder("assets.imgix.net", include_library_param=True) assert url == ub.create_url("image.jpg")
def test_include_library_param_false(): url = 'https://assets.imgix.net/image.jpg' ub = imgix.UrlBuilder("assets.imgix.net", include_library_param=False) assert url == ub.create_url("image.jpg")
def test_tol_0_raises(self): ub = imgix.UrlBuilder(DOMAIN, include_library_param=False) with self.assertRaises(WidthToleranceError): ub.create_srcset(JPG_PATH, tol=0)
def test_create_accepts_domains_single_str(): domain = 'my-social-network-1.imgix.net' builder = imgix.UrlBuilder(domain) assert domain == _get_domain(builder.create_url('/users/1.png'))
def _default_srcset(params={}): ub = imgix.UrlBuilder('testing.imgix.net', sign_key='MYT0KEN', include_library_param=False) return ub.create_srcset('image.jpg', params)