Code Duplication    Length = 60-68 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1524-1591 (lines=68) @@
1521
        evc_deploy.assert_not_called()
1522
        self.assertEqual(405, response.status_code)
1523
1524
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1525
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1526
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1527
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
1528
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1529
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1530
    def test_update_circuit_invalid_json(self, *args):
1531
        """Test update a circuit circuit."""
1532
        # pylint: disable=too-many-locals
1533
        (
1534
            evc_as_dict_mock,
1535
            validate_mock,
1536
            mongo_controller_upsert_mock,
1537
            uni_from_dict_mock,
1538
            sched_add_mock,
1539
            evc_deploy_mock,
1540
        ) = args
1541
1542
        validate_mock.return_value = True
1543
        mongo_controller_upsert_mock.return_value = True
1544
        sched_add_mock.return_value = True
1545
        evc_deploy_mock.return_value = True
1546
        uni1 = create_autospec(UNI)
1547
        uni2 = create_autospec(UNI)
1548
        uni1.interface = create_autospec(Interface)
1549
        uni2.interface = create_autospec(Interface)
1550
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1551
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1552
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1553
1554
        api = self.get_app_test_client(self.napp)
1555
        payload1 = {
1556
            "name": "my evc1",
1557
            "uni_a": {
1558
                "interface_id": "00:00:00:00:00:00:00:01:1",
1559
                "tag": {"tag_type": 1, "value": 80},
1560
            },
1561
            "uni_z": {
1562
                "interface_id": "00:00:00:00:00:00:00:02:2",
1563
                "tag": {"tag_type": 1, "value": 1},
1564
            },
1565
            "dynamic_backup_path": True,
1566
        }
1567
1568
        payload2 = {
1569
            "dynamic_backup_path": False,
1570
        }
1571
1572
        evc_as_dict_mock.return_value = payload1
1573
        response = api.post(
1574
            f"{self.server_name_url}/v2/evc/",
1575
            data=json.dumps(payload1),
1576
            content_type="application/json",
1577
        )
1578
        self.assertEqual(201, response.status_code)
1579
1580
        evc_as_dict_mock.return_value = payload2
1581
        current_data = json.loads(response.data)
1582
        circuit_id = current_data["circuit_id"]
1583
        response = api.patch(
1584
            f"{self.server_name_url}/v2/evc/{circuit_id}",
1585
            data=payload2,
1586
            content_type="application/json",
1587
        )
1588
        current_data = json.loads(response.data)
1589
        expected_data = "The request body is not a well-formed JSON."
1590
        self.assertEqual(current_data["description"], expected_data)
1591
        self.assertEqual(400, response.status_code)
1592
1593
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1594
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
@@ 1673-1732 (lines=60) @@
1670
        self.assertEqual(400, response.status_code)
1671
        self.assertEqual(current_data["description"], expected_data)
1672
1673
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1674
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1675
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1676
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1677
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
1678
    def test_update_evc_no_json_mime(self, *args):
1679
        """Test update a circuit with wrong mimetype."""
1680
        # pylint: disable=too-many-locals
1681
        (
1682
            mongo_controller_upsert_mock,
1683
            validate_mock,
1684
            uni_from_dict_mock,
1685
            sched_add_mock,
1686
            evc_deploy_mock,
1687
        ) = args
1688
1689
        validate_mock.return_value = True
1690
        sched_add_mock.return_value = True
1691
        evc_deploy_mock.return_value = True
1692
        uni1 = create_autospec(UNI)
1693
        uni2 = create_autospec(UNI)
1694
        uni1.interface = create_autospec(Interface)
1695
        uni2.interface = create_autospec(Interface)
1696
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1697
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1698
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1699
        mongo_controller_upsert_mock.return_value = True
1700
1701
        api = self.get_app_test_client(self.napp)
1702
        payload1 = {
1703
            "name": "my evc1",
1704
            "uni_a": {
1705
                "interface_id": "00:00:00:00:00:00:00:01:1",
1706
                "tag": {"tag_type": 1, "value": 80},
1707
            },
1708
            "uni_z": {
1709
                "interface_id": "00:00:00:00:00:00:00:02:2",
1710
                "tag": {"tag_type": 1, "value": 1},
1711
            },
1712
            "dynamic_backup_path": True,
1713
        }
1714
1715
        payload2 = {"dynamic_backup_path": False}
1716
1717
        response = api.post(
1718
            f"{self.server_name_url}/v2/evc/",
1719
            data=json.dumps(payload1),
1720
            content_type="application/json",
1721
        )
1722
        self.assertEqual(201, response.status_code)
1723
1724
        current_data = json.loads(response.data)
1725
        circuit_id = current_data["circuit_id"]
1726
        response = api.patch(
1727
            f"{self.server_name_url}/v2/evc/{circuit_id}", data=payload2
1728
        )
1729
        current_data = json.loads(response.data)
1730
        expected_data = "The request body mimetype is not application/json."
1731
        self.assertEqual(current_data["description"], expected_data)
1732
        self.assertEqual(415, response.status_code)
1733
1734
    def test_delete_no_evc(self):
1735
        """Test delete when EVC does not exist."""