Code Duplication    Length = 63-64 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1381-1444 (lines=64) @@
1378
        evc_deploy.assert_not_called()
1379
        self.assertEqual(405, response.status_code)
1380
1381
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1382
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1383
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1384
    @patch("napps.kytos.mef_eline.storehouse.StoreHouse.save_evc")
1385
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1386
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1387
    def test_update_circuit_invalid_json(self, *args):
1388
        """Test update a circuit circuit."""
1389
        # pylint: disable=too-many-locals
1390
        (
1391
            evc_as_dict_mock,
1392
            validate_mock,
1393
            save_evc_mock,
1394
            uni_from_dict_mock,
1395
            sched_add_mock,
1396
            evc_deploy_mock,
1397
        ) = args
1398
1399
        validate_mock.return_value = True
1400
        save_evc_mock.return_value = True
1401
        sched_add_mock.return_value = True
1402
        evc_deploy_mock.return_value = True
1403
        uni1 = create_autospec(UNI)
1404
        uni2 = create_autospec(UNI)
1405
        uni1.interface = create_autospec(Interface)
1406
        uni2.interface = create_autospec(Interface)
1407
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1408
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1409
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1410
1411
        api = self.get_app_test_client(self.napp)
1412
        payload1 = {
1413
            "name": "my evc1",
1414
            "uni_a": {
1415
                "interface_id": "00:00:00:00:00:00:00:01:1",
1416
                "tag": {"tag_type": 1, "value": 80},
1417
            },
1418
            "uni_z": {
1419
                "interface_id": "00:00:00:00:00:00:00:02:2",
1420
                "tag": {"tag_type": 1, "value": 1},
1421
            },
1422
            "dynamic_backup_path": True,
1423
        }
1424
1425
        payload2 = {
1426
            "dynamic_backup_path": False,
1427
        }
1428
1429
        evc_as_dict_mock.return_value = payload1
1430
        response = api.post(
1431
            f"{self.server_name_url}/v2/evc/",
1432
            data=json.dumps(payload1),
1433
            content_type="application/json",
1434
        )
1435
        self.assertEqual(201, response.status_code)
1436
1437
        evc_as_dict_mock.return_value = payload2
1438
        current_data = json.loads(response.data)
1439
        circuit_id = current_data["circuit_id"]
1440
        response = api.patch(
1441
            f"{self.server_name_url}/v2/evc/{circuit_id}",
1442
            data=payload2,
1443
            content_type="application/json",
1444
        )
1445
        current_data = json.loads(response.data)
1446
        expected_data = "The request body is not a well-formed JSON."
1447
        self.assertEqual(current_data["description"], expected_data)
@@ 1530-1592 (lines=63) @@
1527
        self.assertEqual(400, response.status_code)
1528
        self.assertEqual(current_data["description"], expected_data)
1529
1530
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1531
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1532
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1533
    @patch("napps.kytos.mef_eline.storehouse.StoreHouse.save_evc")
1534
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1535
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1536
    def test_update_evc_no_json_mime(self, *args):
1537
        """Test update a circuit with wrong mimetype."""
1538
        # pylint: disable=too-many-locals
1539
        (
1540
            evc_as_dict_mock,
1541
            validate_mock,
1542
            save_evc_mock,
1543
            uni_from_dict_mock,
1544
            sched_add_mock,
1545
            evc_deploy_mock,
1546
        ) = args
1547
1548
        validate_mock.return_value = True
1549
        save_evc_mock.return_value = True
1550
        sched_add_mock.return_value = True
1551
        evc_deploy_mock.return_value = True
1552
        uni1 = create_autospec(UNI)
1553
        uni2 = create_autospec(UNI)
1554
        uni1.interface = create_autospec(Interface)
1555
        uni2.interface = create_autospec(Interface)
1556
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1557
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1558
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1559
1560
        api = self.get_app_test_client(self.napp)
1561
        payload1 = {
1562
            "name": "my evc1",
1563
            "uni_a": {
1564
                "interface_id": "00:00:00:00:00:00:00:01:1",
1565
                "tag": {"tag_type": 1, "value": 80},
1566
            },
1567
            "uni_z": {
1568
                "interface_id": "00:00:00:00:00:00:00:02:2",
1569
                "tag": {"tag_type": 1, "value": 1},
1570
            },
1571
            "dynamic_backup_path": True,
1572
        }
1573
1574
        payload2 = {"dynamic_backup_path": False}
1575
1576
        evc_as_dict_mock.return_value = payload1
1577
        response = api.post(
1578
            f"{self.server_name_url}/v2/evc/",
1579
            data=json.dumps(payload1),
1580
            content_type="application/json",
1581
        )
1582
        self.assertEqual(201, response.status_code)
1583
1584
        evc_as_dict_mock.return_value = payload2
1585
        current_data = json.loads(response.data)
1586
        circuit_id = current_data["circuit_id"]
1587
        response = api.patch(
1588
            f"{self.server_name_url}/v2/evc/{circuit_id}", data=payload2
1589
        )
1590
        current_data = json.loads(response.data)
1591
        expected_data = "The request body mimetype is not application/json."
1592
        self.assertEqual(current_data["description"], expected_data)
1593
        self.assertEqual(415, response.status_code)
1594
1595
    def test_delete_no_evc(self):