From 3740f9bc2616ee129566c6c075df0fe41b68acd0 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 24 Jan 2017 07:32:47 +0100 Subject: [PATCH] Integration test check download without saving file locally Use Guzzle stream mode to download the contents instead of using a temporary local file. Signed-off-by: Morris Jobke --- .../features/bootstrap/Sharing.php | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/build/integration/features/bootstrap/Sharing.php b/build/integration/features/bootstrap/Sharing.php index a4a9b846cf..e561898706 100644 --- a/build/integration/features/bootstrap/Sharing.php +++ b/build/integration/features/bootstrap/Sharing.php @@ -102,21 +102,13 @@ trait Sharing { $url = $this->lastShareData->data->url; } $fullUrl = $url . "/download"; - $options['save_to'] = "./$filename"; - $this->response = $client->get($fullUrl, $options); - $finfo = new finfo; - $fileinfo = $finfo->file("./$filename", FILEINFO_MIME_TYPE); - PHPUnit_Framework_Assert::assertEquals($fileinfo, "text/plain"); - if (file_exists("./$filename")) { - unlink("./$filename"); - } + $this->checkDownload($fullUrl, null, 'text/plain'); } /** * @Then /^Public shared file "([^"]*)" with password "([^"]*)" can be downloaded$/ */ public function checkPublicSharedFileWithPassword($filename, $password) { - $client = new Client(); $options = []; if (count($this->lastShareData->data->element) > 0){ $token = $this->lastShareData->data[0]->token; @@ -126,14 +118,30 @@ trait Sharing { } $fullUrl = substr($this->baseUrl, 0, -4) . "public.php/webdav"; - $options['auth'] = [$token, $password]; - $options['save_to'] = "./$filename"; - $this->response = $client->get($fullUrl, $options); - $finfo = new finfo; - $fileinfo = $finfo->file("./$filename", FILEINFO_MIME_TYPE); - PHPUnit_Framework_Assert::assertEquals($fileinfo, "text/plain"); - if (file_exists("./$filename")) { - unlink("./$filename"); + $this->checkDownload($fullUrl, [$token, $password], 'text/plain'); + } + + private function checkDownload($url, $auth = null, $mimeType = null) { + if ($auth !== null) { + $options['auth'] = $auth; + } + $options['stream'] = true; + + $client = new Client(); + $this->response = $client->get($url, $options); + PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); + + $buf = ''; + $body = $this->response->getBody(); + while (!$body->eof()) { + // read everything + $buf .= $body->read(8192); + } + $body->close(); + + if ($mimeType !== null) { + $finfo = new finfo; + PHPUnit_Framework_Assert::assertEquals($mimeType, $finfo->buffer($buf, FILEINFO_MIME_TYPE)); } }