fix: sanitize import job summaries
Some checks failed
CD Pipeline / deploy (push) Has been cancelled

This commit is contained in:
ogt
2026-06-25 14:50:28 +08:00
parent 903cf1a27a
commit 39ff5d5605
5 changed files with 86 additions and 4 deletions

View File

@@ -202,6 +202,48 @@ def test_import_job_public_payload_hides_database_error(monkeypatch, tmp_path):
session.close()
def test_import_job_public_payload_hides_import_summary_internals(monkeypatch, tmp_path):
import_service = _load_import_service(monkeypatch, f"sqlite:///{tmp_path / 'momo.db'}")
import_service.Base.metadata.create_all(import_service.engine)
service = import_service.ImportService()
job_id = service.create_import_job("daily_sales", "drive-file-1", "daily.xlsx", 1024)
session = import_service.Session()
try:
job = session.query(import_service.ImportJob).filter_by(id=job_id).one()
job.status = "completed"
job.import_summary = json.dumps({
"imported_count": 42,
"table_name": "daily_sales_snapshot",
"synced_to": "realtime_sales_monthly",
"sync_success": True,
"sync_error": None,
"verified": True,
"date_min": "2026-06-24",
"date_max": "2026-06-25",
"source_sheet": "即時業績明細",
"source_header_row": 1,
"message": "成功匯入 42 筆資料,已同步至業績分析儀表板",
}, ensure_ascii=False)
job.local_file_path = "data/temp/daily.xlsx"
session.commit()
finally:
session.close()
public_job = service.get_job_status(job_id)
public_text = json.dumps(public_job, ensure_ascii=False)
assert public_job["import_summary"]["imported_count"] == 42
assert public_job["import_summary"]["sync_status"] == "已更新業績分析儀表板"
assert "daily_sales_snapshot" not in public_text
assert "realtime_sales_monthly" not in public_text
assert "table_name" not in public_text
assert "synced_to" not in public_text
assert "drive-file-1" not in public_text
assert "local_file_path" not in public_text
def test_google_drive_auth_refuses_browser_without_json_token(monkeypatch, tmp_path):
import services.google_drive_service as google_drive_service