Initial commit - DesignerCEP Project with Caddy deployment

This commit is contained in:
zuowei1216
2025-12-19 21:27:17 +08:00
commit 8ea58fe480
170 changed files with 47469 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
import os
import sys
import datetime
from datetime import timezone, timedelta
# 将 Server 目录加入 sys.path方便导入 app 包
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
os.environ["DATABASE_URL"] = "sqlite:///./test_verify.db"
from fastapi.testclient import TestClient
from app.main import app
from app.db import init_db, Base, engine, SessionLocal
from app.models.user import User
client = TestClient(app)
def test_verify_endpoint():
# Setup
Base.metadata.drop_all(bind=engine)
Base.metadata.create_all(bind=engine)
init_db()
# 1. Register
client.post("/api/v1/auth/register", json={"username": "eve", "password": "pass", "confirm_password": "pass"})
# 2. Login
resp = client.post("/api/v1/auth/login", json={"username": "eve", "password": "pass", "device_id": "dev1"})
assert resp.status_code == 200
token = resp.json()["access_token"]
headers = {"Authorization": f"Bearer {token}"}
# 3. Verify Success
verify_data = {
"username": "eve",
"device_id": "dev1",
"timestamp": 1234567890
}
resp = client.post("/api/v1/auth/verify", json=verify_data, headers=headers)
assert resp.status_code == 200
data = resp.json()
assert data["valid"] == True
assert data["username"] == "eve"
# 4. Verify Fail - Session not found (wrong device_id)
verify_data_bad_dev = {
"username": "eve",
"device_id": "dev2",
"timestamp": 1234567890
}
resp = client.post("/api/v1/auth/verify", json=verify_data_bad_dev, headers=headers)
assert resp.status_code == 404
assert "会话不存在" in resp.json()["detail"]
# 5. Verify Expiry
# Hack DB to set expire_date
db = SessionLocal()
user = db.query(User).filter(User.username == "eve").first()
# Expired yesterday
user.expire_date = datetime.datetime.now(timezone.utc) - timedelta(days=1)
db.commit()
db.close()
resp = client.post("/api/v1/auth/verify", json=verify_data, headers=headers)
assert resp.status_code == 200 # It returns 200 but valid=False per requirements
data = resp.json()
assert data["valid"] == False
assert data["expire_date"] is not None
# 6. Verify Token Invalid (401)
resp = client.post("/api/v1/auth/verify", json=verify_data, headers={"Authorization": "Bearer invalid_token"})
assert resp.status_code == 401
if __name__ == "__main__":
test_verify_endpoint()
print("All tests passed!")