Revision 69c8d65d snf-cyclades-app/synnefo/api/tests/ports.py

b/snf-cyclades-app/synnefo/api/tests/ports.py
240 240
                                 user=vm.userid)
241 241
        self.assertEqual(response.status_code, 201)
242 242

  
243
    @patch("synnefo.db.models.get_rapi_client")
244
    def test_create_port_with_address(self, mrapi):
245
        """Test creation if IP address is specified."""
246
        mrapi().ModifyInstance.return_value = 42
247
        vm = dbmf.VirtualMachineFactory()
248
        net = dbmf.NetworkWithSubnetFactory(userid=vm.userid,
249
                                            public=False,
250
                                            subnet__cidr="192.168.2.0/24",
251
                                            subnet__pool__size=1,
252
                                            subnet__pool__offset=1)
253
        request = {
254
            "port": {
255
                "name": "port_with_address",
256
                "network_id": str(net.id),
257
                "device_id": str(vm.id),
258
                "fixed_ips": [{"ip_address": "192.168.2.1"}]
259
            }
260
        }
261
        with override_settings(settings, GANETI_USE_HOTPLUG=True):
262
            response = self.post(PORTS_URL, params=json.dumps(request),
263
                                 user=vm.userid)
264
        self.assertEqual(response.status_code, 201)
265
        new_port_ip = json.loads(response.content)["port"]["fixed_ips"][0]
266
        self.assertEqual(new_port_ip["ip_address"], "192.168.2.1")
267

  
268
        # But 409 if address is already used
269
        with override_settings(settings, GANETI_USE_HOTPLUG=True):
270
            response = self.post(PORTS_URL, params=json.dumps(request),
271
                                 user=vm.userid)
272
        self.assertConflict(response)
273

  
274
        # And bad request if IPv6 address is specified
275
        request["port"]["fixed_ips"][0]["ip_address"] = "babe::"
276
        with override_settings(settings, GANETI_USE_HOTPLUG=True):
277
            response = self.post(PORTS_URL, params=json.dumps(request),
278
                                 user=vm.userid)
279
        self.assertBadRequest(response)
280

  
243 281
    def test_add_nic_to_deleted_network(self):
244 282
        user = 'userr'
245 283
        vm = dbmf.VirtualMachineFactory(name='yo', userid=user,

Also available in: Unified diff