mcpuniverse / tests /app /api /test_project_api.py
haochengsama's picture
Add files using upload-large-folder tool
222d3d2 verified
Raw
History Blame Contribute Delete
6.43 kB
from pydantic_core import from_json
from mcpuniverse.app.api.project import (
CreateProjectResponse,
GetProjectResponse,
CreateReleasedProjectResponse,
ListProjectResponse
)
class TestProjectAPI:
def test_create_project(self, client):
name = "test_project"
description = "A test project"
configuration = "{}"
response = client.post(
"/project/create",
json={"name": name, "description": description, "configuration": configuration}
)
assert response.status_code == 400
response = client.post(
"/project/create",
json={"name": name, "description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = CreateProjectResponse.model_validate(from_json(response.text))
assert r.name == name
response = client.post(
"/project/create",
json={"name": "", "description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 400
response = client.post(
"/project/create",
json={"description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 400
def test_get_project(self, client):
name = "test_project"
description = "A test project"
configuration = "{}"
response = client.post(
"/project/create",
json={"name": name, "description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = CreateProjectResponse.model_validate(from_json(response.text))
assert r.name == name
response = client.get(
f"/project/get?name={name}",
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.get(
f"/project/get?name=xxx",
headers={"x-user-id": "12345"}
)
assert response.status_code == 404
def test_delete_project(self, client):
name = "test_project"
description = "A test project"
configuration = "{}"
response = client.post(
"/project/create",
json={"name": name, "description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.post(
f"/project/delete?name={name}",
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.post(
f"/project/delete?name={name}",
headers={"x-user-id": "12345"}
)
assert response.status_code == 404
def test_update_project(self, client):
name = "test_project"
description = "A test project"
configuration = "{}"
response = client.post(
"/project/create",
json={"name": name, "description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.post(
"/project/update",
json={"name": name, "description": "test test", "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.get(
f"/project/get?name={name}",
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = GetProjectResponse.model_validate(from_json(response.text))
assert r.description == "test test"
response = client.post(
"/project/update",
json={"name": name, "configuration": "test"},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.get(
f"/project/get?name={name}",
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = GetProjectResponse.model_validate(from_json(response.text))
assert r.description == "test test" and r.configuration == "test"
response = client.post(
"/project/update",
json={"name": "xxx", "configuration": "test"},
headers={"x-user-id": "12345"}
)
assert response.status_code == 404
response = client.post(
"/project/list",
json={"limit": 1, "offset": 0},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = ListProjectResponse.model_validate(from_json(response.text))
assert r.projects[0] == name
def test_release_project(self, client):
name = "test_project"
tag = "v1"
description = "A test project"
configuration = "{}"
response = client.post(
"/project/create",
json={"name": name, "description": description, "configuration": configuration},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.post(
"/project/create_release",
json={"name": name, "tag": tag},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = CreateReleasedProjectResponse.model_validate(from_json(response.text))
assert r.name == name and r.tag == tag
response = client.get(
f"/project/get_release?name={name}&tag={tag}",
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
response = client.get(
f"/project/get_release?name={name}&tag=xxx",
headers={"x-user-id": "12345"}
)
assert response.status_code == 404
response = client.post(
"/project/list_release",
json={"limit": 1, "offset": 0},
headers={"x-user-id": "12345"}
)
assert response.status_code == 200
r = ListProjectResponse.model_validate(from_json(response.text))
assert r.projects[0] == name