Code Duplication    Length = 63-64 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1365-1428 (lines=64) @@
1362
        evc_deploy.assert_not_called()
1363
        self.assertEqual(405, response.status_code)
1364
1365
    @patch('napps.kytos.mef_eline.models.evc.EVC.deploy')
1366
    @patch('napps.kytos.mef_eline.scheduler.Scheduler.add')
1367
    @patch('napps.kytos.mef_eline.main.Main._uni_from_dict')
1368
    @patch('napps.kytos.mef_eline.storehouse.StoreHouse.save_evc')
1369
    @patch('napps.kytos.mef_eline.models.evc.EVC._validate')
1370
    @patch('napps.kytos.mef_eline.main.EVC.as_dict')
1371
    def test_update_circuit_invalid_json(self, *args):
1372
        """Test update a circuit circuit."""
1373
        # pylint: disable=too-many-locals
1374
        (evc_as_dict_mock, validate_mock, save_evc_mock,
1375
         uni_from_dict_mock, sched_add_mock, evc_deploy_mock) = args
1376
1377
        validate_mock.return_value = True
1378
        save_evc_mock.return_value = True
1379
        sched_add_mock.return_value = True
1380
        evc_deploy_mock.return_value = True
1381
        uni1 = create_autospec(UNI)
1382
        uni2 = create_autospec(UNI)
1383
        uni1.interface = create_autospec(Interface)
1384
        uni2.interface = create_autospec(Interface)
1385
        uni1.interface.switch = '00:00:00:00:00:00:00:01'
1386
        uni2.interface.switch = '00:00:00:00:00:00:00:02'
1387
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1388
1389
        api = self.get_app_test_client(self.napp)
1390
        payload1 = {
1391
            "name": "my evc1",
1392
            "uni_a": {
1393
                "interface_id": "00:00:00:00:00:00:00:01:1",
1394
                "tag": {
1395
                    "tag_type": 1,
1396
                    "value": 80
1397
                }
1398
            },
1399
            "uni_z": {
1400
                "interface_id": "00:00:00:00:00:00:00:02:2",
1401
                "tag": {
1402
                    "tag_type": 1,
1403
                    "value": 1
1404
                }
1405
            },
1406
            "dynamic_backup_path": True
1407
        }
1408
1409
        payload2 = {
1410
            "dynamic_backup_path": False,
1411
        }
1412
1413
        evc_as_dict_mock.return_value = payload1
1414
        response = api.post(f'{self.server_name_url}/v2/evc/',
1415
                            data=json.dumps(payload1),
1416
                            content_type='application/json')
1417
        self.assertEqual(201, response.status_code)
1418
1419
        evc_as_dict_mock.return_value = payload2
1420
        current_data = json.loads(response.data)
1421
        circuit_id = current_data['circuit_id']
1422
        response = api.patch(f'{self.server_name_url}/v2/evc/{circuit_id}',
1423
                             data=payload2,
1424
                             content_type='application/json')
1425
        current_data = json.loads(response.data)
1426
        expected_data = 'The request body is not a well-formed JSON.'
1427
        self.assertEqual(current_data['description'], expected_data)
1428
        self.assertEqual(400, response.status_code)
1429
1430
    @patch('napps.kytos.mef_eline.models.evc.EVC.deploy')
1431
    @patch('napps.kytos.mef_eline.scheduler.Scheduler.add')
@@ 1505-1567 (lines=63) @@
1502
        self.assertEqual(400, response.status_code)
1503
        self.assertEqual(current_data['description'], expected_data)
1504
1505
    @patch('napps.kytos.mef_eline.models.evc.EVC.deploy')
1506
    @patch('napps.kytos.mef_eline.scheduler.Scheduler.add')
1507
    @patch('napps.kytos.mef_eline.main.Main._uni_from_dict')
1508
    @patch('napps.kytos.mef_eline.storehouse.StoreHouse.save_evc')
1509
    @patch('napps.kytos.mef_eline.models.evc.EVC._validate')
1510
    @patch('napps.kytos.mef_eline.main.EVC.as_dict')
1511
    def test_update_evc_no_json_mime(self, *args):
1512
        """Test update a circuit with wrong mimetype."""
1513
        # pylint: disable=too-many-locals
1514
        (evc_as_dict_mock, validate_mock, save_evc_mock,
1515
         uni_from_dict_mock, sched_add_mock, evc_deploy_mock) = args
1516
1517
        validate_mock.return_value = True
1518
        save_evc_mock.return_value = True
1519
        sched_add_mock.return_value = True
1520
        evc_deploy_mock.return_value = True
1521
        uni1 = create_autospec(UNI)
1522
        uni2 = create_autospec(UNI)
1523
        uni1.interface = create_autospec(Interface)
1524
        uni2.interface = create_autospec(Interface)
1525
        uni1.interface.switch = '00:00:00:00:00:00:00:01'
1526
        uni2.interface.switch = '00:00:00:00:00:00:00:02'
1527
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1528
1529
        api = self.get_app_test_client(self.napp)
1530
        payload1 = {
1531
            "name": "my evc1",
1532
            "uni_a": {
1533
                "interface_id": "00:00:00:00:00:00:00:01:1",
1534
                "tag": {
1535
                    "tag_type": 1,
1536
                    "value": 80
1537
                }
1538
            },
1539
            "uni_z": {
1540
                "interface_id": "00:00:00:00:00:00:00:02:2",
1541
                "tag": {
1542
                    "tag_type": 1,
1543
                    "value": 1
1544
                }
1545
            },
1546
            "dynamic_backup_path": True
1547
        }
1548
1549
        payload2 = {
1550
            "dynamic_backup_path": False
1551
        }
1552
1553
        evc_as_dict_mock.return_value = payload1
1554
        response = api.post(f'{self.server_name_url}/v2/evc/',
1555
                            data=json.dumps(payload1),
1556
                            content_type='application/json')
1557
        self.assertEqual(201, response.status_code)
1558
1559
        evc_as_dict_mock.return_value = payload2
1560
        current_data = json.loads(response.data)
1561
        circuit_id = current_data['circuit_id']
1562
        response = api.patch(f'{self.server_name_url}/v2/evc/{circuit_id}',
1563
                             data=payload2)
1564
        current_data = json.loads(response.data)
1565
        expected_data = 'The request body mimetype is not application/json.'
1566
        self.assertEqual(current_data['description'], expected_data)
1567
        self.assertEqual(415, response.status_code)
1568
1569
    def test_delete_no_evc(self):
1570
        """Test delete when EVC does not exist."""