Code Duplication    Length = 63-64 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1403-1466 (lines=64) @@
1400
        evc_deploy.assert_not_called()
1401
        self.assertEqual(405, response.status_code)
1402
1403
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1404
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1405
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1406
    @patch("napps.kytos.mef_eline.storehouse.StoreHouse.save_evc")
1407
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1408
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1409
    def test_update_circuit_invalid_json(self, *args):
1410
        """Test update a circuit circuit."""
1411
        # pylint: disable=too-many-locals
1412
        (
1413
            evc_as_dict_mock,
1414
            validate_mock,
1415
            save_evc_mock,
1416
            uni_from_dict_mock,
1417
            sched_add_mock,
1418
            evc_deploy_mock,
1419
        ) = args
1420
1421
        validate_mock.return_value = True
1422
        save_evc_mock.return_value = True
1423
        sched_add_mock.return_value = True
1424
        evc_deploy_mock.return_value = True
1425
        uni1 = create_autospec(UNI)
1426
        uni2 = create_autospec(UNI)
1427
        uni1.interface = create_autospec(Interface)
1428
        uni2.interface = create_autospec(Interface)
1429
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1430
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1431
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1432
1433
        api = self.get_app_test_client(self.napp)
1434
        payload1 = {
1435
            "name": "my evc1",
1436
            "uni_a": {
1437
                "interface_id": "00:00:00:00:00:00:00:01:1",
1438
                "tag": {"tag_type": 1, "value": 80},
1439
            },
1440
            "uni_z": {
1441
                "interface_id": "00:00:00:00:00:00:00:02:2",
1442
                "tag": {"tag_type": 1, "value": 1},
1443
            },
1444
            "dynamic_backup_path": True,
1445
        }
1446
1447
        payload2 = {
1448
            "dynamic_backup_path": False,
1449
        }
1450
1451
        evc_as_dict_mock.return_value = payload1
1452
        response = api.post(
1453
            f"{self.server_name_url}/v2/evc/",
1454
            data=json.dumps(payload1),
1455
            content_type="application/json",
1456
        )
1457
        self.assertEqual(201, response.status_code)
1458
1459
        evc_as_dict_mock.return_value = payload2
1460
        current_data = json.loads(response.data)
1461
        circuit_id = current_data["circuit_id"]
1462
        response = api.patch(
1463
            f"{self.server_name_url}/v2/evc/{circuit_id}",
1464
            data=payload2,
1465
            content_type="application/json",
1466
        )
1467
        current_data = json.loads(response.data)
1468
        expected_data = "The request body is not a well-formed JSON."
1469
        self.assertEqual(current_data["description"], expected_data)
@@ 1552-1614 (lines=63) @@
1549
        self.assertEqual(400, response.status_code)
1550
        self.assertEqual(current_data["description"], expected_data)
1551
1552
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1553
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1554
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1555
    @patch("napps.kytos.mef_eline.storehouse.StoreHouse.save_evc")
1556
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1557
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1558
    def test_update_evc_no_json_mime(self, *args):
1559
        """Test update a circuit with wrong mimetype."""
1560
        # pylint: disable=too-many-locals
1561
        (
1562
            evc_as_dict_mock,
1563
            validate_mock,
1564
            save_evc_mock,
1565
            uni_from_dict_mock,
1566
            sched_add_mock,
1567
            evc_deploy_mock,
1568
        ) = args
1569
1570
        validate_mock.return_value = True
1571
        save_evc_mock.return_value = True
1572
        sched_add_mock.return_value = True
1573
        evc_deploy_mock.return_value = True
1574
        uni1 = create_autospec(UNI)
1575
        uni2 = create_autospec(UNI)
1576
        uni1.interface = create_autospec(Interface)
1577
        uni2.interface = create_autospec(Interface)
1578
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1579
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1580
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1581
1582
        api = self.get_app_test_client(self.napp)
1583
        payload1 = {
1584
            "name": "my evc1",
1585
            "uni_a": {
1586
                "interface_id": "00:00:00:00:00:00:00:01:1",
1587
                "tag": {"tag_type": 1, "value": 80},
1588
            },
1589
            "uni_z": {
1590
                "interface_id": "00:00:00:00:00:00:00:02:2",
1591
                "tag": {"tag_type": 1, "value": 1},
1592
            },
1593
            "dynamic_backup_path": True,
1594
        }
1595
1596
        payload2 = {"dynamic_backup_path": False}
1597
1598
        evc_as_dict_mock.return_value = payload1
1599
        response = api.post(
1600
            f"{self.server_name_url}/v2/evc/",
1601
            data=json.dumps(payload1),
1602
            content_type="application/json",
1603
        )
1604
        self.assertEqual(201, response.status_code)
1605
1606
        evc_as_dict_mock.return_value = payload2
1607
        current_data = json.loads(response.data)
1608
        circuit_id = current_data["circuit_id"]
1609
        response = api.patch(
1610
            f"{self.server_name_url}/v2/evc/{circuit_id}", data=payload2
1611
        )
1612
        current_data = json.loads(response.data)
1613
        expected_data = "The request body mimetype is not application/json."
1614
        self.assertEqual(current_data["description"], expected_data)
1615
        self.assertEqual(415, response.status_code)
1616
1617
    def test_delete_no_evc(self):