1- import uuid
2- import pytest
31from fastapi .testclient import TestClient
42from sqlmodel import Session
3+
54from app .main import app
6- from app .models import APIKey , User , Organization , Project
5+ from app .models import APIKey
76from app .core .config import settings
8- from app .crud . api_key import create_api_key
9- from app .tests .utils .utils import random_email
10- from app .core . security import get_password_hash
7+ from app .tests . utils . utils import get_non_existent_id
8+ from app .tests .utils .user import create_random_user
9+ from app .tests . utils . test_data import create_test_api_key , create_test_project
1110
1211client = TestClient (app )
1312
1413
15- def create_test_user (db : Session ) -> User :
16- user = User (
17- email = random_email (),
18- hashed_password = get_password_hash ("password123" ),
19- is_superuser = True ,
20- )
21- db .add (user )
22- db .commit ()
23- db .refresh (user )
24- return user
25-
26-
27- def create_test_organization (db : Session ) -> Organization :
28- org = Organization (
29- name = f"Test Organization { uuid .uuid4 ()} " , description = "Test Organization"
30- )
31- db .add (org )
32- db .commit ()
33- db .refresh (org )
34- return org
35-
36-
37- def create_test_project (db : Session , organization_id : int ) -> Project :
38- project = Project (name = "Test Project" , organization_id = organization_id )
39- db .add (project )
40- db .commit ()
41- db .refresh (project )
42- return project
43-
44-
4514def test_create_api_key (db : Session , superuser_token_headers : dict [str , str ]):
46- user = create_test_user (db )
47- org = create_test_organization (db )
48- project = create_test_project (db , organization_id = org .id )
15+ user = create_random_user (db )
16+ project = create_test_project (db )
4917
5018 response = client .post (
5119 f"{ settings .API_V1_STR } /apikeys" ,
@@ -57,14 +25,13 @@ def test_create_api_key(db: Session, superuser_token_headers: dict[str, str]):
5725 assert data ["success" ] is True
5826 assert "id" in data ["data" ]
5927 assert "key" in data ["data" ]
60- assert data ["data" ]["organization_id" ] == org . id
28+ assert data ["data" ]["organization_id" ] == project . organization_id
6129 assert data ["data" ]["user_id" ] == user .id
6230
6331
6432def test_create_duplicate_api_key (db : Session , superuser_token_headers : dict [str , str ]):
65- user = create_test_user (db )
66- org = create_test_organization (db )
67- project = create_test_project (db , organization_id = org .id )
33+ user = create_random_user (db )
34+ project = create_test_project (db )
6835
6936 client .post (
7037 f"{ settings .API_V1_STR } /apikeys" ,
@@ -81,16 +48,11 @@ def test_create_duplicate_api_key(db: Session, superuser_token_headers: dict[str
8148
8249
8350def test_list_api_keys (db : Session , superuser_token_headers : dict [str , str ]):
84- user = create_test_user (db )
85- org = create_test_organization (db )
86- project = create_test_project (db , organization_id = org .id )
87- api_key = create_api_key (
88- db , organization_id = org .id , user_id = user .id , project_id = project .id
89- )
51+ api_key = create_test_api_key (db )
9052
9153 response = client .get (
9254 f"{ settings .API_V1_STR } /apikeys" ,
93- params = {"project_id" : project . id },
55+ params = {"project_id" : api_key . project_id },
9456 headers = superuser_token_headers ,
9557 )
9658 assert response .status_code == 200
@@ -100,17 +62,12 @@ def test_list_api_keys(db: Session, superuser_token_headers: dict[str, str]):
10062 assert len (data ["data" ]) > 0
10163
10264 first_key = data ["data" ][0 ]
103- assert first_key ["organization_id" ] == org . id
104- assert first_key ["user_id" ] == user . id
65+ assert first_key ["organization_id" ] == api_key . organization_id
66+ assert first_key ["user_id" ] == api_key . user_id
10567
10668
10769def test_get_api_key (db : Session , superuser_token_headers : dict [str , str ]):
108- user = create_test_user (db )
109- org = create_test_organization (db )
110- project = create_test_project (db , organization_id = org .id )
111- api_key = create_api_key (
112- db , organization_id = org .id , user_id = user .id , project_id = project .id
113- )
70+ api_key = create_test_api_key (db )
11471
11572 response = client .get (
11673 f"{ settings .API_V1_STR } /apikeys/{ api_key .id } " ,
@@ -121,25 +78,21 @@ def test_get_api_key(db: Session, superuser_token_headers: dict[str, str]):
12178 assert data ["success" ] is True
12279 assert data ["data" ]["id" ] == api_key .id
12380 assert data ["data" ]["organization_id" ] == api_key .organization_id
124- assert data ["data" ]["user_id" ] == user . id
81+ assert data ["data" ]["user_id" ] == api_key . user_id
12582
12683
12784def test_get_nonexistent_api_key (db : Session , superuser_token_headers : dict [str , str ]):
85+ api_key_id = get_non_existent_id (db , APIKey )
12886 response = client .get (
129- f"{ settings .API_V1_STR } /apikeys/999999 " ,
87+ f"{ settings .API_V1_STR } /apikeys/{ api_key_id } " ,
13088 headers = superuser_token_headers ,
13189 )
13290 assert response .status_code == 404
13391 assert "API Key does not exist" in response .json ()["error" ]
13492
13593
13694def test_revoke_api_key (db : Session , superuser_token_headers : dict [str , str ]):
137- user = create_test_user (db )
138- org = create_test_organization (db )
139- project = create_test_project (db , organization_id = org .id )
140- api_key = create_api_key (
141- db , organization_id = org .id , user_id = user .id , project_id = project .id
142- )
95+ api_key = create_test_api_key (db )
14396
14497 response = client .delete (
14598 f"{ settings .API_V1_STR } /apikeys/{ api_key .id } " ,
@@ -154,11 +107,10 @@ def test_revoke_api_key(db: Session, superuser_token_headers: dict[str, str]):
154107def test_revoke_nonexistent_api_key (
155108 db : Session , superuser_token_headers : dict [str , str ]
156109):
157- user = create_test_user (db )
158- org = create_test_organization (db )
110+ api_key_id = get_non_existent_id (db , APIKey )
159111
160112 response = client .delete (
161- f"{ settings .API_V1_STR } /apikeys/999999 " ,
113+ f"{ settings .API_V1_STR } /apikeys/{ api_key_id } " ,
162114 headers = superuser_token_headers ,
163115 )
164116 assert response .status_code == 404
0 commit comments