修复:明确旧删除接口固定拒绝
This commit is contained in:
@@ -108,8 +108,8 @@ async def edit_master_customer(
|
|||||||
|
|
||||||
@customer_controller.delete(
|
@customer_controller.delete(
|
||||||
'/{customer_ids}',
|
'/{customer_ids}',
|
||||||
summary='删除客户接口',
|
summary='兼容旧接口,固定拒绝,请使用测试数据批次清理',
|
||||||
description='用于删除客户',
|
description='兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
response_model=ResponseBaseModel,
|
response_model=ResponseBaseModel,
|
||||||
dependencies=[UserInterfaceAuthDependency('master:customer:remove')],
|
dependencies=[UserInterfaceAuthDependency('master:customer:remove')],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -106,8 +106,8 @@ async def edit_master_line(
|
|||||||
|
|
||||||
@line_controller.delete(
|
@line_controller.delete(
|
||||||
'/{line_ids}',
|
'/{line_ids}',
|
||||||
summary='删除生产线接口',
|
summary='兼容旧接口,固定拒绝,请使用测试数据批次清理',
|
||||||
description='用于删除生产线',
|
description='兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
response_model=ResponseBaseModel,
|
response_model=ResponseBaseModel,
|
||||||
dependencies=[UserInterfaceAuthDependency('master:line:remove')],
|
dependencies=[UserInterfaceAuthDependency('master:line:remove')],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -120,8 +120,8 @@ async def edit_master_pallet(
|
|||||||
|
|
||||||
@pallet_controller.delete(
|
@pallet_controller.delete(
|
||||||
'/{pallet_ids}',
|
'/{pallet_ids}',
|
||||||
summary='删除托盘接口',
|
summary='兼容旧接口,固定拒绝,请使用测试数据批次清理',
|
||||||
description='用于删除尚未入库且没有流转事件的托盘',
|
description='兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
response_model=ResponseBaseModel,
|
response_model=ResponseBaseModel,
|
||||||
dependencies=[UserInterfaceAuthDependency('master:pallet:remove')],
|
dependencies=[UserInterfaceAuthDependency('master:pallet:remove')],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -158,8 +158,8 @@ async def edit_master_site(
|
|||||||
|
|
||||||
@site_controller.delete(
|
@site_controller.delete(
|
||||||
'/{site_ids}',
|
'/{site_ids}',
|
||||||
summary='删除客户现场接口',
|
summary='兼容旧接口,固定拒绝,请使用测试数据批次清理',
|
||||||
description='用于删除客户现场',
|
description='兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
response_model=ResponseBaseModel,
|
response_model=ResponseBaseModel,
|
||||||
dependencies=[UserInterfaceAuthDependency('master:site:remove')],
|
dependencies=[UserInterfaceAuthDependency('master:site:remove')],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -108,8 +108,8 @@ async def edit_master_strain(
|
|||||||
|
|
||||||
@strain_controller.delete(
|
@strain_controller.delete(
|
||||||
'/{strain_ids}',
|
'/{strain_ids}',
|
||||||
summary='删除菌种接口',
|
summary='兼容旧接口,固定拒绝,请使用测试数据批次清理',
|
||||||
description='用于删除菌种',
|
description='兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
response_model=ResponseBaseModel,
|
response_model=ResponseBaseModel,
|
||||||
dependencies=[UserInterfaceAuthDependency('master:strain:remove')],
|
dependencies=[UserInterfaceAuthDependency('master:strain:remove')],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -163,8 +163,8 @@ async def edit_master_warehouse(
|
|||||||
|
|
||||||
@warehouse_controller.delete(
|
@warehouse_controller.delete(
|
||||||
'/{warehouse_ids}',
|
'/{warehouse_ids}',
|
||||||
summary='删除仓库接口',
|
summary='兼容旧接口,固定拒绝,请使用测试数据批次清理',
|
||||||
description='用于删除仓库',
|
description='兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
response_model=ResponseBaseModel,
|
response_model=ResponseBaseModel,
|
||||||
dependencies=[UserInterfaceAuthDependency('master:warehouse:remove')],
|
dependencies=[UserInterfaceAuthDependency('master:warehouse:remove')],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -965,6 +965,21 @@ class TestMasterControllers(unittest.TestCase):
|
|||||||
self.assertIn(f'{prefix}/{{{resource}_id}}', schema['paths'])
|
self.assertIn(f'{prefix}/{{{resource}_id}}', schema['paths'])
|
||||||
self.assertIn('get', schema['paths'][f'{prefix}/{{{resource}_id}}'])
|
self.assertIn('get', schema['paths'][f'{prefix}/{{{resource}_id}}'])
|
||||||
|
|
||||||
|
def test_legacy_delete_openapi_declares_fixed_rejection(self) -> None:
|
||||||
|
app = FastAPI()
|
||||||
|
for router in self.ROUTERS.values():
|
||||||
|
app.include_router(router)
|
||||||
|
schema = app.openapi()
|
||||||
|
|
||||||
|
expected_summary = '兼容旧接口,固定拒绝,请使用测试数据批次清理'
|
||||||
|
expected_description = '兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理'
|
||||||
|
for resource in self.ROUTERS:
|
||||||
|
with self.subTest(resource=resource):
|
||||||
|
operation = schema['paths'][f'/master/{resource}/{{{resource}_ids}}']['delete']
|
||||||
|
self.assertEqual(expected_summary, operation['summary'])
|
||||||
|
self.assertEqual(expected_description, operation['description'])
|
||||||
|
self.assertNotIn('用于删除', operation['description'])
|
||||||
|
|
||||||
def test_all_twenty_five_permission_dependencies_are_exact(self) -> None:
|
def test_all_twenty_five_permission_dependencies_are_exact(self) -> None:
|
||||||
expected_permissions = {
|
expected_permissions = {
|
||||||
(f'/master/{resource}/list', 'GET'): f'master:{resource}:list' for resource in self.ROUTERS
|
(f'/master/{resource}/list', 'GET'): f'master:{resource}:list' for resource in self.ROUTERS
|
||||||
|
|||||||
@@ -1263,6 +1263,21 @@ class TestPalletAndAssignmentControllers(unittest.IsolatedAsyncioTestCase):
|
|||||||
schema['paths']['/master/pallet/{pallet_id}/qrcode']['get']['responses']['200']['content'],
|
schema['paths']['/master/pallet/{pallet_id}/qrcode']['get']['responses']['200']['content'],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_legacy_delete_openapi_declares_fixed_rejection(self) -> None:
|
||||||
|
app = FastAPI()
|
||||||
|
for router in self._routers():
|
||||||
|
app.include_router(router)
|
||||||
|
operation = app.openapi()['paths']['/master/pallet/{pallet_ids}']['delete']
|
||||||
|
|
||||||
|
self.assertEqual('兼容旧接口,固定拒绝,请使用测试数据批次清理', operation['summary'])
|
||||||
|
self.assertEqual(
|
||||||
|
'兼容旧接口,固定拒绝单条物理删除,请使用测试数据批次清理',
|
||||||
|
operation['description'],
|
||||||
|
)
|
||||||
|
self.assertNotIn('用于删除', operation['description'])
|
||||||
|
self.assertNotIn('尚未入库', operation['description'])
|
||||||
|
self.assertNotIn('没有流转事件', operation['description'])
|
||||||
|
|
||||||
def test_route_response_models_are_exact(self) -> None:
|
def test_route_response_models_are_exact(self) -> None:
|
||||||
routes = self._routes()
|
routes = self._routes()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|||||||
Reference in New Issue
Block a user