1212JWT_SECRET = "mock_secret_key_for_development"
1313ALGORITHM = "HS256"
1414
15+
1516def create_test_token (user_id : str = "user_001" ) -> str :
1617 """Create test JWT token"""
1718 to_encode = {"sub" : user_id }
1819 expire = datetime .utcnow () + timedelta (minutes = 60 )
1920 to_encode .update ({"exp" : expire })
2021 return jwt .encode (to_encode , JWT_SECRET , algorithm = ALGORITHM )
2122
23+
2224def test_google_login ():
2325 """Test Google OAuth login endpoint"""
2426 response = client .post (
25- "/auth/google" ,
26- json = {"google_token" : "mock_google_token_123" }
27+ "/auth/google" , json = {"google_token" : "mock_google_token_123" }
2728 )
2829 assert response .status_code == 200
2930 data = response .json ()
@@ -32,24 +33,22 @@ def test_google_login():
3233 assert "user" in data ["data" ]
3334 assert data ["data" ]["user" ]["email" ] == "john.doe@example.com"
3435
36+
3537def test_get_current_user ():
3638 """Test get current user endpoint"""
3739 token = create_test_token ()
38- response = client .get (
39- "/auth/me" ,
40- headers = {"Authorization" : f"Bearer { token } " }
41- )
40+ response = client .get ("/auth/me" , headers = {"Authorization" : f"Bearer { token } " })
4241 assert response .status_code == 200
4342 data = response .json ()
4443 assert data ["success" ] is True
4544 assert data ["data" ]["id" ] == "user_001"
4645
46+
4747def test_get_projects ():
4848 """Test get projects endpoint"""
4949 token = create_test_token ()
5050 response = client .get (
51- "/projects?page=1&limit=10" ,
52- headers = {"Authorization" : f"Bearer { token } " }
51+ "/projects?page=1&limit=10" , headers = {"Authorization" : f"Bearer { token } " }
5352 )
5453 assert response .status_code == 200
5554 data = response .json ()
@@ -58,39 +57,40 @@ def test_get_projects():
5857 assert "total" in data ["data" ]
5958 assert len (data ["data" ]["items" ]) >= 0
6059
60+
6161def test_create_project ():
6262 """Test create project endpoint"""
6363 token = create_test_token ()
6464 response = client .post (
6565 "/projects" ,
6666 json = {"name" : "Test Project" , "description" : "Test description" },
67- headers = {"Authorization" : f"Bearer { token } " }
67+ headers = {"Authorization" : f"Bearer { token } " },
6868 )
6969 assert response .status_code == 200
7070 data = response .json ()
7171 assert data ["success" ] is True
7272 assert data ["data" ]["project" ]["name" ] == "Test Project"
7373 assert "upload_url" in data ["data" ]
7474
75+
7576def test_get_project ():
7677 """Test get single project endpoint"""
7778 token = create_test_token ()
7879 response = client .get (
79- "/projects/project_001" ,
80- headers = {"Authorization" : f"Bearer { token } " }
80+ "/projects/project_001" , headers = {"Authorization" : f"Bearer { token } " }
8181 )
8282 assert response .status_code == 200
8383 data = response .json ()
8484 assert data ["success" ] is True
8585 assert data ["data" ]["id" ] == "project_001"
8686 assert data ["data" ]["name" ] == "Sales Data Analysis"
8787
88+
8889def test_csv_preview ():
8990 """Test CSV preview endpoint"""
9091 token = create_test_token ()
9192 response = client .get (
92- "/chat/project_001/preview" ,
93- headers = {"Authorization" : f"Bearer { token } " }
93+ "/chat/project_001/preview" , headers = {"Authorization" : f"Bearer { token } " }
9494 )
9595 assert response .status_code == 200
9696 data = response .json ()
@@ -99,13 +99,14 @@ def test_csv_preview():
9999 assert "sample_data" in data ["data" ]
100100 assert len (data ["data" ]["columns" ]) > 0
101101
102+
102103def test_send_message ():
103104 """Test send chat message endpoint"""
104105 token = create_test_token ()
105106 response = client .post (
106107 "/chat/project_001/message" ,
107108 json = {"message" : "Show me total sales by product" },
108- headers = {"Authorization" : f"Bearer { token } " }
109+ headers = {"Authorization" : f"Bearer { token } " },
109110 )
110111 assert response .status_code == 200
111112 data = response .json ()
@@ -114,119 +115,117 @@ def test_send_message():
114115 assert "result" in data ["data" ]
115116 assert data ["data" ]["result" ]["result_type" ] in ["table" , "chart" , "summary" ]
116117
118+
117119def test_query_suggestions ():
118120 """Test query suggestions endpoint"""
119121 token = create_test_token ()
120122 response = client .get (
121- "/chat/project_001/suggestions" ,
122- headers = {"Authorization" : f"Bearer { token } " }
123+ "/chat/project_001/suggestions" , headers = {"Authorization" : f"Bearer { token } " }
123124 )
124125 assert response .status_code == 200
125126 data = response .json ()
126127 assert data ["success" ] is True
127128 assert len (data ["data" ]) > 0
128129 assert all ("text" in suggestion for suggestion in data ["data" ])
129130
131+
130132def test_unauthorized_access ():
131133 """Test that endpoints require authentication"""
132134 response = client .get ("/projects" )
133135 assert response .status_code == 403
134136
137+
135138def test_invalid_token ():
136139 """Test invalid token handling"""
137140 response = client .get (
138- "/projects" ,
139- headers = {"Authorization" : "Bearer invalid_token" }
141+ "/projects" , headers = {"Authorization" : "Bearer invalid_token" }
140142 )
141143 assert response .status_code == 401
142144
145+
143146def test_logout ():
144147 """Test logout endpoint"""
145148 token = create_test_token ()
146- response = client .post (
147- "/auth/logout" ,
148- headers = {"Authorization" : f"Bearer { token } " }
149- )
149+ response = client .post ("/auth/logout" , headers = {"Authorization" : f"Bearer { token } " })
150150 assert response .status_code == 200
151151 data = response .json ()
152152 assert data ["success" ] is True
153153 assert data ["data" ]["message" ] == "Logged out successfully"
154154
155+
155156def test_refresh_token ():
156157 """Test refresh token endpoint"""
157158 response = client .post (
158- "/auth/refresh" ,
159- json = {"refresh_token" : "valid_refresh_token" }
159+ "/auth/refresh" , json = {"refresh_token" : "valid_refresh_token" }
160160 )
161161 assert response .status_code == 200
162162 data = response .json ()
163163 assert data ["success" ] is True
164164 assert "access_token" in data ["data" ]
165165
166+
166167def test_project_status ():
167168 """Test project status endpoint"""
168169 token = create_test_token ()
169170 response = client .get (
170- "/projects/project_001/status" ,
171- headers = {"Authorization" : f"Bearer { token } " }
171+ "/projects/project_001/status" , headers = {"Authorization" : f"Bearer { token } " }
172172 )
173173 assert response .status_code == 200
174174 data = response .json ()
175175 assert data ["success" ] is True
176176 assert "status" in data ["data" ]
177177 assert "progress" in data ["data" ]
178178
179+
179180def test_get_upload_url ():
180181 """Test get upload URL endpoint"""
181182 token = create_test_token ()
182183 response = client .get (
183- "/projects/project_001/upload-url" ,
184- headers = {"Authorization" : f"Bearer { token } " }
184+ "/projects/project_001/upload-url" , headers = {"Authorization" : f"Bearer { token } " }
185185 )
186186 assert response .status_code == 200
187187 data = response .json ()
188188 assert data ["success" ] is True
189189 assert "upload_url" in data ["data" ]
190190
191+
191192def test_get_messages ():
192193 """Test get chat messages endpoint"""
193194 token = create_test_token ()
194195 response = client .get (
195- "/chat/project_001/messages" ,
196- headers = {"Authorization" : f"Bearer { token } " }
196+ "/chat/project_001/messages" , headers = {"Authorization" : f"Bearer { token } " }
197197 )
198198 assert response .status_code == 200
199199 data = response .json ()
200200 assert data ["success" ] is True
201201 assert "items" in data ["data" ]
202202 assert "total" in data ["data" ]
203203
204+
204205def test_invalid_google_token ():
205206 """Test invalid Google token"""
206- response = client .post (
207- "/auth/google" ,
208- json = {"google_token" : "invalid_token" }
209- )
207+ response = client .post ("/auth/google" , json = {"google_token" : "invalid_token" })
210208 assert response .status_code == 401
211209
210+
212211def test_project_not_found ():
213212 """Test project not found error"""
214213 token = create_test_token ()
215214 response = client .get (
216- "/projects/nonexistent_project" ,
217- headers = {"Authorization" : f"Bearer { token } " }
215+ "/projects/nonexistent_project" , headers = {"Authorization" : f"Bearer { token } " }
218216 )
219217 assert response .status_code == 404
220218
219+
221220def test_chart_query_response ():
222221 """Test that chart queries return appropriate response"""
223222 token = create_test_token ()
224223 response = client .post (
225224 "/chat/project_001/message" ,
226225 json = {"message" : "Create a chart showing sales by category" },
227- headers = {"Authorization" : f"Bearer { token } " }
226+ headers = {"Authorization" : f"Bearer { token } " },
228227 )
229228 assert response .status_code == 200
230229 data = response .json ()
231230 assert data ["data" ]["result" ]["result_type" ] == "chart"
232- assert "chart_config" in data ["data" ]["result" ]
231+ assert "chart_config" in data ["data" ]["result" ]
0 commit comments