-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathtest_proxy.py
More file actions
95 lines (69 loc) · 3.21 KB
/
Copy pathtest_proxy.py
File metadata and controls
95 lines (69 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from aiounittest import AsyncTestCase, futurized
from asyncopenstackclient.proxy import ResourceProxy, MethodProxy
from unittest.mock import Mock, patch
class MockClass:
def __init__(self, api='mock-api'):
self.api = api
def __getattr__(self, name):
return ResourceProxy(self.api, name)
class TestClient(AsyncTestCase):
def setUp(self):
super().setUp()
def tearDown(self):
patch.stopall()
def test_pass_arguments_resource_proxy(self):
res = ResourceProxy('mock-api', 'mock-resource')
self.assertEqual(res.api, 'mock-api')
self.assertEqual(res.resource_name, 'mock-resource')
self.assertIsInstance(res.not_existing_property, MethodProxy)
def test_resouce_proxy_return_method_proxy(self):
mock_method_proxy = patch('asyncopenstackclient.proxy.MethodProxy').start()
res = ResourceProxy('mock-api', 'mock-resource')
res.mock_method()
mock_method_proxy.assert_called_once_with('mock-api', 'mock-resource', 'mock_method')
def test_resource_proxy_from_mock_class(self):
mock_method_proxy = patch('asyncopenstackclient.proxy.MethodProxy').start()
obj = MockClass()
res = obj.servers.list()
mock_method_proxy.assert_called_once_with('mock-api', 'servers', 'list')
self.assertEqual(res, mock_method_proxy()())
def test_pass_arguments_method_proxy(self):
res = MethodProxy('mock-api', 'mock-resource', 'mock-method')
self.assertEqual(res.api, 'mock-api')
self.assertEqual(res.resource, 'mock-resource')
self.assertEqual(res.method, 'mock-method')
async def test_get_result_method_proxy(self):
res_mock = Mock()
res_mock.body = 'awesome_body'
awaitable = futurized(res_mock)
proxy = MethodProxy('api', 'resource', 'method')
result = await proxy.get_result(awaitable)
self.assertEqual(result, 'awesome_body')
async def test_call_method_proxy_with_query_params(self):
mock_args = ('a', 'b',)
mock_kwargs = {'k1': 'v1'}
mock_api = Mock()
mock_api.servers = Mock()
mock_api.servers.list = Mock()
mock_res = Mock()
mock_res.body = 'return_value'
mock_api.servers.list.return_value = futurized(mock_res)
mock_api.servers.actions = {'list': {'method': 'GET'}}
obj = MockClass(api=mock_api)
res = await obj.servers.list(*mock_args, **mock_kwargs)
self.assertEqual(res, 'return_value')
mock_api.servers.list.assert_called_once_with(*mock_args, params=mock_kwargs)
async def test_call_method_proxy_with_body(self):
mock_args = ('a', 'b',)
mock_kwargs = {'k1': 'v1'}
mock_api = Mock()
mock_api.servers = Mock()
mock_api.servers.create = Mock()
mock_res = Mock()
mock_res.body = 'return_value'
mock_api.servers.create.return_value = futurized(mock_res)
mock_api.servers.actions = {'create': {'method': 'POST'}}
obj = MockClass(api=mock_api)
res = await obj.servers.create(*mock_args, **mock_kwargs)
self.assertEqual(res, 'return_value')
mock_api.servers.create.assert_called_once_with(*mock_args, body=mock_kwargs)