Files
ServerKit/backend/tests/test_backup_drill_docker.py
Juan DenisandClaude Opus 4.8 63ede5fe46 test(recovery): restore 18 lost proving-test suites from pyc trove (plan 42 ph1)
Re-arm the proving surface the data loss silently took: 18 backend test
files reconstructed from winfr-carved .pyc fragments (marshal+dis extractor
for clean pycs; string-salvage + surviving-source reconstruction for
fragmented ones). Restores coverage for backup drills/offsite (plan 30),
fleet sweep + fleet-doctor DNS + DNS cutover + ssh import + observe
enforcement (plans 26/31), survey catalog/api + setup security + workspace
scoping (plans 28/22/19), and sdk contract + cron preview + notification
prefs + runtime frontend (plans 32/25/34/24).

Where a restored test proved its feature HOLLOW (code died with its test),
the affected cases are @pytest.mark.skip(reason="plan 42: ...") naming the
exact missing symbol, so the canary stays green while flagging the gap for a
named follow-up. Full suite: 2373 passed, 56 skipped, 0 failed; collected
2322 -> 2429. test_gpu dropped as redundant (coverage survives in
test_gpu_extension.py post core-slim).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 04:41:00 -04:00

94 lines
4.4 KiB
Python

"""Plan 30 Phase 3 — container-aware DB drills + the WordPress DB leg.
A managed docker DB drills INSIDE its container (stubbed docker exec); a
container-hosted DB whose container is gone/unknown refuses honestly with an
``unsupported`` status; and the WordPress drill scratch-imports the DB dump on
a live engine.
NOTE (plan 42 recovery): the container-aware database leg was lost with the
tests — the recovered ``BackupDrillService._drill_database`` has no
``host_kind`` / ``container_ref`` handling, no stubbed docker-exec restore, and
never emits the ``unsupported`` status. The reconstructed tests below are kept
faithful to the salvage but skipped as hollow-feature markers; restore is owned
by plan 42.
"""
from datetime import datetime
import pytest
from app import db
from app.services.backup_policy_service import BackupPolicyService
from app.services.backup_drill_service import BackupDrillService # noqa: F401
class _FakeJob:
def __init__(self, payload, jid='job-dk-1'):
self.id = jid
self._payload = payload
def get_payload(self):
return self._payload
def _db_run(policy, tmp_path, name='shop.sql'):
"""A successful database BackupRun with a dump file on disk."""
from app.models.backup_run import BackupRun
dump = tmp_path / name
dump.write_bytes(b'-- dump')
run = BackupRun(policy_id=policy.id, kind='full', status='success',
storage_path=str(dump), started_at=datetime.utcnow())
run.set_metadata({'engine': 'database', 'primary_archive': str(dump),
'db_type': 'mysql', 'db_name': 'shop'})
db.session.add(run)
db.session.commit()
return run
@pytest.mark.skip(reason="plan 42: hollow feature — container-aware DB drill (host_kind/"
"container_ref docker-exec leg, plan 30 Phase 3) absent from recovered "
"BackupDrillService._drill_database; restored by plan 42")
def test_managed_docker_db_drills_inside_container(app, tmp_path, monkeypatch):
from types import SimpleNamespace
from app.services.backup_service import BackupService
monkeypatch.setattr(BackupService, 'BACKUP_BASE_DIR', str(tmp_path / 'backups'))
with app.app_context():
policy = BackupPolicyService.get_or_create_policy(
'database', 9901, target_subtype='mysql', target_meta={'db_name': 'shop'})
# A managed docker DB resolves to a container-hosted target.
monkeypatch.setattr(
BackupPolicyService, '_resolve_target',
classmethod(lambda cls, p: {'target_type': 'database', 'db_type': 'mysql',
'host_kind': 'docker',
'container_ref': SimpleNamespace(name='shop', _managed=True),
'db_config': {'db_name': 'shop'}}))
run = _db_run(policy, tmp_path)
BackupDrillService.run_restore_drill(_FakeJob(
{'policy_id': policy.id, 'run_id': run.id}))
from app.models.restore_drill import RestoreDrill
drill = RestoreDrill.query.filter_by(policy_id=policy.id).first()
assert drill.status == 'success'
@pytest.mark.skip(reason="plan 42: hollow feature — container-gone 'unsupported' honest refusal "
"(plan 30 Phase 3) absent from recovered BackupDrillService; "
"restored by plan 42")
def test_container_gone_refuses_unsupported(app, tmp_path, monkeypatch):
from app.services.backup_service import BackupService
monkeypatch.setattr(BackupService, 'BACKUP_BASE_DIR', str(tmp_path / 'backups'))
with app.app_context():
policy = BackupPolicyService.get_or_create_policy(
'database', 9902, target_subtype='mysql', target_meta={'db_name': 'shop'})
monkeypatch.setattr(
BackupPolicyService, '_resolve_target',
classmethod(lambda cls, p: {'target_type': 'database', 'db_type': 'mysql',
'host_kind': 'docker', 'container_ref': None,
'db_config': {'db_name': 'shop'}}))
run = _db_run(policy, tmp_path)
BackupDrillService.run_restore_drill(_FakeJob(
{'policy_id': policy.id, 'run_id': run.id}))
from app.models.restore_drill import RestoreDrill
drill = RestoreDrill.query.filter_by(policy_id=policy.id).first()
assert drill.get_probes().get('status') == 'unsupported'