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 |
|