Spaces:
Sleeping
Sleeping
| """Test module for frontend functionality""" | |
| from bs4 import BeautifulSoup | |
| from fastapi import status | |
| def test_compare_form_validation(client, test_user): | |
| """Test form validation for API comparison""" | |
| client.post("/login", data=test_user) | |
| response = client.post("/compare", data={ | |
| "api1_url": "not-a-url", | |
| "api1_method": "GET", | |
| "api1_payload": "{}", | |
| "api1_headers": "{}", | |
| "api2_url": "http://example.com", | |
| "api2_method": "GET", | |
| "api2_payload": "{}", | |
| "api2_headers": "{}", | |
| "view_mode": "line" | |
| }) | |
| assert "valid URL" in response.text | |
| def test_download_error_handling(client, test_user): | |
| """Test error handling for file downloads""" | |
| client.post("/login", data=test_user) | |
| response = client.post("/download/", data={ | |
| "content": "{invalid-json}", | |
| "filename": "test.json", | |
| "username": test_user["username"] | |
| }) | |
| assert response.status_code == status.HTTP_400_BAD_REQUEST | |
| assert "Invalid JSON content" in response.text | |
| def test_session_timeout_redirect(client, test_user): | |
| """Test session timeout redirects to login page""" | |
| client.post("/login", data=test_user) | |
| response = client.get("/compare") | |
| assert response.status_code == status.HTTP_200_OK | |
| client.cookies.clear() | |
| response = client.get("/compare", follow_redirects=False) | |
| assert response.status_code == status.HTTP_302_FOUND | |
| assert response.headers["location"] == "/login" | |
| def test_session_timeout_page_content(client): | |
| """Test session timeout page content""" | |
| response = client.get("/login") | |
| assert response.status_code == status.HTTP_200_OK | |
| soup = BeautifulSoup(response.text, 'html.parser') | |
| assert soup.find('form', {'action': '/login'}) is not None | |
| assert soup.find('input', {'name': 'username'}) is not None | |
| assert soup.find('input', {'name': 'password'}) is not None | |
| def test_error_page_content(client, test_user): | |
| """Test error page content""" | |
| client.post("/login", data=test_user) | |
| response = client.post("/compare", data={ | |
| "api1_url": "http://example.com", | |
| "api1_method": "GET", | |
| "api1_payload": "{}", | |
| "api1_headers": "{}", | |
| "api2_url": "http://example.com", | |
| "api2_method": "GET", | |
| "api2_payload": "{}", | |
| "api2_headers": "{}" | |
| }) | |
| assert response.status_code == status.HTTP_200_OK | |
| assert "API URLs cannot be identical" in response.text | |
| def test_error_handler_internal_server_error(client, test_user): | |
| """Test internal server error handling""" | |
| client.post("/login", data=test_user) | |
| response = client.post("/compare", data={ | |
| "api1_url": "http://api1.example.com", | |
| "api1_method": "GET", | |
| "api1_payload": "{invalid-json}", | |
| "api1_headers": "{}", | |
| "api2_url": "http://api2.example.com", | |
| "api2_method": "GET", | |
| "api2_payload": "{}", | |
| "api2_headers": "{}" | |
| }) | |
| assert response.status_code == status.HTTP_200_OK | |
| assert "error" in response.text.lower() | |
| soup = BeautifulSoup(response.text, 'html.parser') | |
| error_div = soup.find('div', {'class': 'error'}) | |
| assert error_div is not None | |
| assert "invalid" in error_div.text.lower() | |