예제 #1
0
def test_user_age_gender():
    data = api.public_get(VOD_ID,
                          context['partner'],
                          user_token=context['user_token']).json()
    # http://client-api.tvoli.com/api/ads/v1/vast-tracking/my-app/DQQ1O0YK89N9J99K302FRZUIGUSR/unknown?vastUrl=http%3A%2F%2Fpreroll.mobile%3Fuser%5Bgender%5D%3Dm%26user%5Byob%5D%3D1974', 'intervalroll': {'url': 'http://client-api.tvoli.com/api/ads/v1/vast-tracking/my-app/DQQ1O0YK89N9J99K302FRZUIGUSR/unknown?vastUrl=http%3A%2F%2Fintervalroll.mobile%3Fuser%5Bgender%5D%3Dm%26user%5Byob%5D%3D1974
    api_url = urlparse(deep_get(data, 'preroll'))
    assert_equal(api_url.hostname,
                 urlparse(config.api_global_url()).hostname,
                 'api url hostname')
    assert_equal(
        api_url.path,
        f'/api/ads/v1/vast-wrapper/{context["partner"]["id"]}/{context["user_id"]}/unknown',
        'api url path')
    url_string = parse_qs(api_url.query)['vastUrl'][0]
    url = urlparse(url_string)
    preroll_url = VOD_SETTINGS['preroll']['mobile']
    yob = str(context['user_info']['yearOfBirth'])
    gender = str(context['user_info']['gender'])
    url_string_expect = f'{preroll_url}&user[gender]={gender}&user[yob]={yob}'
    assert_equal(url_string, url_string_expect,
                 'vastUrl query param should be correct')
    query = parse_qs(url.query)
    expected_url = urlparse(deep_get(VOD_SETTINGS, 'preroll.mobile'))
    assert_equal(url.scheme, expected_url.scheme, 'url scheme')
    assert_equal(url.hostname, expected_url.hostname, 'url hostname')
    expected_query = {'user[yob]': yob, 'user[gender]': gender}
    for param in expected_query:
        assert_equal(deep_get(query, [param, 0]), expected_query[param],
                     'expected param %s' % param)
예제 #2
0
def test_device_type_mobile():
    data = api.public_get(VOD_ID, context['partner'],
                          device_type='mobile').json()
    assert_equal(deep_get(data, 'preroll'),
                 deep_get(VOD_SETTINGS, 'preroll.mobile'), 'preroll_url')
    assert_equal(deep_get(data, 'intervalroll.url'),
                 deep_get(VOD_SETTINGS, 'intervalroll.url.mobile'),
                 'intervalroll_url')
예제 #3
0
def test_deep_get_array_map():
    assert u.deep_get({'foo': {
        'bar': [{
            'baz': 1
        }]
    }}, 'foo.bar') == [{
        'baz': 1
    }]
    assert u.deep_get({'foo': {'bar': [{'baz': 1}]}}, 'foo.bar.baz') == [1]
    assert u.deep_get({'foo': {
        'bar': [{
            'baz': 1
        }]
    }}, 'foo.bar.baz.bla') == [None]
    assert u.deep_get({'foo': {'bar': [1]}}, 'foo.bar.baz') == [None]
예제 #4
0
def test_deep_get():
    assert u.deep_get(None, 'foo.bar') is None
    assert u.deep_get({'foo': 1}, 'foo') == 1
    assert u.deep_get({'foo': 1}, 'foo.bar.baz') is None
    assert u.deep_get({'foo': 1}, 'bar') is None
    assert u.deep_get({'foo': 1}, 'bar', 'default-value') == 'default-value'
    assert u.deep_get({'foo': {'bar': 1}}, 'foo.bar') == 1
    assert u.deep_get({'foo': {'bar': 1}}, 'foo.baz') is None
예제 #5
0
def test_user_with_missing_age_gender():
    empty_user_info = {}
    user_api.set_dynamic(context['user_id'], context['clientApiToken'],
                         context['user_token'], empty_user_info)
    data = api.public_get(VOD_ID,
                          context['partner'],
                          user_token=context['user_token']).json()
    api_url = urlparse(deep_get(data, 'preroll'))
    url = urlparse(parse_qs(api_url.query)['vastUrl'][0])
    assert_equal(api_url.hostname,
                 urlparse(config.api_global_url()).hostname,
                 'api url hostname')
    query = parse_qs(url.query)
    expected_url = urlparse(deep_get(VOD_SETTINGS, 'preroll.mobile'))
    assert_equal(url.scheme, expected_url.scheme, 'url scheme')
    assert_equal(url.hostname, expected_url.hostname, 'url hostname')
    expected_query = {'user[yob]': None, 'user[gender]': None}
    for param in expected_query:
        assert_equal(deep_get(query, [param, 0]), expected_query[param],
                     'expected param %s' % param)
예제 #6
0
def test_frequency_cap():
    frequencyCap = 3
    device = 'unknown'
    updated_vod_settings = deep_set(VOD_SETTINGS, 'frequencyCap', frequencyCap)
    api.internal_update(context['partner']['id'], VOD_ID, updated_vod_settings)
    assert_equal(
        deep_get(
            api.internal_get(context['partner']['id'], VOD_ID).json(),
            'adSettings.frequencyCap'), frequencyCap,
        'internal_get after update of frequencyCap')

    response = api.public_get(VOD_ID,
                              context['partner'],
                              user_token=context['user_token'])
    assert_equal(response.status_code, 200, 'status_code API user first time')
    api.public_get_tracking(context['partner'], context['user_id'], device)
    response = api.public_get(VOD_ID,
                              context['partner'],
                              user_token=context['user_token'])
    assert_equal(response.status_code, 404, 'status_code API user second time')
예제 #7
0
def test_free_users_only():
    response = api.public_get(VOD_ID,
                              context['partner'],
                              user_token=context['user_token'])
    assert_equal(response.status_code, 200,
                 'status_code before setting freeUsersOnly=true')

    updated_vod_settings = deep_set(VOD_SETTINGS, 'freeUsersOnly', True)
    api.internal_update(context['partner']['id'], VOD_ID, updated_vod_settings)

    assert_equal(
        deep_get(
            api.internal_get(context['partner']['id'], VOD_ID).json(),
            'adSettings.freeUsersOnly'), True,
        'internal_get after update of freeUsersOnly')

    response = api.public_get(VOD_ID,
                              context['partner'],
                              user_token=context['user_token'])
    assert_equal(response.status_code, 404,
                 'status_code after setting freeUsersOnly=true')
예제 #8
0
def test_deep_get_list_keys():
    assert u.deep_get({'foo': {'bar': 1}}, ['foo', 'bar']) == 1
    assert u.deep_get({'foo': {'bar': [1]}}, ['foo', 'bar', '0']) == 1
    assert u.deep_get({'foo': {'bar': [1]}}, ['foo', 'bar', 0]) == 1
예제 #9
0
def test_deep_get_array_index():
    assert u.deep_get({'foo': {'bar': [1]}}, 'foo.bar') == [1]
    assert u.deep_get({'foo': {'bar': [1]}}, 'foo.bar.0') == 1
    assert u.deep_get({'foo': {'bar': [1]}}, 'foo.bar.1') is None
    assert u.deep_get({'foo': {'bar': [{'baz': 1}]}}, 'foo.bar.0.baz') == 1
    assert u.deep_get({'foo': {'bar': [{'baz': 1}]}}, 'foo.bar.1.baz') is None
예제 #10
0
def current_product_ids(history):
    addons = deep_get(history, 'current.addons')
    return addons and list(map(lambda a: deep_get(a, 'product.id'), addons))
예제 #11
0
 def build_result(result, path):
     device_path = path + '.' + device
     url = deep_get(result, path)
     device_url = deep_get(result, device_path)
     return deep_set(result, path, device_url) if url else result
예제 #12
0
def test_device_type_other():
    data = api.public_get(VOD_ID, context['partner'],
                          device_type='foobar').json()
    assert_equal(deep_get(data, 'preroll'),
                 deep_get(VOD_SETTINGS, 'preroll.mobile'), 'preroll_url')
예제 #13
0
def test_override():
    data = api.public_get(VOD_ID, context['partner']).json()
    assert_equal(deep_get(data, 'preroll'),
                 deep_get(VOD_SETTINGS, 'preroll.mobile'), 'preroll_url')
예제 #14
0
def default_url(url):
    return deep_get(url, 'mobile')