config:
    name: xxx

teststeps:
-
    name: get token
    request:
        url: http://127.0.0.1:5000/api/get-token
        method: POST
        headers:
            Content-Type: application/json
            user_agent: 'iOS/10.3'
            device_sn: 'HZfFBh6tU59EdXJ'
            os_platform: 'ios'
            app_version: '2.8.6'
        json:
            sign: 5188962c489d1a35effa99e9346dd5efd4fdabad
    variables:
        expect_status_code: 200
        token_len: 16
    extract:
        token: content.token
    validate:
        - {"check": "status_code", "comparator": "eq", "expect": 200}
        - eq: ["status_code", $expect_status_code]
        - {"check": "$token", "comparator": "len_eq", "expect": 16}
        - len_eq: ["$token", $token_len]
        - len_eq: ["content.token", 16]
        - {"check": "status_code", "comparator": "sum_status_code", "expect": 2}
        - sum_status_code: ["status_code", 2]

-
    name: create user which does not exist
    request:
        url: http://127.0.0.1:5000/api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            device_sn: 'HZfFBh6tU59EdXJ'
            token: $token
        json:
            name: "user1"
            password: "123456"
    extract:
        success: content.success
    validate:
        - eq: ["status_code", 201]
        - sum_status_code: ["status_code", 3]
        - eq: ["$success", True]
        - eq: ["abc$success", "abcTrue"]
        - {"check": "status_code", "comparator": "eq", "expect": 201}
        - {"check": "content.success", "comparator": "eq", "expect": true}

-
    name: create user which existed
    times: 2
    request:
        url: http://127.0.0.1:5000/api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            device_sn: 'HZfFBh6tU59EdXJ'
            token: $token
        json:
            name: "user1"
            password: "123456"
    validate:
        - "eq": ["status_code", 500]
        - sum_status_code: ["status_code", 5]
        - "eq": ["content.success", false]
        - {"check": "status_code", "comparator": "eq", "expect": 500}
        - {"check": "content.success", "comparator": "eq", "expect": false}

-
    name: create user which existed (skip unconditionally)
    skip: skip this test unconditionally
    times: 2
    request:
        url: http://127.0.0.1:5000/api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            device_sn: 'HZfFBh6tU59EdXJ'
            token: $token
        json:
            name: "user1"
            password: "123456"
    validate:
        - "eq": ["status_code", 500]
        - sum_status_code: ["status_code", 5]
        - "eq": ["content.success", false]
        - {"check": "status_code", "comparator": "eq", "expect": 500}
        - {"check": "content.success", "comparator": "eq", "expect": false}

-
    name: create user which existed (skip if condition)
    skipIf: ${skip_test_in_production_env()}
    times: 2
    request:
        url: http://127.0.0.1:5000/api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            device_sn: 'HZfFBh6tU59EdXJ'
            token: $token
        json:
            name: "user1"
            password: "123456"
    validate:
        - "eq": ["status_code", 500]
        - sum_status_code: ["status_code", 5]
        - "eq": ["content.success", false]
        - {"check": "status_code", "comparator": "eq", "expect": 500}
        - {"check": "content.success", "comparator": "eq", "expect": false}

-
    name: create user which existed (skip unless condition)
    skipUnless: ${skip_test_in_production_env()}
    times: 2
    request:
        url: http://127.0.0.1:5000/api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            device_sn: 'HZfFBh6tU59EdXJ'
            token: $token
        json:
            name: "user1"
            password: "123456"
    validate:
        - "eq": ["status_code", 500]
        - sum_status_code: ["status_code", 5]
        - "eq": ["content.success", false]
        - {"check": "status_code", "comparator": "eq", "expect": 500}
        - {"check": "content.success", "comparator": "eq", "expect": false}
