Skip to content

Commit f0679e5

Browse files
committed
Improves UpdateApiKey wait algorithm
1 parent cd36697 commit f0679e5

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

algoliasearch/responses.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,17 @@ def _have_changed(self, api_key):
159159
valid_keys = (
160160
'acl', 'indexes', 'referers',
161161
'restrictSources', 'queryParameters', 'description',
162-
'validity', 'maxQueriesPerIPPerHour', 'maxHitsPerQuery',
162+
'maxQueriesPerIPPerHour', 'maxHitsPerQuery',
163163
)
164164

165165
body = self._request_options.data
166166

167-
return any([(valid_key in body and body[valid_key] == api_key.get(
168-
valid_key)) for valid_key in valid_keys])
167+
valid_key_exists = any([key in valid_keys for key in body.keys()])
168+
169+
return not valid_key_exists or any(
170+
[(valid_key in body and body[valid_key] == api_key.get(
171+
valid_key)) for valid_key in valid_keys]
172+
)
169173

170174
def __getitem__(self, key):
171175
# type:(str) -> Union[int, str, dict, list]

tests/unit/test_responses.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import mock
44

55
from algoliasearch.exceptions import RequestException
6+
from algoliasearch.http.request_options import RequestOptions
67
from algoliasearch.responses import (
78
IndexingResponse, MultipleResponse,
89
AddApiKeyResponse, UpdateApiKeyResponse,
@@ -61,3 +62,21 @@ def test_request_exception(self):
6162
with self.assertRaises(RequestException) as cm:
6263
self.client.add_api_key(['search']).wait()
6364
self.assertEqual(cm.exception.status_code, 300)
65+
66+
def test_update_api_key_response(self):
67+
request_options = RequestOptions({}, {}, {}, {
68+
'data': {'validity': 300}
69+
})
70+
response = UpdateApiKeyResponse({}, {}, request_options)
71+
self.assertTrue(response._have_changed({}))
72+
self.assertTrue(response._have_changed({'validity': 297}))
73+
74+
request_options.data = {'maxQueriesPerIPPerHour': 2}
75+
self.assertFalse(response._have_changed({}))
76+
self.assertFalse(response._have_changed({'maxQueriesPerIPPerHour': 1}))
77+
self.assertTrue(response._have_changed({'maxQueriesPerIPPerHour': 2}))
78+
79+
request_options.data = {'acl': ['search']}
80+
self.assertFalse(response._have_changed({}))
81+
self.assertFalse(response._have_changed({'acl': []}))
82+
self.assertTrue(response._have_changed({'acl': ['search']}))

0 commit comments

Comments
 (0)