支持开发环境局域网登录测试

This commit is contained in:
Cheng Zhou
2026-05-29 09:36:07 +08:00
parent c9b677e96a
commit 63457aab11
10 changed files with 253 additions and 19 deletions
+53
View File
@@ -12,6 +12,7 @@ import json
import os
from app.main import create_app
from app.core.config import settings
from app.core.deps import get_db_session
from app.core.security import hash_password
from app.crud import user as user_crud
@@ -200,6 +201,58 @@ async def test_plaintext_login_is_rejected(client_and_db):
assert resp.status_code == 422
@pytest.mark.asyncio
async def test_dev_login_allows_plaintext_only_in_development(client_and_db):
client, _ = client_and_db
original_env = settings.ENV
settings.ENV = "development"
try:
resp = await client.post("/api/v1/auth/dev-login", json={"email": "admin@test.com", "password": "admin123"})
finally:
settings.ENV = original_env
assert resp.status_code == 200
assert resp.json()["token_type"] == "bearer"
assert resp.json()["access_token"]
@pytest.mark.asyncio
async def test_dev_login_is_disabled_outside_development(client_and_db):
client, _ = client_and_db
original_env = settings.ENV
settings.ENV = "production"
try:
resp = await client.post("/api/v1/auth/dev-login", json={"email": "admin@test.com", "password": "admin123"})
finally:
settings.ENV = original_env
assert resp.status_code == 404
@pytest.mark.asyncio
async def test_dev_login_rejects_inactive_users(client_and_db):
client, SessionLocal = client_and_db
original_env = settings.ENV
settings.ENV = "development"
payload = {
"email": "pending-dev-login@test.com",
"password": "Password123",
"full_name": "Pending Dev Login",
"clinical_department": "Clinical",
}
try:
await client.post("/api/v1/auth/register", json=payload)
resp = await client.post(
"/api/v1/auth/dev-login",
json={"email": payload["email"], "password": payload["password"]},
)
finally:
settings.ENV = original_env
assert resp.status_code == 401
assert "账号未审核" in resp.json().get("detail", "")
@pytest.mark.asyncio
async def test_login_challenge_cannot_be_reused(client_and_db):
client, _ = client_and_db