Files
cc-ci/tests/mailu/ops.py
autonomic-bot 1fbc4e0b15
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
fix(mailu): fix _mailu import path in ops.py+overlays (functional/ subdir)
2026-06-11 20:44:40 +00:00

37 lines
1.2 KiB
Python

"""mailu — pre-op seed hooks. Creates / deletes a test mailbox in the admin sqlite DB to prove
backup→restore data integrity on real mail data (P4 coverage, phase-mailu)."""
from __future__ import annotations
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "runner"))
from harness import lifecycle # noqa: E402
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "functional"))
import _mailu # noqa: E402
_CI_LOCALPART = "citest"
_CI_PASSWORD = "CcCi-BackupTest1!Aa"
def pre_backup(ctx):
_mailu.ensure_domain(ctx.domain, ctx.domain)
_mailu.create_user(ctx.domain, _CI_LOCALPART, ctx.domain, _CI_PASSWORD)
def pre_restore(ctx):
# Delete the seeded user directly from sqlite to simulate data loss before restore.
# (flask mailu has no user-delete subcommand in 2024.06.52; sqlite3 module is always available.)
lifecycle.exec_in_app(
ctx.domain,
[
"python3",
"-c",
f"import sqlite3; db=sqlite3.connect('/data/main.db'); "
f"db.execute(\"DELETE FROM user WHERE localpart='{_CI_LOCALPART}'\"); db.commit()",
],
service="admin",
)