65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
|
|
import os
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
from unittest.mock import MagicMock
|
|
|
|
# 1. Set Auth Bypass and Test Config
|
|
os.environ["DB_NAME"] = "bot_db_test_integration"
|
|
# We keep MONGO_HOST as is (it works in verified script)
|
|
|
|
# 2. Import app AFTER setting env
|
|
from main import app
|
|
from api.endpoints.auth import get_current_user
|
|
|
|
# 3. Override Auth
|
|
MOCK_USER_ID = "507f1f77bcf86cd799439011"
|
|
MOCK_USER = {
|
|
"_id": MOCK_USER_ID,
|
|
"username": "testuser",
|
|
"is_admin": False,
|
|
"status": "allowed",
|
|
"project_ids": []
|
|
}
|
|
|
|
def mock_get_current_user():
|
|
return MOCK_USER
|
|
|
|
app.dependency_overrides[get_current_user] = mock_get_current_user
|
|
|
|
client = TestClient(app)
|
|
|
|
def test_character_crud_lifecycle():
|
|
# 1. Create
|
|
create_payload = {
|
|
"name": "Integration Test Char",
|
|
"character_bio": "Testing with real app structure",
|
|
"character_image_doc_tg_id": "doc_123",
|
|
"avatar_image": "http://example.com/img.jpg"
|
|
}
|
|
|
|
response = client.post("/api/characters/", json=create_payload)
|
|
assert response.status_code == 200, response.text
|
|
char_data = response.json()
|
|
assert char_data["name"] == create_payload["name"]
|
|
char_id = char_data["id"]
|
|
|
|
# 2. Get
|
|
response = client.get(f"/api/characters/{char_id}")
|
|
assert response.status_code == 200
|
|
assert response.json()["id"] == char_id
|
|
|
|
# 3. Update
|
|
update_payload = {"name": "Updated Int Name"}
|
|
response = client.put(f"/api/characters/{char_id}", json=update_payload)
|
|
assert response.status_code == 200
|
|
assert response.json()["name"] == "Updated Int Name"
|
|
|
|
# 4. Delete
|
|
response = client.delete(f"/api/characters/{char_id}")
|
|
assert response.status_code == 204
|
|
|
|
# 5. Verify Delete
|
|
response = client.get(f"/api/characters/{char_id}")
|
|
assert response.status_code == 404
|