Code Duplication    Length = 63-64 lines in 2 locations

tests/unit/test_main.py 2 locations

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