8dfb483244
test / test (push) Has been cancelled
Restore is not a code path in the panel — the operator extracts the archive onto /data and starts the image — so it had no test. cmd/panel/restore_test.go now performs that path in process: download a backup from a running panel through POST /backup (plain and encrypted), unpack it the way tar -xzf does, and boot a second panel on the result through run()'s own startup order (CheckRestore, store.Open, newPanel, Start). Covered: the restored panel shows the domain and journal the archive carried and finds the DKIM key, sasldb2 and Postfix sender map where its configuration says they are; the setup link is not reopened by a restore; a session that predates the backup still works, as the guide documents; an encrypted download restores identically; a data directory from another version is refused with both versions named and the manifest kept for the retry. serveHTTP is split so the composition it performs (newPanel) can be started without binding a port. No behaviour change. Closes the optional P4 item in docs/plans/code-review.md, and with it the "HandleBackup POST untested" gap from the review's test section. CHANGELOG updated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>