Skip to content

Commit a9f6ffb

Browse files
committed
check CI
1 parent 0aa4a60 commit a9f6ffb

File tree

4 files changed

+110
-57
lines changed

4 files changed

+110
-57
lines changed

.github/workflows/api-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ jobs:
3131
env:
3232
API_TOKEN: ${{ secrets.GITEA_API_TOKEN }}
3333
run: |
34-
echo "BASE_URL = 'http://34.250.0.69:3000/'" > config.py
34+
echo "BASE_URL = 'http://54.194.27.12:3000/'" > config.py
3535
echo "API_TOKEN = '${API_TOKEN}'" >> config.py
3636
pytest tests/api -v

tests/api/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
API_TOKEN = 'f1600abdf735b9e11dbfc45e57db04319d58235e'
88

99
#BASE_URL = os.getenv('GITEA_URL', 'http://localhost:3000')
10-
BASE_URL = 'http://34.250.0.69:3000'
10+
BASE_URL = 'http://54.194.27.12:3000'

tests/api/test_create_repo.py

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# tests/test_create_repo.py
2+
import random
3+
import string
4+
import unittest
5+
import requests
6+
from config import BASE_URL, API_TOKEN
7+
8+
9+
def _headers() -> dict:
10+
return {"Authorization": f"token {API_TOKEN}"}
11+
12+
13+
def _rand(prefix: str = "user") -> str:
14+
return prefix + "_" + "".join(random.choices(string.ascii_lowercase + string.digits, k=6))
15+
16+
17+
class TestCreateRepoThenGetDetails(unittest.TestCase):
18+
@classmethod
19+
def setUp(self):
20+
#try CI
21+
# Runs before each test
22+
if not BASE_URL:
23+
raise RuntimeError("BASE_URL is not set")
24+
if not API_TOKEN:
25+
raise RuntimeError("API_TOKEN is not set")
26+
self.base_url = BASE_URL.rstrip("/")
27+
self.headers = {"Authorization": f"token {API_TOKEN}"}
28+
29+
# Track created resources for cleanup
30+
self._created_user = None
31+
self._created_repo = None
32+
33+
def tearDown(self) -> None:
34+
# Delete repo first if it was created
35+
if self._created_repo:
36+
owner, repo_name = self._created_repo
37+
try:
38+
url = f"{self.base_url}/api/v1/repos/{owner}/{repo_name}"
39+
r = requests.delete(url, headers=self.headers, timeout=30)
40+
print(f"[teardown] DELETE repo {owner}/{repo_name} -> {r.status_code}")
41+
except Exception as e:
42+
print(f"[teardown] Failed to delete repo {owner}/{repo_name}: {e}")
43+
44+
# Delete user if it was created
45+
if self._created_user:
46+
try:
47+
url = f"{self.base_url}/api/v1/admin/users/{self._created_user}"
48+
r = requests.delete(url, headers=self.headers, timeout=30)
49+
print(f"[teardown] DELETE user {self._created_user} -> {r.status_code}")
50+
except Exception as e:
51+
print(f"[teardown] Failed to delete user {self._created_user}: {e}")
52+
53+
def test_create_repo_then_get_details(self) -> None:
54+
# 1) Create a user (owner)
55+
username = _rand("owner")
56+
user_payload = {
57+
"email": f"{username}@example.com",
58+
"username": username,
59+
"password": "TestPass123!",
60+
"must_change_password": False,
61+
"send_notify": False,
62+
}
63+
r_user = requests.post(
64+
f"{self.base_url}/api/v1/admin/users",
65+
headers=self.headers,
66+
json=user_payload,
67+
timeout=30,
68+
)
69+
self.assertEqual(r_user.status_code, 201, f"User create failed: {r_user.status_code} {r_user.text}")
70+
self._created_user = username # mark for cleanup
71+
72+
# 2) Create a repository for that user
73+
repo_name = _rand("repo")
74+
repo_payload = {
75+
"name": repo_name,
76+
"description": "API test repo",
77+
"private": False,
78+
"auto_init": True,
79+
}
80+
r_repo = requests.post(
81+
f"{self.base_url}/api/v1/admin/users/{username}/repos",
82+
headers=self.headers,
83+
json=repo_payload,
84+
timeout=30,
85+
)
86+
self.assertEqual(r_repo.status_code, 201, f"Repo create failed: {r_repo.status_code} {r_repo.text}")
87+
created = r_repo.json()
88+
self.assertEqual(created["name"], repo_name)
89+
self.assertEqual(created["owner"]["login"], username)
90+
self._created_repo = (username, repo_name) # mark for cleanup
91+
92+
# 3) GET repo details and verify fields
93+
r_get = requests.get(
94+
f"{self.base_url}/api/v1/repos/{username}/{repo_name}",
95+
headers=self.headers,
96+
timeout=30,
97+
)
98+
self.assertEqual(r_get.status_code, 200, f"Get repo failed: {r_get.status_code} {r_get.text}")
99+
repo = r_get.json()
100+
101+
self.assertEqual(repo["name"], repo_name)
102+
self.assertEqual(repo["owner"]["login"], username)
103+
self.assertIs(repo["private"], False)
104+
self.assertTrue(repo.get("default_branch"), "Expected default_branch to be set")
105+
106+
107+
if __name__ == "__main__":
108+
unittest.main(verbosity=2)

tests/api/test_repos.py

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)