"""Offline SQLite backup + restore smoke in an isolated directory.""" import sqlite3 import zipfile from pathlib import Path from app import db, backup from scripts.restore_backup import restore def test_sqlite_backup_and_restore_with_media(tmp_path,monkeypatch): storage=tmp_path/'original' storage.mkdir() monkeypatch.setattr(db,'DATA',storage) monkeypatch.setattr(db,'DB_FILE',storage/'siteforge.sqlite3') db.init() db.execute('INSERT INTO sites(id,name,created_at,updated_at) VALUES (?,?,?,?)', ('restorecheck','Recovered Site',db.now(),db.now())) media=storage/'media'/'restorecheck'/'logo.svg' media.parent.mkdir(parents=True) media.write_text('',encoding='utf-8') dest=backup.backup() with zipfile.ZipFile(dest) as z: assert 'siteforge.sqlite3' in z.namelist() assert 'media/restorecheck/logo.svg' in z.namelist() recovered=tmp_path/'restored' restore(dest,recovered,confirmed=True) with sqlite3.connect(recovered/'siteforge.sqlite3') as c: assert c.execute("SELECT name FROM sites WHERE id='restorecheck'").fetchone()[0]=='Recovered Site' assert (recovered/'media'/'restorecheck'/'logo.svg').read_text(encoding='utf-8')==''