Revision 257b931a kamaki/clients/test/cyclades.py

b/kamaki/clients/test/cyclades.py
73 73
        os="debian",
74 74
        root_partition="1",
75 75
        description="Debian 6.0.7 (Squeeze) Base System"))))
76
vm_list = dict(servers=dict(values=[
77
    dict(name='n1', id=1),
78
    dict(name='n2', id=2)]))
76 79

  
77 80

  
78 81
class Cyclades(TestCase):
79 82

  
80
    def assert_dicts_are_deeply_equal(self, d1, d2):
83
    def assert_dicts_are_equal(self, d1, d2):
81 84
        for k, v in d1.items():
82 85
            self.assertTrue(k in d2)
83 86
            if isinstance(v, dict):
84
                self.assert_dicts_are_deeply_equal(v, d2[k])
87
                self.assert_dicts_are_equal(v, d2[k])
85 88
            else:
86 89
                self.assertEqual(unicode(v), unicode(d2[k]))
87 90

  
......
106 109
        self.C = KamakiHTTPConnection
107 110

  
108 111
    def tearDown(self):
109
        pass
112
        self.FR.status_code = 200
110 113

  
111 114
    def test_create_server(self):
112 115
        self.client.get_image_details = Mock(return_value=img_recv['image'])
......
131 134
            self.assertEqual(self.client.http_client.url, self.url)
132 135
            self.assertEqual(self.client.http_client.path, '/servers')
133 136
            (method, data, a_headers, a_params) = perform_req.call_args[0]
134
            self.assert_dicts_are_deeply_equal(loads(data), vm_send)
135
            self.assert_dicts_are_deeply_equal(r, vm_recv['server'])
137
            self.assert_dicts_are_equal(loads(data), vm_send)
138
            self.assert_dicts_are_equal(r, vm_recv['server'])
136 139
            prsn = 'Personality string (does not work with real servers)'
137 140
            self.client.create_server(vm_name, fid, img_ref, prsn)
138 141
            (method, data, a_headers, a_params) = perform_req.call_args[0]
......
140 143
            self.assertTrue('personality' in data['server'])
141 144
            self.assertEqual(prsn, data['server']['personality'])
142 145

  
143
    """
144 146
    def test_list_servers(self):
147
        self.FR.json = vm_list
148
        with patch.object(
149
                self.C,
150
                'perform_request',
151
                return_value=self.FR()) as perform_req:
152
            r = self.client.list_servers()
153
            self.assertEqual(self.client.http_client.url, self.url)
154
            self.assertEqual(self.client.http_client.path, '/servers')
155
            (method, data, a_headers, a_params) = perform_req.call_args[0]
156
            self.assert_dicts_are_equal(dict(values=r), vm_list['servers'])
157
            r = self.client.list_servers(detail=True)
158
            self.assertEqual(self.client.http_client.url, self.url)
159
            self.assertEqual(self.client.http_client.path, '/servers/detail')
160
        from kamaki.clients.cyclades_rest_api import CycladesClientApi
161
        with patch.object(
162
                CycladesClientApi,
163
                'servers_get',
164
                return_value=self.FR()) as servers_get:
165
            self.client.list_servers(changes_since=True)
166
            self.assertTrue(servers_get.call_args[1]['changes_since'])
145 167

  
146
        servers = self.client.list_servers()
147
        dservers = self.client.list_servers(detail=True)
148

  
149
        ""detailed and simple are same size""
150
        self.assertEqual(len(dservers), len(servers))
151
        for i in range(len(servers)):
152
            for field in (
153
                    'created',
154
                    'flavorRef',
155
                    'hostId',
156
                    'imageRef',
157
                    'progress',
158
                    'status',
159
                    'updated'):
160
                self.assertFalse(field in servers[i])
161
                self.assertTrue(field in dservers[i])
162

  
163
        ""detailed and simple contain same names""
164
        names = sorted(map(lambda x: x["name"], servers))
165
        dnames = sorted(map(lambda x: x["name"], dservers))
166
        self.assertEqual(names, dnames)
167

  
168
    def _test_0030_wait_test_servers_to_build(self):
169
        self.server1 = self._create_server(
170
            self.servname1,
171
            self.flavorid,
172
            self.img)
173
        self._wait_for_status(self.server1['id'], 'BUILD')
174
        self._test_0040_get_server_details()
175

  
168
    """
176 169
    def _test_0040_get_server_details(self):
177 170
        self.server1 = self._create_server(
178 171
            self.servname1,
......
203 196
            'mymeta val')
204 197
        self.assertTrue('mymeta' in r1)
205 198
        r2 = self.client.get_server_metadata(self.server1['id'], 'mymeta')
206
        self.assert_dicts_are_deeply_equal(r1, r2)
199
        self.assert_dicts_are_equal(r1, r2)
207 200

  
208 201
    def test_get_server_metadata(self):
209 202
        self.client.create_server_metadata(
......
245 238

  
246 239
    def test_get_flavor_details(self):
247 240
        r = self.client.get_flavor_details(self.flavorid)
248
        self.assert_dicts_are_deeply_equal(self._flavor_details, r)
241
        self.assert_dicts_are_equal(self._flavor_details, r)
249 242

  
250 243
    def test_list_images(self):
251 244
        r = self.client.list_images()
......
254 247
        for detailed_img in r:
255 248
            if detailed_img['id'] == self.img:
256 249
                break
257
        self.assert_dicts_are_deeply_equal(detailed_img, self.img_details)
250
        self.assert_dicts_are_equal(detailed_img, self.img_details)
258 251

  
259 252
    def test_get_image_details(self):
260 253
        r = self.client.get_image_details(self.img)
261
        self.assert_dicts_are_deeply_equal(r, self.img_details)
254
        self.assert_dicts_are_equal(r, self.img_details)
262 255

  
263 256
    def test_get_image_metadata(self):
264 257
        r = self.client.get_image_metadata(self.img)
265
        self.assert_dicts_are_deeply_equal(
258
        self.assert_dicts_are_equal(
266 259
            self.img_details['metadata']['values'], r)
267 260
        for key, val in self.img_details['metadata']['values'].items():
268 261
            r = self.client.get_image_metadata(self.img, key)
......
339 332
        chosen.pop('updated')
340 333
        net1 = dict(self.network1)
341 334
        net1.pop('updated')
342
        self.assert_dicts_are_deeply_equal(chosen, net1)
335
        self.assert_dicts_are_equal(chosen, net1)
343 336
        for param, val in dict(
344 337
                cidr='192.168.0.0/24',
345 338
                gateway='192.168.0.1',
......
416 409
        r.pop('status')
417 410
        r.pop('updated', None)
418 411
        r.pop('attachments')
419
        self.assert_dicts_are_deeply_equal(net1, r)
412
        self.assert_dicts_are_equal(net1, r)
420 413

  
421 414
    def test_update_network_name(self):
422 415
        updated_name = self.netname2 + '_upd'

Also available in: Unified diff