49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# tests/test_error_handling.py
|
|
import pytest
|
|
|
|
|
|
class TestErrorHandling:
|
|
def test_invalid_json(self, client, auth_headers):
|
|
"""Test handling of invalid JSON"""
|
|
response = client.post(
|
|
"/api/v1/product", headers=auth_headers, content="invalid json"
|
|
)
|
|
|
|
assert response.status_code == 422 # Validation error
|
|
|
|
def test_missing_required_fields(self, client, auth_headers):
|
|
"""Test handling of missing required fields"""
|
|
response = client.post(
|
|
"/api/v1/product", headers=auth_headers, json={"title": "Test"}
|
|
) # Missing product_id
|
|
|
|
assert response.status_code == 422
|
|
|
|
def test_invalid_authentication(self, client):
|
|
"""Test handling of invalid authentication"""
|
|
response = client.get(
|
|
"/api/v1/product", headers={"Authorization": "Bearer invalid_token"}
|
|
)
|
|
|
|
assert response.status_code == 401 # Token is not valid
|
|
|
|
def test_nonexistent_resource(self, client, auth_headers):
|
|
"""Test handling of nonexistent resource access"""
|
|
response = client.get("/api/v1/product/NONEXISTENT", headers=auth_headers)
|
|
assert response.status_code == 404
|
|
|
|
response = client.get("/api/v1/shop/NONEXISTENT", headers=auth_headers)
|
|
assert response.status_code == 404
|
|
|
|
def test_duplicate_resource_creation(self, client, auth_headers, test_product):
|
|
"""Test handling of duplicate resource creation"""
|
|
product_data = {
|
|
"product_id": test_product.product_id, # Duplicate ID
|
|
"title": "Another Product",
|
|
}
|
|
|
|
response = client.post(
|
|
"/api/v1/product", headers=auth_headers, json=product_data
|
|
)
|
|
assert response.status_code == 400
|