Skip to content

Commit 2be9078

Browse files
committed
Add msgpack HTTP API tests
1 parent 3fde5be commit 2be9078

File tree

2 files changed

+50
-15
lines changed

2 files changed

+50
-15
lines changed

tests/requirements.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
pytest
2-
requests
2+
requests
3+
msgpack

tests/test_index_api.py

+48-14
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import pytest
12
import json
3+
import msgpack
24

35

46
def test_head_index_not_found(client, index_name):
@@ -19,39 +21,71 @@ def test_get_index_not_found(client, index_name):
1921
assert json.loads(req.content) == {'error': 'IndexNotFound'}
2022

2123

22-
def test_get_index(client, index_name, create_index):
23-
req = client.get(f'/{index_name}')
24+
@pytest.mark.parametrize('fmt', ['json', 'msgpack'])
25+
def test_get_index(client, index_name, create_index, fmt):
26+
req = client.get(f'/{index_name}', headers=headers(fmt))
2427
assert req.status_code == 200, req.content
25-
assert json.loads(req.content) == {'version': 0, 'attributes': []}
26-
2728

28-
def test_create_index(client, index_name):
29+
if fmt == 'json':
30+
expected = {'version': 0, 'attributes': []}
31+
else:
32+
expected = {'v': 0, 'a': {}}
33+
assert decode(fmt, req.content) == expected
34+
35+
36+
def headers(fmt):
37+
if fmt == 'json':
38+
return {
39+
'Content-Type': 'application/json',
40+
'Accept': 'application/json',
41+
}
42+
elif fmt == 'msgpack':
43+
return {
44+
'Content-Type': 'application/vnd.msgpack',
45+
'Accept': 'application/vnd.msgpack',
46+
}
47+
else:
48+
return {}
49+
50+
51+
def decode(fmt, content):
52+
if fmt == 'json':
53+
return json.loads(content)
54+
elif fmt == 'msgpack':
55+
return msgpack.loads(content)
56+
else:
57+
assert False
58+
59+
60+
@pytest.mark.parametrize('fmt', ['json', 'msgpack'])
61+
def test_create_index(client, index_name, fmt):
2962
req = client.head(f'/{index_name}')
3063
assert req.status_code == 404, req.content
3164

32-
req = client.put(f'/{index_name}')
65+
req = client.put(f'/{index_name}', headers=headers(fmt))
3366
assert req.status_code == 200, req.content
34-
assert json.loads(req.content) == {}
67+
assert decode(fmt, req.content) == {}
3568

36-
req = client.put(f'/{index_name}')
69+
req = client.put(f'/{index_name}', headers=headers(fmt))
3770
assert req.status_code == 200, req.content
38-
assert json.loads(req.content) == {}
71+
assert decode(fmt, req.content) == {}
3972

4073
req = client.head(f'/{index_name}')
4174
assert req.status_code == 200, req.content
4275

4376

44-
def test_delete_index(client, index_name, create_index):
77+
@pytest.mark.parametrize('fmt', ['json', 'msgpack'])
78+
def test_delete_index(client, index_name, create_index, fmt):
4579
req = client.head(f'/{index_name}')
4680
assert req.status_code == 200, req.content
4781

48-
req = client.delete(f'/{index_name}')
82+
req = client.delete(f'/{index_name}', headers=headers(fmt))
4983
assert req.status_code == 200, req.content
50-
assert json.loads(req.content) == {}
84+
assert decode(fmt, req.content) == {}
5185

52-
req = client.delete(f'/{index_name}')
86+
req = client.delete(f'/{index_name}', headers=headers(fmt))
5387
assert req.status_code == 200, req.content
54-
assert json.loads(req.content) == {}
88+
assert decode(fmt, req.content) == {}
5589

5690
req = client.head(f'/{index_name}')
5791
assert req.status_code == 404, req.content

0 commit comments

Comments
 (0)