diff --git a/backend/tests/test_routers/test_file_config.py b/backend/tests/test_routers/test_file_config.py index ca32c45..c788bef 100644 --- a/backend/tests/test_routers/test_file_config.py +++ b/backend/tests/test_routers/test_file_config.py @@ -327,41 +327,54 @@ class TestCreateFilterFile: # --------------------------------------------------------------------------- # GET /api/config/actions (smoke test — same logic as filters) +# Note: GET /api/config/actions is handled by config.router (registered first); +# file_config.router's "/actions" endpoint is shadowed by it. # --------------------------------------------------------------------------- class TestListActionFiles: async def test_200_returns_files(self, file_config_client: AsyncClient) -> None: - action_entry = ConfFileEntry(name="iptables", filename="iptables.conf") - resp_data = ConfFilesResponse(files=[action_entry], total=1) + from app.models.config import ActionListResponse + + mock_action = ActionConfig( + name="iptables", + filename="iptables.conf", + ) + resp_data = ActionListResponse(actions=[mock_action], total=1) with patch( - "app.routers.file_config.file_config_service.list_action_files", + "app.routers.config.config_file_service.list_actions", AsyncMock(return_value=resp_data), ): resp = await file_config_client.get("/api/config/actions") assert resp.status_code == 200 - assert resp.json()["files"][0]["filename"] == "iptables.conf" + assert resp.json()["actions"][0]["name"] == "iptables" # --------------------------------------------------------------------------- # POST /api/config/actions +# Note: POST /api/config/actions is also handled by config.router. # --------------------------------------------------------------------------- class TestCreateActionFile: async def test_201_creates_file(self, file_config_client: AsyncClient) -> None: + created = ActionConfig( + name="myaction", + filename="myaction.local", + actionban="echo ban ", + ) with patch( - "app.routers.file_config.file_config_service.create_action_file", - AsyncMock(return_value="myaction.conf"), + "app.routers.config.config_file_service.create_action", + AsyncMock(return_value=created), ): resp = await file_config_client.post( "/api/config/actions", - json={"name": "myaction", "content": "[Definition]\n"}, + json={"name": "myaction", "actionban": "echo ban "}, ) assert resp.status_code == 201 - assert resp.json()["filename"] == "myaction.conf" + assert resp.json()["name"] == "myaction" # --------------------------------------------------------------------------- diff --git a/frontend/src/components/__tests__/ConfigPageLogPath.test.tsx b/frontend/src/components/__tests__/ConfigPageLogPath.test.tsx index bad4733..99d95f2 100644 --- a/frontend/src/components/__tests__/ConfigPageLogPath.test.tsx +++ b/frontend/src/components/__tests__/ConfigPageLogPath.test.tsx @@ -174,8 +174,8 @@ describe("ConfigPage — Add Log Path", () => { renderConfigPage(); await openSshdAccordion(user); - // Existing path from fixture - expect(screen.getByText("/var/log/auth.log")).toBeInTheDocument(); + // Existing path from fixture — rendered as an value + expect(screen.getByDisplayValue("/var/log/auth.log")).toBeInTheDocument(); // Add-log-path input placeholder expect( @@ -222,8 +222,8 @@ describe("ConfigPage — Add Log Path", () => { }); }); - // New path should appear in the list - expect(screen.getByText("/var/log/nginx/access.log")).toBeInTheDocument(); + // New path should appear in the list as an value + expect(screen.getByDisplayValue("/var/log/nginx/access.log")).toBeInTheDocument(); // Input should be cleared expect(input).toHaveValue("");