Code Duplication    Length = 65-72 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1448-1519 (lines=72) @@
1445
        assert 200 == response.status_code
1446
        evc_deploy.assert_called_once()
1447
1448
    @patch("napps.kytos.mef_eline.main.Main._check_no_tag_duplication")
1449
    @patch("napps.kytos.mef_eline.models.evc.EVC._tag_lists_equal")
1450
    @patch("napps.kytos.mef_eline.main.Main._use_uni_tags")
1451
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1452
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1453
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1454
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
1455
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1456
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1457
    async def test_update_circuit_invalid_json(
1458
        self,
1459
        evc_as_dict_mock,
1460
        validate_mock,
1461
        mongo_controller_upsert_mock,
1462
        uni_from_dict_mock,
1463
        sched_add_mock,
1464
        evc_deploy_mock,
1465
        mock_use_uni_tags,
1466
        mock_tags_equal,
1467
        mock_check_duplicate
1468
    ):
1469
        """Test update a circuit circuit."""
1470
        self.napp.controller.loop = asyncio.get_running_loop()
1471
        validate_mock.return_value = True
1472
        mongo_controller_upsert_mock.return_value = True
1473
        sched_add_mock.return_value = True
1474
        evc_deploy_mock.return_value = True
1475
        mock_use_uni_tags.return_value = True
1476
        mock_tags_equal.return_value = True
1477
        mock_check_duplicate.return_value = True
1478
        uni1 = create_autospec(UNI)
1479
        uni2 = create_autospec(UNI)
1480
        uni1.interface = create_autospec(Interface)
1481
        uni2.interface = create_autospec(Interface)
1482
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1483
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1484
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1485
1486
        payload1 = {
1487
            "name": "my evc1",
1488
            "uni_a": {
1489
                "interface_id": "00:00:00:00:00:00:00:01:1",
1490
                "tag": {"tag_type": 'vlan', "value": 80},
1491
            },
1492
            "uni_z": {
1493
                "interface_id": "00:00:00:00:00:00:00:02:2",
1494
                "tag": {"tag_type": 'vlan', "value": 1},
1495
            },
1496
            "dynamic_backup_path": True,
1497
        }
1498
1499
        payload2 = {
1500
            "dynamic_backup_path": False,
1501
        }
1502
1503
        evc_as_dict_mock.return_value = payload1
1504
        response = await self.api_client.post(
1505
            f"{self.base_endpoint}/v2/evc/",
1506
            json=payload1
1507
        )
1508
        assert 201 == response.status_code
1509
1510
        evc_as_dict_mock.return_value = payload2
1511
        current_data = response.json()
1512
        circuit_id = current_data["circuit_id"]
1513
        response = await self.api_client.patch(
1514
            f"{self.base_endpoint}/v2/evc/{circuit_id}",
1515
            json=payload2
1516
        )
1517
        current_data = response.json()
1518
        assert 400 == response.status_code
1519
        assert "must have a primary path or" in current_data["description"]
1520
1521
    @patch("napps.kytos.mef_eline.main.Main._check_no_tag_duplication")
1522
    @patch("napps.kytos.mef_eline.models.evc.EVC._tag_lists_equal")
@@ 1697-1761 (lines=65) @@
1694
        with pytest.raises(ValueError):
1695
            self.napp._uni_from_dict(uni_dict)
1696
1697
    @patch("napps.kytos.mef_eline.main.Main._check_no_tag_duplication")
1698
    @patch("napps.kytos.mef_eline.models.evc.EVC._tag_lists_equal")
1699
    @patch("napps.kytos.mef_eline.main.Main._use_uni_tags")
1700
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1701
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1702
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1703
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1704
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
1705
    async def test_update_evc_no_json_mime(
1706
        self,
1707
        mongo_controller_upsert_mock,
1708
        validate_mock,
1709
        uni_from_dict_mock,
1710
        sched_add_mock,
1711
        evc_deploy_mock,
1712
        mock_use_uni_tags,
1713
        mock_tags_equal,
1714
        mock_check_duplicate
1715
    ):
1716
        """Test update a circuit with wrong mimetype."""
1717
        self.napp.controller.loop = asyncio.get_running_loop()
1718
        validate_mock.return_value = True
1719
        sched_add_mock.return_value = True
1720
        evc_deploy_mock.return_value = True
1721
        mock_use_uni_tags.return_value = True
1722
        mock_tags_equal.return_value = True
1723
        mock_check_duplicate.return_value = True
1724
        uni1 = create_autospec(UNI)
1725
        uni2 = create_autospec(UNI)
1726
        uni1.interface = create_autospec(Interface)
1727
        uni2.interface = create_autospec(Interface)
1728
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1729
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1730
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1731
        mongo_controller_upsert_mock.return_value = True
1732
1733
        payload1 = {
1734
            "name": "my evc1",
1735
            "uni_a": {
1736
                "interface_id": "00:00:00:00:00:00:00:01:1",
1737
                "tag": {"tag_type": 'vlan', "value": 80},
1738
            },
1739
            "uni_z": {
1740
                "interface_id": "00:00:00:00:00:00:00:02:2",
1741
                "tag": {"tag_type": 'vlan', "value": 1},
1742
            },
1743
            "dynamic_backup_path": True,
1744
        }
1745
1746
        payload2 = {"dynamic_backup_path": False}
1747
1748
        response = await self.api_client.post(
1749
            f"{self.base_endpoint}/v2/evc/",
1750
            json=payload1,
1751
        )
1752
        assert 201 == response.status_code
1753
1754
        current_data = response.json()
1755
        circuit_id = current_data["circuit_id"]
1756
        response = await self.api_client.patch(
1757
            f"{self.base_endpoint}/v2/evc/{circuit_id}", data=payload2
1758
        )
1759
        current_data = response.json()
1760
        assert 415 == response.status_code
1761
        assert "application/json" in current_data["description"]
1762
1763
    @patch("napps.kytos.mef_eline.main.log")
1764
    @patch("napps.kytos.mef_eline.main.Main._evc_dict_with_instances")