File size: 3,229 Bytes
222d3d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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