Code Duplication    Length = 60-67 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1444-1510 (lines=67) @@
1441
        assert 409 == response.status_code
1442
        assert "Can't update archived EVC" in response.json()["description"]
1443
1444
    @patch("napps.kytos.mef_eline.main.Main._use_uni_tags")
1445
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1446
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1447
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1448
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
1449
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1450
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1451
    async def test_update_circuit_invalid_json(
1452
        self,
1453
        evc_as_dict_mock,
1454
        validate_mock,
1455
        mongo_controller_upsert_mock,
1456
        uni_from_dict_mock,
1457
        sched_add_mock,
1458
        evc_deploy_mock,
1459
        mock_use_uni_tags,
1460
        event_loop
1461
    ):
1462
        """Test update a circuit circuit."""
1463
        self.napp.controller.loop = event_loop
1464
        validate_mock.return_value = True
1465
        mongo_controller_upsert_mock.return_value = True
1466
        sched_add_mock.return_value = True
1467
        evc_deploy_mock.return_value = True
1468
        mock_use_uni_tags.return_value = True
1469
        uni1 = create_autospec(UNI)
1470
        uni2 = create_autospec(UNI)
1471
        uni1.interface = create_autospec(Interface)
1472
        uni2.interface = create_autospec(Interface)
1473
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1474
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1475
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1476
1477
        payload1 = {
1478
            "name": "my evc1",
1479
            "uni_a": {
1480
                "interface_id": "00:00:00:00:00:00:00:01:1",
1481
                "tag": {"tag_type": 'vlan', "value": 80},
1482
            },
1483
            "uni_z": {
1484
                "interface_id": "00:00:00:00:00:00:00:02:2",
1485
                "tag": {"tag_type": 'vlan', "value": 1},
1486
            },
1487
            "dynamic_backup_path": True,
1488
        }
1489
1490
        payload2 = {
1491
            "dynamic_backup_path": False,
1492
        }
1493
1494
        evc_as_dict_mock.return_value = payload1
1495
        response = await self.api_client.post(
1496
            f"{self.base_endpoint}/v2/evc/",
1497
            json=payload1
1498
        )
1499
        assert 201 == response.status_code
1500
1501
        evc_as_dict_mock.return_value = payload2
1502
        current_data = response.json()
1503
        circuit_id = current_data["circuit_id"]
1504
        response = await self.api_client.patch(
1505
            f"{self.base_endpoint}/v2/evc/{circuit_id}",
1506
            json=payload2
1507
        )
1508
        current_data = response.json()
1509
        assert 400 == response.status_code
1510
        assert "must have a primary path or" in current_data["description"]
1511
1512
    @patch("napps.kytos.mef_eline.main.Main._use_uni_tags")
1513
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
@@ 1684-1743 (lines=60) @@
1681
        with pytest.raises(ValueError):
1682
            self.napp._uni_from_dict(uni_dict)
1683
1684
    @patch("napps.kytos.mef_eline.main.Main._use_uni_tags")
1685
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1686
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1687
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1688
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1689
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
1690
    async def test_update_evc_no_json_mime(
1691
        self,
1692
        mongo_controller_upsert_mock,
1693
        validate_mock,
1694
        uni_from_dict_mock,
1695
        sched_add_mock,
1696
        evc_deploy_mock,
1697
        mock_use_uni_tags,
1698
        event_loop
1699
    ):
1700
        """Test update a circuit with wrong mimetype."""
1701
        self.napp.controller.loop = event_loop
1702
        validate_mock.return_value = True
1703
        sched_add_mock.return_value = True
1704
        evc_deploy_mock.return_value = True
1705
        mock_use_uni_tags.return_value = True
1706
        uni1 = create_autospec(UNI)
1707
        uni2 = create_autospec(UNI)
1708
        uni1.interface = create_autospec(Interface)
1709
        uni2.interface = create_autospec(Interface)
1710
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1711
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1712
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1713
        mongo_controller_upsert_mock.return_value = True
1714
1715
        payload1 = {
1716
            "name": "my evc1",
1717
            "uni_a": {
1718
                "interface_id": "00:00:00:00:00:00:00:01:1",
1719
                "tag": {"tag_type": 'vlan', "value": 80},
1720
            },
1721
            "uni_z": {
1722
                "interface_id": "00:00:00:00:00:00:00:02:2",
1723
                "tag": {"tag_type": 'vlan', "value": 1},
1724
            },
1725
            "dynamic_backup_path": True,
1726
        }
1727
1728
        payload2 = {"dynamic_backup_path": False}
1729
1730
        response = await self.api_client.post(
1731
            f"{self.base_endpoint}/v2/evc/",
1732
            json=payload1,
1733
        )
1734
        assert 201 == response.status_code
1735
1736
        current_data = response.json()
1737
        circuit_id = current_data["circuit_id"]
1738
        response = await self.api_client.patch(
1739
            f"{self.base_endpoint}/v2/evc/{circuit_id}", data=payload2
1740
        )
1741
        current_data = response.json()
1742
        assert 415 == response.status_code
1743
        assert "application/json" in current_data["description"]
1744
1745
    async def test_delete_no_evc(self):
1746
        """Test delete when EVC does not exist."""