支持开发环境局域网登录测试
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user