feat: add ProfileManager service with JSON persistence
This commit is contained in:
@@ -26,3 +26,75 @@ def test_profile_apply_request_fields():
|
||||
def test_profile_apply_response():
|
||||
resp = ProfileApplyResponse(scenario_path="scenarios/offline/sample.yaml", patched_fields=["judge_model"])
|
||||
assert "judge_model" in resp.patched_fields
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# ProfileManager service tests
|
||||
# ---------------------------------------------------------------------------
|
||||
import json
|
||||
from webapp.services.profile_manager import ProfileManager
|
||||
|
||||
|
||||
def _make_manager(tmp_path):
|
||||
store = tmp_path / "profiles.json"
|
||||
return ProfileManager(store_path=store)
|
||||
|
||||
|
||||
def test_create_profile(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
p = mgr.create(name="Local", model="deepseek-v4-flash",
|
||||
base_url="http://localhost/v1", api_key="sk-x")
|
||||
assert p.profile_id != ""
|
||||
assert p.name == "Local"
|
||||
|
||||
|
||||
def test_list_profiles(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
mgr.create(name="A", model="m1", base_url="http://a/v1", api_key="k1")
|
||||
mgr.create(name="B", model="m2", base_url="http://b/v1", api_key="k2")
|
||||
profiles = mgr.list_all()
|
||||
assert len(profiles) == 2
|
||||
|
||||
|
||||
def test_get_profile(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
created = mgr.create(name="X", model="m", base_url="http://x/v1", api_key="k")
|
||||
fetched = mgr.get(created.profile_id)
|
||||
assert fetched is not None
|
||||
assert fetched.name == "X"
|
||||
|
||||
|
||||
def test_update_profile(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
p = mgr.create(name="Old", model="m", base_url="http://x/v1", api_key="k")
|
||||
updated = mgr.update(p.profile_id, name="New", model="m2",
|
||||
base_url="http://x/v1", api_key="k", timeout_seconds=60)
|
||||
assert updated is not None
|
||||
assert updated.name == "New"
|
||||
assert updated.model == "m2"
|
||||
assert updated.timeout_seconds == 60
|
||||
|
||||
|
||||
def test_delete_profile(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
p = mgr.create(name="Del", model="m", base_url="http://x/v1", api_key="k")
|
||||
assert mgr.delete(p.profile_id) is True
|
||||
assert mgr.get(p.profile_id) is None
|
||||
|
||||
|
||||
def test_persistence(tmp_path):
|
||||
store = tmp_path / "profiles.json"
|
||||
mgr1 = ProfileManager(store_path=store)
|
||||
p = mgr1.create(name="Persist", model="m", base_url="http://x/v1", api_key="k")
|
||||
mgr2 = ProfileManager(store_path=store)
|
||||
assert mgr2.get(p.profile_id) is not None
|
||||
|
||||
|
||||
def test_get_nonexistent(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
assert mgr.get("does-not-exist") is None
|
||||
|
||||
|
||||
def test_delete_nonexistent(tmp_path):
|
||||
mgr = _make_manager(tmp_path)
|
||||
assert mgr.delete("does-not-exist") is False
|
||||
|
||||
Reference in New Issue
Block a user