diff --git a/backend/tests/test_llm_and_rag.py b/backend/tests/test_llm_and_rag.py index 5c838b4..47f2691 100644 --- a/backend/tests/test_llm_and_rag.py +++ b/backend/tests/test_llm_and_rag.py @@ -5,8 +5,9 @@ import pytest from sqlalchemy import select from wisegrade.llm import DeepSeekClient, ModelError, ScoreResult, validate_score -from wisegrade.models import KnowledgeChunk +from wisegrade.models import AppSetting, KnowledgeChunk from wisegrade.rag import ingest, retrieve, split_pages +from wisegrade.settings_store import model_config, save_model_config def fake_embed(texts): @@ -53,3 +54,12 @@ def test_project_isolation_and_chunk_metadata(db): hits = retrieve(db, course_version_id=1, project_id=101, category="stage3", query="实验数据", embedder=fake_embed) assert hits and all(hit["project_id"] == 101 and hit["page"] == 3 for hit in hits) assert "秘密" not in str(hits) + + +def test_model_key_is_encrypted_and_hidden(db): + result = save_model_config(db, {"model": "deepseek-flash", "api_key": "test-private-key"}) + assert result["api_key_configured"] is True + assert "api_key" not in result + stored = db.get(AppSetting, "api_key") + assert b"test-private-key" not in stored.encrypted_value + assert model_config(db)["model"] == "deepseek-flash"