41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import pytest
|
|
from httpx import AsyncClient
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_repository_crud(auth_client: AsyncClient) -> None:
|
|
# Create project first
|
|
resp = await auth_client.post(
|
|
"/api/v1/projects", json={"name": "RepoTest", "slug": "repo-test"}
|
|
)
|
|
project_id = resp.json()["id"]
|
|
|
|
# Create repo
|
|
resp = await auth_client.post(
|
|
f"/api/v1/projects/{project_id}/repositories",
|
|
json={"name": "repo1", "git_url": "https://git.example.com/repo1.git"},
|
|
)
|
|
assert resp.status_code == 201
|
|
repo_id = resp.json()["id"]
|
|
|
|
# List
|
|
resp = await auth_client.get(f"/api/v1/projects/{project_id}/repositories")
|
|
assert resp.status_code == 200
|
|
assert len(resp.json()) == 1
|
|
|
|
# Get
|
|
resp = await auth_client.get(f"/api/v1/projects/{project_id}/repositories/{repo_id}")
|
|
assert resp.status_code == 200
|
|
|
|
# Update
|
|
resp = await auth_client.put(
|
|
f"/api/v1/projects/{project_id}/repositories/{repo_id}",
|
|
json={"name": "repo1-updated"},
|
|
)
|
|
assert resp.status_code == 200
|
|
assert resp.json()["name"] == "repo1-updated"
|
|
|
|
# Delete
|
|
resp = await auth_client.delete(f"/api/v1/projects/{project_id}/repositories/{repo_id}")
|
|
assert resp.status_code == 204
|