Code Duplication    Length = 63-64 lines in 2 locations

tests/unit/test_main.py 2 locations

@@ 1288-1351 (lines=64) @@
1285
        evc_deploy.assert_not_called()
1286
        self.assertEqual(405, response.status_code)
1287
1288
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1289
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1290
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1291
    @patch("napps.kytos.mef_eline.storehouse.StoreHouse.save_evc")
1292
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1293
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1294
    def test_update_circuit_invalid_json(self, *args):
1295
        """Test update a circuit circuit."""
1296
        # pylint: disable=too-many-locals
1297
        (
1298
            evc_as_dict_mock,
1299
            validate_mock,
1300
            save_evc_mock,
1301
            uni_from_dict_mock,
1302
            sched_add_mock,
1303
            evc_deploy_mock,
1304
        ) = args
1305
1306
        validate_mock.return_value = True
1307
        save_evc_mock.return_value = True
1308
        sched_add_mock.return_value = True
1309
        evc_deploy_mock.return_value = True
1310
        uni1 = create_autospec(UNI)
1311
        uni2 = create_autospec(UNI)
1312
        uni1.interface = create_autospec(Interface)
1313
        uni2.interface = create_autospec(Interface)
1314
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1315
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1316
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1317
1318
        api = self.get_app_test_client(self.napp)
1319
        payload1 = {
1320
            "name": "my evc1",
1321
            "uni_a": {
1322
                "interface_id": "00:00:00:00:00:00:00:01:1",
1323
                "tag": {"tag_type": 1, "value": 80},
1324
            },
1325
            "uni_z": {
1326
                "interface_id": "00:00:00:00:00:00:00:02:2",
1327
                "tag": {"tag_type": 1, "value": 1},
1328
            },
1329
            "dynamic_backup_path": True,
1330
        }
1331
1332
        payload2 = {
1333
            "dynamic_backup_path": False,
1334
        }
1335
1336
        evc_as_dict_mock.return_value = payload1
1337
        response = api.post(
1338
            f"{self.server_name_url}/v2/evc/",
1339
            data=json.dumps(payload1),
1340
            content_type="application/json",
1341
        )
1342
        self.assertEqual(201, response.status_code)
1343
1344
        evc_as_dict_mock.return_value = payload2
1345
        current_data = json.loads(response.data)
1346
        circuit_id = current_data["circuit_id"]
1347
        response = api.patch(
1348
            f"{self.server_name_url}/v2/evc/{circuit_id}",
1349
            data=payload2,
1350
            content_type="application/json",
1351
        )
1352
        current_data = json.loads(response.data)
1353
        expected_data = "The request body is not a well-formed JSON."
1354
        self.assertEqual(current_data["description"], expected_data)
@@ 1437-1499 (lines=63) @@
1434
        self.assertEqual(400, response.status_code)
1435
        self.assertEqual(current_data["description"], expected_data)
1436
1437
    @patch("napps.kytos.mef_eline.models.evc.EVC.deploy")
1438
    @patch("napps.kytos.mef_eline.scheduler.Scheduler.add")
1439
    @patch("napps.kytos.mef_eline.main.Main._uni_from_dict")
1440
    @patch("napps.kytos.mef_eline.storehouse.StoreHouse.save_evc")
1441
    @patch("napps.kytos.mef_eline.models.evc.EVC._validate")
1442
    @patch("napps.kytos.mef_eline.main.EVC.as_dict")
1443
    def test_update_evc_no_json_mime(self, *args):
1444
        """Test update a circuit with wrong mimetype."""
1445
        # pylint: disable=too-many-locals
1446
        (
1447
            evc_as_dict_mock,
1448
            validate_mock,
1449
            save_evc_mock,
1450
            uni_from_dict_mock,
1451
            sched_add_mock,
1452
            evc_deploy_mock,
1453
        ) = args
1454
1455
        validate_mock.return_value = True
1456
        save_evc_mock.return_value = True
1457
        sched_add_mock.return_value = True
1458
        evc_deploy_mock.return_value = True
1459
        uni1 = create_autospec(UNI)
1460
        uni2 = create_autospec(UNI)
1461
        uni1.interface = create_autospec(Interface)
1462
        uni2.interface = create_autospec(Interface)
1463
        uni1.interface.switch = "00:00:00:00:00:00:00:01"
1464
        uni2.interface.switch = "00:00:00:00:00:00:00:02"
1465
        uni_from_dict_mock.side_effect = [uni1, uni2, uni1, uni2]
1466
1467
        api = self.get_app_test_client(self.napp)
1468
        payload1 = {
1469
            "name": "my evc1",
1470
            "uni_a": {
1471
                "interface_id": "00:00:00:00:00:00:00:01:1",
1472
                "tag": {"tag_type": 1, "value": 80},
1473
            },
1474
            "uni_z": {
1475
                "interface_id": "00:00:00:00:00:00:00:02:2",
1476
                "tag": {"tag_type": 1, "value": 1},
1477
            },
1478
            "dynamic_backup_path": True,
1479
        }
1480
1481
        payload2 = {"dynamic_backup_path": False}
1482
1483
        evc_as_dict_mock.return_value = payload1
1484
        response = api.post(
1485
            f"{self.server_name_url}/v2/evc/",
1486
            data=json.dumps(payload1),
1487
            content_type="application/json",
1488
        )
1489
        self.assertEqual(201, response.status_code)
1490
1491
        evc_as_dict_mock.return_value = payload2
1492
        current_data = json.loads(response.data)
1493
        circuit_id = current_data["circuit_id"]
1494
        response = api.patch(
1495
            f"{self.server_name_url}/v2/evc/{circuit_id}", data=payload2
1496
        )
1497
        current_data = json.loads(response.data)
1498
        expected_data = "The request body mimetype is not application/json."
1499
        self.assertEqual(current_data["description"], expected_data)
1500
        self.assertEqual(415, response.status_code)
1501
1502
    def test_delete_no_evc(self):