@@ 1592-1663 (lines=72) @@ | ||
1589 | assert 200 == response.status_code |
|
1590 | evc_deploy.assert_called_once() |
|
1591 | ||
1592 | @patch("napps.kytos.mef_eline.main.Main._check_no_tag_duplication") |
|
1593 | @patch("napps.kytos.mef_eline.models.evc.EVC._tag_lists_equal") |
|
1594 | @patch("napps.kytos.mef_eline.main.Main._use_uni_tags") |
|
1595 | @patch("napps.kytos.mef_eline.models.evc.EVC.deploy") |
|
1596 | @patch("napps.kytos.mef_eline.scheduler.Scheduler.add") |
|
1597 | @patch("napps.kytos.mef_eline.main.Main._uni_from_dict") |
|
1598 | @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc") |
|
1599 | @patch("napps.kytos.mef_eline.models.evc.EVC._validate") |
|
1600 | @patch("napps.kytos.mef_eline.main.EVC.as_dict") |
|
1601 | async def test_update_circuit_invalid_json( |
|
1602 | self, |
|
1603 | evc_as_dict_mock, |
|
1604 | validate_mock, |
|
1605 | mongo_controller_upsert_mock, |
|
1606 | uni_from_dict_mock, |
|
1607 | sched_add_mock, |
|
1608 | evc_deploy_mock, |
|
1609 | mock_use_uni_tags, |
|
1610 | mock_tags_equal, |
|
1611 | mock_check_duplicate |
|
1612 | ): |
|
1613 | """Test update a circuit circuit.""" |
|
1614 | self.napp.controller.loop = asyncio.get_running_loop() |
|
1615 | validate_mock.return_value = True |
|
1616 | mongo_controller_upsert_mock.return_value = True |
|
1617 | sched_add_mock.return_value = True |
|
1618 | evc_deploy_mock.return_value = True |
|
1619 | mock_use_uni_tags.return_value = True |
|
1620 | mock_tags_equal.return_value = True |
|
1621 | mock_check_duplicate.return_value = True |
|
1622 | uni1 = create_autospec(UNI) |
|
1623 | uni2 = create_autospec(UNI) |
|
1624 | uni1.interface = create_autospec(Interface) |
|
1625 | uni2.interface = create_autospec(Interface) |
|
1626 | uni1.interface.switch = "00:00:00:00:00:00:00:01" |
|
1627 | uni2.interface.switch = "00:00:00:00:00:00:00:02" |
|
1628 | uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2] |
|
1629 | ||
1630 | payload1 = { |
|
1631 | "name": "my evc1", |
|
1632 | "uni_a": { |
|
1633 | "interface_id": "00:00:00:00:00:00:00:01:1", |
|
1634 | "tag": {"tag_type": 'vlan', "value": 80}, |
|
1635 | }, |
|
1636 | "uni_z": { |
|
1637 | "interface_id": "00:00:00:00:00:00:00:02:2", |
|
1638 | "tag": {"tag_type": 'vlan', "value": 1}, |
|
1639 | }, |
|
1640 | "dynamic_backup_path": True, |
|
1641 | } |
|
1642 | ||
1643 | payload2 = { |
|
1644 | "dynamic_backup_path": False, |
|
1645 | } |
|
1646 | ||
1647 | evc_as_dict_mock.return_value = payload1 |
|
1648 | response = await self.api_client.post( |
|
1649 | f"{self.base_endpoint}/v2/evc/", |
|
1650 | json=payload1 |
|
1651 | ) |
|
1652 | assert 201 == response.status_code |
|
1653 | ||
1654 | evc_as_dict_mock.return_value = payload2 |
|
1655 | current_data = response.json() |
|
1656 | circuit_id = current_data["circuit_id"] |
|
1657 | response = await self.api_client.patch( |
|
1658 | f"{self.base_endpoint}/v2/evc/{circuit_id}", |
|
1659 | json=payload2 |
|
1660 | ) |
|
1661 | current_data = response.json() |
|
1662 | assert 400 == response.status_code |
|
1663 | assert "must have a primary path or" in current_data["description"] |
|
1664 | ||
1665 | @patch("napps.kytos.mef_eline.main.Main._check_no_tag_duplication") |
|
1666 | @patch("napps.kytos.mef_eline.models.evc.EVC._tag_lists_equal") |
|
@@ 1789-1853 (lines=65) @@ | ||
1786 | with pytest.raises(ValueError): |
|
1787 | self.napp._uni_from_dict(uni_dict) |
|
1788 | ||
1789 | @patch("napps.kytos.mef_eline.main.Main._check_no_tag_duplication") |
|
1790 | @patch("napps.kytos.mef_eline.models.evc.EVC._tag_lists_equal") |
|
1791 | @patch("napps.kytos.mef_eline.main.Main._use_uni_tags") |
|
1792 | @patch("napps.kytos.mef_eline.models.evc.EVC.deploy") |
|
1793 | @patch("napps.kytos.mef_eline.scheduler.Scheduler.add") |
|
1794 | @patch("napps.kytos.mef_eline.main.Main._uni_from_dict") |
|
1795 | @patch("napps.kytos.mef_eline.models.evc.EVC._validate") |
|
1796 | @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc") |
|
1797 | async def test_update_evc_no_json_mime( |
|
1798 | self, |
|
1799 | mongo_controller_upsert_mock, |
|
1800 | validate_mock, |
|
1801 | uni_from_dict_mock, |
|
1802 | sched_add_mock, |
|
1803 | evc_deploy_mock, |
|
1804 | mock_use_uni_tags, |
|
1805 | mock_tags_equal, |
|
1806 | mock_check_duplicate |
|
1807 | ): |
|
1808 | """Test update a circuit with wrong mimetype.""" |
|
1809 | self.napp.controller.loop = asyncio.get_running_loop() |
|
1810 | validate_mock.return_value = True |
|
1811 | sched_add_mock.return_value = True |
|
1812 | evc_deploy_mock.return_value = True |
|
1813 | mock_use_uni_tags.return_value = True |
|
1814 | mock_tags_equal.return_value = True |
|
1815 | mock_check_duplicate.return_value = True |
|
1816 | uni1 = create_autospec(UNI) |
|
1817 | uni2 = create_autospec(UNI) |
|
1818 | uni1.interface = create_autospec(Interface) |
|
1819 | uni2.interface = create_autospec(Interface) |
|
1820 | uni1.interface.switch = "00:00:00:00:00:00:00:01" |
|
1821 | uni2.interface.switch = "00:00:00:00:00:00:00:02" |
|
1822 | uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2] |
|
1823 | mongo_controller_upsert_mock.return_value = True |
|
1824 | ||
1825 | payload1 = { |
|
1826 | "name": "my evc1", |
|
1827 | "uni_a": { |
|
1828 | "interface_id": "00:00:00:00:00:00:00:01:1", |
|
1829 | "tag": {"tag_type": 'vlan', "value": 80}, |
|
1830 | }, |
|
1831 | "uni_z": { |
|
1832 | "interface_id": "00:00:00:00:00:00:00:02:2", |
|
1833 | "tag": {"tag_type": 'vlan', "value": 1}, |
|
1834 | }, |
|
1835 | "dynamic_backup_path": True, |
|
1836 | } |
|
1837 | ||
1838 | payload2 = {"dynamic_backup_path": False} |
|
1839 | ||
1840 | response = await self.api_client.post( |
|
1841 | f"{self.base_endpoint}/v2/evc/", |
|
1842 | json=payload1, |
|
1843 | ) |
|
1844 | assert 201 == response.status_code |
|
1845 | ||
1846 | current_data = response.json() |
|
1847 | circuit_id = current_data["circuit_id"] |
|
1848 | response = await self.api_client.patch( |
|
1849 | f"{self.base_endpoint}/v2/evc/{circuit_id}", data=payload2 |
|
1850 | ) |
|
1851 | current_data = response.json() |
|
1852 | assert 415 == response.status_code |
|
1853 | assert "application/json" in current_data["description"] |
|
1854 | ||
1855 | async def test_delete_no_evc(self): |
|
1856 | """Test delete when EVC does not exist.""" |