Files
dcalc/backend/tests/contract/test_calc_contract.py
2026-08-18 15:21:53 +08:00

47 lines
1.6 KiB
Python

def test_calc_response_contract(client, alter_token, minimal_calc_config):
response = client.post(
'/api/calc',
headers={'alter-token': alter_token},
json=minimal_calc_config,
)
assert response.status_code == 200
payload = response.json()
assert payload['code'] == 200
assert payload['message'] == 'Success'
assert isinstance(payload['data'], dict)
data = payload['data']
assert set(['uuid', 'skills', 'info', 'suits', 'buffer']).issubset(data)
assert isinstance(data['uuid'], str)
assert isinstance(data['skills'], list)
assert isinstance(data['info'], list)
assert isinstance(data['buffer'], bool)
def test_character_response_contract_with_gzip(client, alter_token):
response = client.get(
'/api/character',
headers={'alter-token': alter_token, 'accept-encoding': 'gzip'},
)
assert response.status_code == 200
assert response.headers['content-encoding'] == 'gzip'
assert response.headers['vary'] == 'Accept-Encoding'
payload = response.json()
assert payload['code'] == 200
assert payload['message'] == 'Success'
assert set(['alter', 'skills', 'equips', 'suits']).issubset(payload['data'])
def test_character_response_contract_without_gzip(client, alter_token):
response = client.get(
'/api/character',
headers={'alter-token': alter_token, 'accept-encoding': 'identity'},
)
assert response.status_code == 200
assert 'content-encoding' not in response.headers
assert response.headers['vary'] == 'Accept-Encoding'
assert response.json()['code'] == 200