Revision 6a6175c0 kamaki/clients/test.py
b/kamaki/clients/test.py | ||
---|---|---|
150 | 150 |
self.assertFalse(t.exception) |
151 | 151 |
|
152 | 152 |
|
153 |
class FR(object): |
|
154 |
json = None |
|
155 |
text = None |
|
156 |
headers = dict() |
|
157 |
content = json |
|
158 |
status = None |
|
159 |
status_code = 200 |
|
160 |
|
|
161 |
def release(self): |
|
162 |
pass |
|
163 |
|
|
164 |
|
|
153 | 165 |
class FakeConnection(object): |
154 | 166 |
"""A fake Connection class""" |
155 | 167 |
|
168 |
headers = dict() |
|
169 |
params = dict() |
|
170 |
|
|
156 | 171 |
def __init__(self): |
157 | 172 |
pass |
158 | 173 |
|
159 | 174 |
def set_header(self, name, value): |
160 | 175 |
pass |
161 | 176 |
|
162 |
def set_param(self, name, value): |
|
163 |
pass |
|
164 |
|
|
177 |
def reset_headers(self): |
|
178 |
self.headers = {} |
|
165 | 179 |
|
166 |
class FR(object): |
|
167 |
json = None |
|
168 |
text = None |
|
169 |
headers = {} |
|
170 |
content = json |
|
171 |
status = None |
|
172 |
status_code = 200 |
|
180 |
def set_param(self, name, value): |
|
181 |
self.params = {} |
|
173 | 182 |
|
174 |
def release(self):
|
|
183 |
def reset_params(self):
|
|
175 | 184 |
pass |
176 | 185 |
|
186 |
def perform_request(self, *args): |
|
187 |
return FR() |
|
188 |
|
|
177 | 189 |
|
178 | 190 |
class Client(TestCase): |
179 | 191 |
|
... | ... | |
197 | 209 |
FR.text = None |
198 | 210 |
FR.status = None |
199 | 211 |
FR.status_code = 200 |
212 |
FakeConnection.headers = dict() |
|
213 |
self.client.token = self.token |
|
200 | 214 |
|
201 | 215 |
def test___init__(self): |
202 | 216 |
self.assertEqual(self.client.base_url, self.base_url) |
... | ... | |
299 | 313 |
else: |
300 | 314 |
self.assertEqual(num_of_calls, len(SP.mock_calls)) |
301 | 315 |
|
316 |
@patch('%s.FakeConnection.perform_request' % __name__, return_value=FR()) |
|
317 |
def test_request(self, PR): |
|
318 |
for args in product( |
|
319 |
('get', '', dict(method='get')), |
|
320 |
('/some/path', None, ['some', 'path']), |
|
321 |
(dict(), dict(h1='v1'), dict(h1='v2', h2='v2')), |
|
322 |
(dict(), dict(p1='v1'), dict(p1='v2', p2=None, p3='v3')), |
|
323 |
(dict(), dict(data='some data'), dict( |
|
324 |
success=400, |
|
325 |
json=dict(k2='v2', k1='v1')))): |
|
326 |
method, path, kwargs = args[0], args[1], args[-1] |
|
327 |
args = args[:-1] |
|
328 |
if not (isinstance(method, str) and method and isinstance( |
|
329 |
path, str) and path): |
|
330 |
self.assertRaises( |
|
331 |
AssertionError, |
|
332 |
self.client.request, |
|
333 |
*args, **kwargs) |
|
334 |
else: |
|
335 |
atoken = 'a70k3n_%s' % randint(1, 30) |
|
336 |
self.client.token = atoken |
|
337 |
if 'success' in kwargs: |
|
338 |
self.assertRaises( |
|
339 |
self.CE, |
|
340 |
self.client.request, |
|
341 |
*args, **kwargs) |
|
342 |
FR.status_code = kwargs['success'] |
|
343 |
else: |
|
344 |
FR.status_code = 200 |
|
345 |
self.client.request(*args, **kwargs) |
|
346 |
data = kwargs.get( |
|
347 |
'data', |
|
348 |
'{"k2": "v2", "k1": "v1"}' if 'json' in kwargs else None) |
|
349 |
self.assertEqual(self.client.http_client.url, self.base_url) |
|
350 |
self.assertEqual(self.client.http_client.path, path) |
|
351 |
self.assertEqual( |
|
352 |
PR.mock_calls[-1], |
|
353 |
call(method, data, *args[2:])) |
|
354 |
self.assertEqual(self.client.http_client.headers, dict()) |
|
355 |
self.assertEqual(self.client.http_client.params, dict()) |
|
356 |
|
|
357 |
@patch('kamaki.clients.Client.request', return_value='lala') |
|
358 |
def _test_foo(self, foo, request): |
|
359 |
method = getattr(self.client, foo) |
|
360 |
r = method('path', k='v') |
|
361 |
self.assertEqual(r, 'lala') |
|
362 |
request.assert_called_once_with(foo, 'path', k='v') |
|
363 |
|
|
364 |
def test_delete(self): |
|
365 |
self._test_foo('delete') |
|
366 |
|
|
367 |
def test_get(self): |
|
368 |
self._test_foo('get') |
|
369 |
|
|
370 |
def test_head(self): |
|
371 |
self._test_foo('head') |
|
372 |
|
|
373 |
def test_post(self): |
|
374 |
self._test_foo('post') |
|
375 |
|
|
376 |
def test_put(self): |
|
377 |
self._test_foo('put') |
|
378 |
|
|
379 |
def test_copy(self): |
|
380 |
self._test_foo('copy') |
|
381 |
|
|
382 |
def test_move(self): |
|
383 |
self._test_foo('move') |
|
384 |
|
|
302 | 385 |
|
303 | 386 |
# TestCase auxiliary methods |
304 | 387 |
|
Also available in: Unified diff