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