示例#1
0
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
示例#2
0
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)
示例#3
0
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'))
示例#4
0
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)
示例#5
0
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"
示例#6
0
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'))
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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)
示例#12
0
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))
示例#13
0
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'))
示例#14
0
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"
示例#15
0
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)
示例#16
0
# -*-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):
示例#17
0
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__)
示例#18
0
def _default_builder_with_signature():
    return imgix.UrlBuilder('my-social-network.imgix.net',
                            True,
                            "FOO123bar",
                            include_library_param=False)
示例#19
0
def _default_builder():
    return imgix.UrlBuilder('my-social-network.imgix.net',
                            sign_with_library_version=False)
示例#20
0
def _default_builder():
    return imgix.UrlBuilder('my-social-network.imgix.net',
                            include_library_param=False)
示例#21
0
def _default_srcset(params={}):
    ub = imgix.UrlBuilder(domain=DOMAIN,
                          sign_key=TOKEN,
                          include_library_param=False)
    return ub.create_srcset(JPG_PATH, params)
示例#22
0
def _default_builder_with_signature():
    return imgix.UrlBuilder('my-social-network.imgix.net',
                            True,
                            "FOO123bar",
                            sign_with_library_version=False)
示例#23
0
 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)
示例#24
0
def test_create():
    builder = imgix.UrlBuilder('my-social-network.imgix.net')
    assert type(builder) is imgix.UrlBuilder
示例#25
0
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")
示例#26
0
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")
示例#27
0
 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)
示例#28
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'))
示例#29
0
def _default_srcset(params={}):
    ub = imgix.UrlBuilder('testing.imgix.net',
                          sign_key='MYT0KEN',
                          include_library_param=False)
    return ub.create_srcset('image.jpg', params)