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