import requests
import json
import time
import pytest
url1 = 'http://tmtest.trackingio.com/receive/turl/3r5K1h9'
current_time_13 = int(round(time.time() * 1000))
zf35 = '54321422322132132131213133322323233'
zf130 = 'xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米小米xiaomi小米xiaomi小米xiaomi小米xiaomi小米xiaomi小米xiaomi'
zf64 = 'xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小米小米xiaomi小'
zf468 = '1.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.2131.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.12.21.321.3.213.12.321.3.21.321.3.121.2.23.3.4.4232.213123.13.23.213.123.123.213.21.321.3.213.12.321.3.21.321.3.12'
zf668 = 'Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36'

global parms

parms = {
    # 触点传参时间。is_s2s=1时必传,0时选传。不同渠道有可能传多种格式,详见需求。限制32位字符内。短链传参。
    'ts': int(round(time.time() * 1000)),
    # 集成方式。is_s2s=1为服务器上报触点,0为客户端上报触点。0或1时有不同的参数非空校验,详见需求。固定为0或1。都必传
    'is_s2s': '1',
    # 操作系统。限制16字符内。都选传。短链传参。暂不与app_platform互相做校验。
    'os': 'ios',
    # 设备型号。限制64字符内。都选传。短链传参。
    'model': '小米',
    # 用户公网IP v4版本。限制15字符内。is_s2s=1时都必传,0时都选传,0时优先取传参IP,未传参或传参报错时,取http header中的ip作为ipv4的值
    'ipv4': '1.1.1.1',
    # 用户公网IP v6版本。限制128字符内。都选传
    'ipv6': '',
    # 用户代理信息。限制512字符内。is_s2s=1时都必传,0时都选传,0时优先取传参UA,未传参或报错时,取http header中的user agent作为ua的值
    'ua': 'Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; Nexus 5X Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.3 Mobile Safari/537.36',
    # iOS IDFA原值。固定为36字符
    "idfa": "",
    "idfa_md5": "",
    "idfv": "",
    "idfv_md5": "",
    # 触点类型。固定为click。都必传
    'touchpoint_type': 'click',
    # 归因类型。固定为ua(user acquirement新客获取)
    'attribution_type': 'ua',

    # 广告账户id。限制64字符内。都选传
    'account_id': '123',
    # # 广告组id。限制64字符内。都选传
    # 'adgroup_id': '',
    # # 广告组名称。限制256字符内。都选传
    # 'adgroup_name': '',
    # # 广告计划id。限制64字符内。都选传
    'adplan_id': '342312312',
    # # 广告计划名称。限制256字符内。都选传
    # 'adplan_name': '',
    # # 广告创意id。限制128字符内。都选传
    'adcreative_id': '1111',
    # # 广告创意名称。限制256字符内。都选传
    # 'adcreative_name': '',
    # # 创意类型(例如大图、小图、视频等)。限制16字符内。都选传
    'adcreative_type': '大图',
    # # 流量媒体id(例如巨量的今日头条、穿山甲、抖音等)。限制32字符内。都选传
    # 'site_id': '',
    # # 流量媒体名称(例如巨量的今日头条、穿山甲、抖音等)。限制128字符内。都选传
    # 'site_name': '',
    # # 广告类型(例如开屏、信息流、搜索等)。限制32字符内。都选传。
    # 'ad_type': '',
    # # 广告位id。限制64字符内。都选传
    'placement_id': '222',
    # # 转化id。限制64字符内。都选传
    'conversion_id': '333',
    # # 广告点击id。限制64字符内。都选传
    'click_id': '765432354634',
    # # 广告展示id。限制64字符内。都选传
    'impression_id': '444',
    # # 广告请求id。限制64字符内。都选传
    # 'request_id': '',
    # # 渠道回调id。限制256字符。都选传
    'callback_id': 'EJiw267wvfQCGKf2g74ZIPD89-vIATAMOAFCIjIwMTkxMTI3MTQxMTEzMDEwMDI2MDc3MjE1MTUwNTczNTBIAQ==',
    # 渠道回调地址。限制256字符。都选传
    'callback_url': 'https%3A%2F%2Furi6.com%2Ftkio%2Fa6ZVNba%3Fnoredirect%3Dtrue',

    # 自定触点参数集合。都选传。
    # 'custom_params_1': ''
}
data_temp = json.dumps(parms)


# p = requests.get(url=url1, params=parms, timeout=10, verify=False)
# print(p.url)
# print(p.status_code)
# print(p.content)
def send_request(cs):
    global parms
    # 测试
    # url1 = 'http://tmtest.trackingio.com/receive/turl/aimmeya' + cs
    # 线上
    url1 = 'http://tkio-redirect.solar-engine.com/receive/turl/f6F7zia' + cs

    response = requests.get(url=url1, params=parms, timeout=10, verify=False)
    print(response.url)
    parms = json.loads(data_temp)
    response = json.loads(response.text)
    return response



def send_request3(cs):
    global parms
    # 测试
    # url1 = 'http://tmtest.trackingio.com/receive/turl/VVvEz2a' + cs
    # 线上
    url1 = 'http://tkio-redirect.solar-engine.com/receive/turl/f6F7zia' + cs
    parms['ts'] = int(round(time.time() * 1000))
    response = requests.get(url=url1, params=parms, timeout=10, verify=False)
    print(response.url)
    print(response.text)
    parms = json.loads(data_temp)
    response = json.loads(response.text)
    return response



# idfa为空
def test_idfa1():
    parms['idfa'] = ''
    re = send_request('')
    assert re["status"] == 0

# idfa为全0
def test_idfa2():
    parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    re = send_request('')
    assert re["status"] == 0


# idfa为32字符
def test_idfa3():
    parms['idfa'] = '3DEA635F-B24F-434B-833F-4ED028FEAEEF'
    re = send_request('')
    assert re["status"] == 0


# idfa非32字符
def test_idfa4():
    parms['idfa'] = zf35
    re = send_request('')
    assert re["status"] == 124


# idfa_md5为空
def test_idfa_md51():
    parms['idfa_md5'] = ''
    re = send_request('')
    assert re["status"] == 0


# idfa_md5为全0 md5加密
def test_idfa_md52():
    parms['idfa_md5'] = '9f89c84a559f573636a47ff8daed0d33'
    re = send_request('')
    assert re["status"] == 0


# idfa_md5为32字符
def test_idfa_md53():
    parms['idfa_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 0


# idfa_md5非32字符
def test_idfa_md54():
    parms['idfa_md5'] = zf35
    re = send_request('')
    assert re["status"] == 187


# idfv和idfv_md5同上

# idfv为空
def test_idfv1():
    parms['idfv'] = ''
    re = send_request('')
    assert re["status"] == 0

# idfv为全0
def test_idfv2():
    parms['idfv'] = '00000000-0000-0000-0000-000000000000'
    re = send_request('')
    assert re["status"] == 0


# idfv为32字符
def test_idfv3():
    parms['idfv'] = '3DEA635F-B24F-434B-833F-4ED028FEAEEF'
    re = send_request('')
    assert re["status"] == 0


# idfv非32字符
def test_idfv4():
    parms['idfv'] = zf35
    re = send_request('')
    assert re["status"] == 125



# idfv_md5为空
def test_idfv_md51():
    parms['idfv_md5'] = ''
    re = send_request('')
    assert re["status"] == 0


# idfv_md5为全0 md5加密
def test_idfv_md52():
    parms['idfv_md5'] = '9f89c84a559f573636a47ff8daed0d33'
    re = send_request('')
    assert re["status"] == 0


# idfv_md5为32字符
def test_idfv_md53():
    parms['idfa_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 0


# idfv_md5非32字符
def test_idfv_md54():
    parms['idfv_md5'] = zf35
    re = send_request('')
    assert re["status"] == 188



# 短链是ios,传oaid
def test_oaid():
    parms['oaid'] = '3DEA635F-B24F-434B-833F-4ED028FEAEE'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传oaid_md5
def test_oaid_md5():
    parms['oaid_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传imei1
def test_imei1():
    parms['imei1'] = '8342732742383'
    re = send_request('')
    assert re["status"] == 115



# 短链是ios,传imei1_md5
def test_imei1_md5():
    parms['imei1_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传imei2
def test_imei2():
    parms['imei2'] = '8342732742383'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传imei2_md5
def test_imei2_md5():
    parms['imei2_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传gaid
def test_gaid():
    parms['gaid'] = 'B21C5EC5-9921-42FD-AAC5-07A0EB6CF1A0'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传gaid_md5
def test_gaid_md5():
    parms['gaid_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 115



# 短链是ios,传mac
def test_mac():
    parms['mac'] = 'B21C5EC5-9921-42FD-AAC5-07A0EB6CF1A0'
    re = send_request('')
    assert re["status"] == 115



# 短链是ios,传mac_md5
def test_mac_md5():
    parms['mac_md5'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 115


# 短链是ios,传android_id
def test_android_id():
    parms['android_id'] = '1a34fc556a43c453'
    re = send_request('')
    assert re["status"] == 115



# 短链是ios,传android_id_md5
def test_android_id_md5():
    parms['android_id'] = '8e488a40a17aed2f6752f51382a4eafc'
    re = send_request('')
    assert re["status"] == 115



if __name__ == '__main__':
    pytest.main()