18 lines
1.1 KiB
Python
18 lines
1.1 KiB
Python
"""操作日志 P1 结构化审计回归检查。"""
|
|
import unittest
|
|
from pathlib import Path
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
SCHEMA=(ROOT/'services/audit_schema.py').read_text(encoding='utf-8')
|
|
AUDIT=(ROOT/'services/audit.py').read_text(encoding='utf-8')
|
|
DB=(ROOT/'services/db.py').read_text(encoding='utf-8')
|
|
APP=(ROOT/'static/js/app.js').read_text(encoding='utf-8')
|
|
class OperationLogsP1Test(unittest.TestCase):
|
|
def test_structured_columns_and_indexes_exist(self):
|
|
for name in ('event_type','result_status','risk_level','object_type','object_id','request_id','role_snapshot','position_snapshot','http_status'): self.assertIn(name,SCHEMA)
|
|
self.assertIn('idx_logs_created',SCHEMA);self.assertIn('idx_logs_user_created',SCHEMA)
|
|
def test_audit_records_structured_context(self):
|
|
for name in ('audit_request_id','_audit_result','_high_risk_failure','request_method','request_path'): self.assertIn(name,AUDIT+DB)
|
|
def test_ui_displays_result_and_object(self):
|
|
self.assertIn('业务对象',APP);self.assertIn('操作结果',APP);self.assertIn('logResultBadge',APP)
|
|
if __name__=='__main__':unittest.main()
|