]> BookStack Code Mirror - bookstack/blobdiff - tests/Exports/ZipTestHelper.php
ZIP Imports: Added API examples, finished testing
[bookstack] / tests / Exports / ZipTestHelper.php
index d830d8eb6bf9ea925f06f8e45fb1da084030ced2..50517a87d02906babd2c4b0bc9c483b8d222d045 100644 (file)
@@ -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,
+        );
+    }
 }