Validation
CoHo Appz World Backup — Backup and restore tool for Minecraft worlds.
Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.
Creation-environment checks
The connection-recovery revision additionally passed the Node-based interruption scenarios in tests/browser/reconnect.test.cjs. Run node --test .\tests\browser\reconnect.test.cjs if Node is available. Follow docs/RECONNECT.md for live offline, sleep/wake, stale-session, and pool-restart checks. The tests use a simulated browser/Blazor connection and do not validate a live IIS deployment or compile the C# changes.
The package was reviewed for project references, XML/JSON configuration syntax, JavaScript syntax, source completeness, and exclusion of user-specific paths and build output. C# compilation and runtime tests were not possible because the creation environment did not include a .NET SDK or Windows.
The branding revision was additionally checked for removal of the previous icon and grass-block CSS/markup, presence of notices and contact configuration, valid SVG and Windows ICO sizes, and ZIP integrity. These are static checks and artwork inspection, not a successful C# build or PowerShell execution. PowerShell was also unavailable in the creation environment.
The download revision adds source checks for the fixed download route, dependency injection, package availability state, matching filenames in the publish script and download service, the Visual Studio publish include, and the source ZIP's integrity. The actual HTTP download and Windows package build remain part of the checks below.
Companion download checks
- Start the Development website without a companion ZIP in
src/Mcs.Web/App_Data/Downloads. Verify the home page shows Download not available yet, installation instructions remain readable, and/downloads/companionreturns 404. - Run
scripts/Publish.ps1with your real publisher contact. Verifyartifacts/web/App_Data/Downloads/CoHo-Appz-World-Backup-Companion-win-x64.zipexists and matchesartifacts/CoHo-Appz-World-Backup-Companion-win-x64.zip. The script also checks the required ZIP entries and matching SHA-256 hashes. - Deploy the complete output to a test site. Check the download card on desktop and narrow/mobile layouts, before and after pairing. Confirm the Windows x64 label, package size, installation steps, website address, publisher contact, and non-affiliation notice.
- Download through the button in a fresh browser session without pairing. Confirm the filename ends in
.zip, the archive opens, and its SHA-256 matches the original published ZIP. Check the response is HTTP 200 withapplication/zipand an attachment filename. A request withRange: bytes=0-1023should return HTTP 206 and 1,024 bytes. - Extract the downloaded archive on a test Windows PC, run its installer, then pair and perform a backup/restore against a disposable world copy. Confirm that no separate .NET runtime install is required.
- Temporarily move the ZIP out of the test site's download folder, reload the page, and verify the unavailable state. Restore it and reload; the button should return. Repeat the check with an empty file in place of the ZIP.
- If using Visual Studio Publish, copy the actual generated ZIP into the source web project's
App_Data/Downloadsfirst, then verify it appears in the publish output and downloads after deployment.
Branding and publisher checks on Windows
- Build and run the Debug companion and Development website. Check that CoHo Appz World Backup is the primary name, Minecraft appears in the smaller description, and the generic folder icon appears in the browser and Windows application.
- Check that the full non-affiliation notice is readable on the home page and companion window. Check the publisher/contact notice on the error page. Check the companion at 125% and 150% display scaling; the layout scrolls if necessary.
- Run
scripts/Publish.ps1without contact options; it should stop with a clear setup error before publishing. Then run it with your working support email and/or contact page. - Check
artifacts/web/appsettings.json,artifacts/companion/publisher.json, bothPRODUCT-NOTICE.mdfiles, and the companion README for matching publisher/contact details. Test the displayed email/contact links. - Set missing contact details in a disposable production website configuration; startup should fail with a publisher configuration message. Restore your real details and verify startup succeeds. A Release companion with blank/invalid contacts should refuse to connect; a configured one should connect.
- Install the generated companion package. Check the new Start menu and tray names. If testing an upgrade, check that shortcuts named MCS Minecraft Companion or MCS Save Manager Companion are replaced and a previously enabled startup shortcut still works.
- Run the existing backup/restore and pairing tests below against a test world. Verify the published download page also shows the publisher contact and non-affiliation notice.
Automated checks on your Windows development PC
Run scripts/Validate.ps1. It builds all four projects, then runs the dependency-free console checks against newly created temporary folders. It does not read your actual Minecraft worlds.
Checks cover:
- Nested paths, empty directories, descriptions, and byte progress in backups.
- Restore round-trip and retention of the previous world.
- Rejection of path traversal, duplicate paths, and CRC-corrupted archives before changing the world.
- Reading legacy description IDs and retaining the newest archive during cleanup.
- Folder overlap and symbolic-link rejection (the link test may skip if Windows denies link creation).
- Session isolation, separate agent/browser tokens, local approval, duplicate command prevention, and revocation.
Windows integration smoke test
Use a disposable copy of a Minecraft world for these steps.
- Start
Mcs.Weblocally under HTTPS and startMcs.Companion. - Select the copied world and a separate test backup directory.
- Pair through the website. Decline the first local approval and verify controls remain unavailable. Generate a new code and approve it.
- Create a backup with a description. Verify the ZIP paths and description in the website.
- Change a file in the test world. Request a restore; cancel in the companion and verify the world is unchanged.
- Restore again and approve locally. Verify restored contents and the previous-world recovery folder.
- Try deletion and cleanup; verify local cancellation and approval behavior.
- Import a copied original Minecraft MCS configuration and a legacy archive/description pair; verify the archive and description appear.
- Open a second independent browser profile and pair a second companion on another PC. Verify neither browser can operate the other's folders.
- Interrupt website access during a backup. Verify the local job finishes and status resumes or pairing can be re-established.
- Restart the website. Verify a new pairing is required, while local backups remain available.
- Publish to a test SmarterASP.NET site and repeat pairing, backup, and restore before moving to production.