Skip to content

Commit f26de71

Browse files
committed
Add client integration tests for basic behaviors
1 parent 92173a5 commit f26de71

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

test-requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ pytest-cov==2.10.1
44
pytest-mock==3.6.1
55
tox==3.20.1
66
pytest-timeout==1.4.2
7+
urllib3_mock==0.3.3

tests/integ/__init__.py

Whitespace-only changes.

tests/integ/test_index.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import pytest
2+
from urllib3_mock import Responses
3+
4+
import pinecone
5+
from pinecone import ApiTypeError
6+
7+
responses = Responses('requests.packages.urllib3')
8+
9+
10+
@responses.activate
11+
def test_unrecognized_response_field():
12+
# unrecognized response fields are okay, shouldn't raise an exception
13+
pinecone.init('example-api-key', environment='example-environment')
14+
15+
# responses.add('GET', '/actions/whoami', # fixme: requests-based, so mock fails?
16+
# body='{"project_name": "example-project", "user_label": "example-label", "user_name": "test"}',
17+
# status=200, content_type='application/json')
18+
responses.add('DELETE', '/vectors/delete',
19+
body='{"deleted_count": 2, "unexpected_key": "xyzzy"}',
20+
status=200, content_type='application/json')
21+
22+
index = pinecone.Index('example-index')
23+
resp = index.delete(ids=['vec1', 'vec2'])
24+
25+
# assert len(responses.calls) == 1
26+
# assert responses.calls[0].request.url == '/vectors/delete?ids=vec1&ids=vec2'
27+
# assert responses.calls[0].request.host == 'example-index-unknown.svc.example-environment.pinecone.io'
28+
# assert responses.calls[0].request.scheme == 'https'
29+
30+
assert resp.deleted_count == 2
31+
32+
33+
@responses.activate
34+
def test_missing_response_field():
35+
# unrecognized response fields are okay, shouldn't raise an exception
36+
pinecone.init('example-api-key', environment='example-environment')
37+
responses.add('DELETE', '/vectors/delete',
38+
body='{}',
39+
status=200, content_type='application/json')
40+
index = pinecone.Index('example-index')
41+
# this should not raise
42+
index.delete(ids=['vec1', 'vec2'])
43+
44+
45+
46+
@responses.activate
47+
def test_malformed_response_wrong_type():
48+
# unrecognized response fields are okay, shouldn't raise an exception
49+
pinecone.init('example-api-key', environment='example-environment')
50+
51+
responses.add('DELETE', '/vectors/delete',
52+
body='{"deleted_count": "foobar"}',
53+
status=200, content_type='application/json')
54+
55+
index = pinecone.Index('example-index')
56+
57+
with pytest.raises(ApiTypeError) as exc_info:
58+
resp = index.delete(ids=['vec1', 'vec2'])
59+
assert resp.deleted_count == 2

0 commit comments

Comments
 (0)