| from pydantic_core import from_json |
| from mcpuniverse.app.api.task import CreateTaskResponse, GetTaskResponse |
|
|
|
|
| class TestTaskAPI: |
|
|
| def test_task(self, client): |
| benchmark_name = "test_benchmark" |
| name = "test_task" |
| category = "test" |
| question = "How to test" |
| config = "{}" |
|
|
| response = client.post( |
| "/internal/benchmark/create", |
| json={"name": benchmark_name, "description": "A test benchmark"}, |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 200 |
|
|
| response = client.post( |
| "/internal/task/create", |
| json={ |
| "benchmark_name": benchmark_name, |
| "name": name, |
| "category": category, |
| "question": question, |
| "config": config |
| }, |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 200 |
| r = CreateTaskResponse.model_validate(from_json(response.text)) |
| assert r.name == name and r.benchmark_name == benchmark_name |
|
|
| response = client.get( |
| f"/internal/task/get?benchmark_name={benchmark_name}&name={name}", |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 200 |
| r = GetTaskResponse.model_validate(from_json(response.text)) |
| assert r.name == name and r.benchmark_name == benchmark_name |
| assert r.category == category and r.question == question |
|
|
| response = client.get( |
| f"/internal/task/get?benchmark_name=xxx&name={name}", |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 404 |
|
|
| response = client.post( |
| "/internal/task/update", |
| json={ |
| "benchmark_name": benchmark_name, |
| "name": name, |
| "question": "A new question" |
| }, |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 200 |
|
|
| response = client.get( |
| f"/internal/task/get?benchmark_name={benchmark_name}&name={name}", |
| headers={"x-user-id": "12345"} |
| ) |
| r = GetTaskResponse.model_validate(from_json(response.text)) |
| assert r.name == name and r.benchmark_name == benchmark_name |
| assert r.category == category and r.question == "A new question" |
| assert r.is_public == True |
|
|
| response = client.post( |
| "/internal/task/update", |
| json={ |
| "benchmark_name": benchmark_name, |
| "name": name, |
| "is_public": "false" |
| }, |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 200 |
|
|
| response = client.get( |
| f"/internal/task/get?benchmark_name={benchmark_name}&name={name}", |
| headers={"x-user-id": "12345"} |
| ) |
| r = GetTaskResponse.model_validate(from_json(response.text)) |
| assert r.is_public == False |
|
|
| response = client.post( |
| f"/internal/task/delete?benchmark_name={benchmark_name}&name={name}", |
| headers={"x-user-id": "12345"} |
| ) |
| assert response.status_code == 200 |
|
|