import requests
import json
import pytest

url = "http://tkiomicro-receive-788931749.cn-north-1.elb.amazonaws.com.cn/receive/tkiov2/sdk"
chaochang = '543214223221321321312131313133132131232131232132132543214223221321321312131313133132131232131232132132543214223221321321312131313133132131232131232132132'

headers = {
  'Content-Type': 'application/json'
}

global data
data = [
    {
        "application_info": {
            "appkey": "74b81be2432c029040e0b2bc375ce7fb",
            "bundleid": "3423232",
            "app_version": "1.9.0",
            "channel_name": "default"
        },
        "timestamp_info": {
            "time_zone": "GMT+08",
            "install_time": "1637823377000",
            "current_event_time": "1637823377000",
            "report_time": "1637823377000"
        },
        "collector_info": {
            "integration_type": "sdk",
            "collector_version": "1.8.4",
            "retried_times": ""
        },
        "device_info": {
            "ryid": "8e4888e488a40a17aed2f6752f51382a4eafc",
		    "device_id":"c3381276ae145b3663c8e0f6dd9f628a",
		    "device_id_type": "idfa_md5",
		    "device_id_md5": "c3381276ae145b3663c8e0f6dd9f628a",
		    "device_id_md5_type": "idfa_md5",
		    "os": "ios",
		    "os_version": "19",
		    "manufacturer": "HUAWEI",
		    "model": "Mate 40",
		    "ipv4": "",
		    "ipv6": "1.1.1",
		    "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36",
		    "att_status": "unknown",
		    "lat_status": "disable",
            "idfa": "3DEA635F-B24F-434B-833F-4ED028FEAEEF",
            "idfa_md5": "c3381276ae145b3663c8e0f6dd9f628a",
            "idfv": "3DEA635F-B24F-434B-833F-4ED028FEAEEF",
            "idfv_md5": "c3381276ae145b3663c8e0f6dd9f628a",

        },
        "event_info": {
            "event_name": "install",
            "event_type": "preset",
            "event_data": {
                "user_id": "guest123",
                "register_type": "WeChat",
                "login_type": "Wechat",
                "order_id": "2341242342676398724",
                "order_amount": "343432",
                "currency_type": "CNY",
                "purchase_type": "Alipay",
                "ad_platform": "csj",
                "placement_type": "interstitial",
                "placement_id": "23425334",
                "ad_price": "4.34",
                "ad_price_currency_type": "CNY",
                "is_rendered": "1"
            },
            "custom_params": {
                # "add_cart": "234234",
                # "sku": "234234",
                # "level_up": "234234",
                # "refund": "234234",
                # "refund_amount": "234234"
            }
        }
    }
]
data_temp = json.dumps(data)

def send_request():
    global data
    url = "http://tkiomicro-receive-788931749.cn-north-1.elb.amazonaws.com.cn/receive/tkiov2/sdk"
    # print(data)
    response = requests.request("POST", url, headers=headers, data=json.dumps(data))
    print(response.text)
    # 全局data
    data = json.loads(data_temp)
    response = json.loads(response.text)
    s = str(response["status"])
    response["status"] = s
    return response



# os为ios,channel_name不等于default
def test_os_ios():

    data[0]["device_info"]["os"] = 'ios'
    data[0]['application_info']['channel_name'] = 'xiaomi'
    response = send_request()
    assert response["status"] == "104"




# os为大写iOS
def test_os_ios():
    data[0]["device_info"]["os"] = 'iOS'
    response = send_request()
    assert response["status"] == "115"


# ATT框架启用状态,为固定值
def test_att_status1():
    lis = ['denied', 'restricted', 'authorized', 'unknown']
    for astatus in lis:
        data[0]['device_info']['att_status'] = astatus
        response = send_request()
        assert response["status"] == "0"


# ATT框架启用状态,为其他值
def test_att_status2():
    data[0]['device_info']['att_status'] = "aaa"
    response = send_request()
    assert response["status"] == "122"


# ATT框架启用状态,为空
def test_att_status3():
    data[0]['device_info']['att_status'] = ""
    response = send_request()
    assert response["status"] == "0"


# LAT启用状态,固定值
def test_lat_status1():
    lis = ['enable', 'disable', 'unknown']
    for astatus in lis:
        data[0]['device_info']['lat_status'] = astatus
        response = send_request()
        assert response["status"] == "0"



# LAT启用状态,其他值
def test_lat_status2():
    data[0]['device_info']['lat_status'] = "aaa"
    response = send_request()
    assert response["status"] == "123"


# LAT启用状态,空
def test_lat_status3():
    data[0]['device_info']['lat_status'] = ""
    response = send_request()
    assert response["status"] == "0"

# idfa为空,idfa_md5不为空
def test_idfa1():
    data[0]['device_info']['idfa'] = ''
    response = send_request()
    assert response["status"] == "0"


# idfa超长
def test_idfa2():
    data[0]['device_info']['idfa'] = chaochang
    response = send_request()
    assert response["status"] == "124"

# idfa为空,idfa_md5也为空
def test_idfa3():
    data[0]['device_info']['idfa'] = ''
    data[0]['device_info']['idfa_md5'] = ''
    response = send_request()
    assert response["status"] == "124"


# idfa不为空,idfa_md5为空
def test_idfa_md51():
    data[0]['device_info']['idfa_md5'] = ''
    response = send_request()
    assert response["status"] == "0"


# idfa_md5超长
def test_idfa_md52():
    data[0]['device_info']['idfa_md5'] = chaochang
    response = send_request()
    assert response["status"] == "124"


# device_id与device_id_type不一致
def test_device_id():
    data[0]['device_info']['device_id_type'] = "idfa"
    data[0]['device_info']['device_id'] = "c3381276ae145b3663c8e0f6dd9f628a"
    data[0]['device_info']['idfa_md5'] = "c3381276ae145b3663c8e0f6dd9f628a"
    response = send_request()
    assert response["status"] == "0"


# idfv为空,idfv_md5不为空
def test_idfv1():
    data[0]['device_info']['idfv'] = ''
    response = send_request()
    assert response["status"] == "0"


# idfv超长
def test_idfv2():
    data[0]['device_info']['idfv'] = chaochang
    response = send_request()
    assert response["status"] == "125"


# idfv为空,idfv_md5也为空
def test_idfv3():
    data[0]['device_info']['idfv'] = ''
    data[0]['device_info']['idfv_md5'] = ''
    response = send_request()
    assert response["status"] == "125"


# idfv不为空,idfv_md5为空
def test_idfv_md51():
    data[0]['device_info']['idfv_md5'] = ''
    response = send_request()
    assert response["status"] == "0"


# idfv_md5超长
def test_idfv_md52():
    data[0]['device_info']['idfv_md5'] = chaochang
    response = send_request()
    assert response["status"] == "125"




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