e2e: full backup from the panel, restore into an empty directory

After the rate-limit checks the run takes a full backup through the
panel, reads the archive through while the container can still say what
went wrong, then removes data/, certs/, docker-compose.yml and .env,
unpacks the archive into the project directory, puts the private key
back (the panel's archive comes without it and without the queue, both
asserted), and starts the stand again.

What has to hold: manifest.json is consumed by the first start, the
administrator signs in, the domain shows the same DKIM value, and a
message sent with the application's old password reaches the sink and
verifies against the record published before the backup.

The port-25 scenarios then run on the restored installation.

make e2e on the test server: ok.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mix
2026-10-11 19:55:19 +03:00
co-authored by Claude Opus 5.5
parent 8c9a71e6a0
commit b55b33ae92
3 changed files with 217 additions and 1 deletions
+5 -1
View File
@@ -275,7 +275,11 @@ func TestE2E(t *testing.T) {
testLevel1RateLimit(t, sc)
})
// From here on the stand accepts mail on port 25.
// From here on the installation is no longer the one the run started: it
// is restored from its own backup, then switched to accept mail on port 25.
run("full_backup_restore", func(t *testing.T) {
testFullBackupRestore(t, sc)
})
run("enable_port25_features", func(t *testing.T) {
testEnablePort25Features(t, sc)
})