X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/5164375b18f0af6dfb6b3bd35542e40bf2406176..refs/pull/5721/head:/tests/Exports/ZipTestHelper.php diff --git a/tests/Exports/ZipTestHelper.php b/tests/Exports/ZipTestHelper.php index d830d8eb6..50517a87d 100644 --- a/tests/Exports/ZipTestHelper.php +++ b/tests/Exports/ZipTestHelper.php @@ -4,6 +4,7 @@ namespace Tests\Exports; use BookStack\Exports\Import; use Illuminate\Http\UploadedFile; +use Illuminate\Testing\TestResponse; use ZipArchive; class ZipTestHelper @@ -56,4 +57,30 @@ class ZipTestHelper return new UploadedFile($zipFile, 'upload.zip', 'application/zip', null, true); } + + public static function extractFromZipResponse(TestResponse $response): ZipResultData + { + $zipData = $response->streamedContent(); + $zipFile = tempnam(sys_get_temp_dir(), 'bstest-'); + + file_put_contents($zipFile, $zipData); + $extractDir = tempnam(sys_get_temp_dir(), 'bstestextracted-'); + if (file_exists($extractDir)) { + unlink($extractDir); + } + mkdir($extractDir); + + $zip = new ZipArchive(); + $zip->open($zipFile, ZipArchive::RDONLY); + $zip->extractTo($extractDir); + + $dataJson = file_get_contents($extractDir . DIRECTORY_SEPARATOR . "data.json"); + $data = json_decode($dataJson, true); + + return new ZipResultData( + $zipFile, + $extractDir, + $data, + ); + } }