- 将 User ORM 默认角色改为 annotator,避免脚本直建用户时绕出第二个管理员。 - 启动默认 seed 不再把历史无 owner 项目改写归属 admin,保持共享项目库的历史元数据语义。 - 将 SAM 默认配置和环境模板统一到 SAM 2.1 tiny,并默认关闭历史 SAM3 外部 worker。 - 更新安装/实现文档,并补充默认角色、默认模型和 legacy 项目 owner 不改写的后端测试。
67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
def test_login_success(client):
|
|
response = client.post("/api/auth/login", json={"username": "admin", "password": "123456"})
|
|
|
|
assert response.status_code == 200
|
|
body = response.json()
|
|
assert body["token"]
|
|
assert body["token_type"] == "bearer"
|
|
assert body["username"] == "admin"
|
|
assert body["user"]["username"] == "admin"
|
|
|
|
|
|
def test_login_rejects_invalid_credentials(client):
|
|
response = client.post("/api/auth/login", json={"username": "admin", "password": "wrong"})
|
|
|
|
assert response.status_code == 401
|
|
assert response.json()["detail"] == "Invalid credentials"
|
|
|
|
|
|
def test_me_returns_current_user(client):
|
|
response = client.get("/api/auth/me")
|
|
|
|
assert response.status_code == 200
|
|
assert response.json()["username"] == "admin"
|
|
|
|
|
|
def test_business_routes_require_auth(app):
|
|
from fastapi.testclient import TestClient
|
|
|
|
with TestClient(app) as unauthenticated:
|
|
response = unauthenticated.get("/api/projects")
|
|
|
|
assert response.status_code == 401
|
|
|
|
|
|
def test_default_admin_seed_does_not_claim_legacy_shared_projects(db_session):
|
|
from models import Project
|
|
from routers.auth import ensure_default_admin
|
|
|
|
project = Project(name="Legacy Shared Project", owner_user_id=None)
|
|
db_session.add(project)
|
|
db_session.commit()
|
|
db_session.refresh(project)
|
|
|
|
ensure_default_admin(db_session)
|
|
db_session.refresh(project)
|
|
|
|
assert project.owner_user_id is None
|
|
|
|
|
|
def test_user_model_default_role_is_annotator(db_session):
|
|
from models import User
|
|
from routers.auth import hash_password
|
|
|
|
user = User(username="script-created", password_hash=hash_password("secret123"))
|
|
db_session.add(user)
|
|
db_session.commit()
|
|
db_session.refresh(user)
|
|
|
|
assert user.role == "annotator"
|
|
|
|
|
|
def test_backend_runtime_defaults_match_current_product():
|
|
from config import settings
|
|
|
|
assert settings.sam_default_model == "sam2.1_hiera_tiny"
|
|
assert settings.sam3_external_enabled is False
|