Skip to content

Commit fa02ed5

Browse files
committed
Add test for submit without permission
1 parent 0518099 commit fa02ed5

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

tests/unit_tests/service/test_rest_api.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import jwt
88
import pytest
99
from bluesky.protocols import Stoppable
10-
from fastapi import status
10+
from fastapi import HTTPException, status
1111
from fastapi.testclient import TestClient
1212
from httpx import Headers
1313
from pydantic import BaseModel, ValidationError
@@ -287,6 +287,23 @@ def test_create_task(mock_runner: Mock, client: TestClient) -> None:
287287
assert response.json() == {"task_id": task_id}
288288

289289

290+
def test_submit_task_requires_permission(
291+
mock_runner: Mock,
292+
client_with_opa: TestClient,
293+
mock_opa_client: Mock,
294+
access_token: str,
295+
):
296+
task = TaskRequest(name="sleep", params={"time": 2}, instrument_session="cm12345-2")
297+
client_with_opa.headers["Authorization"] = f"Bearer {access_token}"
298+
mock_opa_client.can_submit_task.side_effect = HTTPException(status_code=403)
299+
mock_runner.run.side_effect = RuntimeError("Task should not be submitted")
300+
301+
resp = client_with_opa.post("/tasks", json=task.model_dump())
302+
303+
assert resp.status_code == 403
304+
mock_runner.run.assert_not_called()
305+
306+
290307
def test_create_task_inserts_auth_metadata(
291308
mock_runner: Mock,
292309
client_with_auth: TestClient,

0 commit comments

Comments
 (0)