$tempFile = tempnam(sys_get_temp_dir(), 'bs-cli-vendor-zip');
$targetUrl = "https://files.bookstackapp.com/vendor/{$version}.zip";
- file_put_contents($tempFile, fopen($targetUrl, 'rb'));
+ $targetFile = @fopen($targetUrl, 'rb');
+ if ($targetFile === false) {
+ throw new CommandError("Failed to download ZIP file from $targetUrl");
+ }
+
+ file_put_contents($tempFile, $targetFile);
return $tempFile;
}
});
}
+ public function test_command_fails_on_zip_not_found()
+ {
+ $this->withOwnBookStackFolder(function (string $basePath) {
+ file_put_contents("$basePath/version", 'v10.02');
+ mkdir("$basePath/dev/checksums", 0777, true);
+ file_put_contents("$basePath/dev/checksums/vendor", 'abc');
+
+ $result = $this->runCommand('download-vendor');
+
+ $result->assertErrorExit();
+ $result->assertStdoutContains('Downloading ZIP from files.bookstackapp.com...');
+ $result->assertStderrContains('Failed to download ZIP file from https://files.bookstackapp.com/vendor/v10.02.zip');
+
+ $this->assertDirectoryExists("$basePath/vendor/composer");
+ });
+ }
}
\ No newline at end of file