diff options
Diffstat (limited to 'tests/lib/AppFramework/Http/DownloadResponseTest.php')
-rw-r--r-- | tests/lib/AppFramework/Http/DownloadResponseTest.php | 55 |
1 files changed, 26 insertions, 29 deletions
diff --git a/tests/lib/AppFramework/Http/DownloadResponseTest.php b/tests/lib/AppFramework/Http/DownloadResponseTest.php index 6c509b8bc59..b2f60edd999 100644 --- a/tests/lib/AppFramework/Http/DownloadResponseTest.php +++ b/tests/lib/AppFramework/Http/DownloadResponseTest.php @@ -1,24 +1,9 @@ <?php /** - * ownCloud - App Framework - * - * @author Bernhard Posselt - * @copyright 2012 Bernhard Posselt <dev@bernhard-posselt.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\AppFramework\Http; @@ -30,22 +15,34 @@ class ChildDownloadResponse extends DownloadResponse { class DownloadResponseTest extends \Test\TestCase { - - /** - * @var ChildDownloadResponse - */ - protected $response; - protected function setUp(): void { parent::setUp(); - $this->response = new ChildDownloadResponse('file', 'content'); } + public function testHeaders(): void { + $response = new ChildDownloadResponse('file', 'content'); + $headers = $response->getHeaders(); + + $this->assertEquals('attachment; filename="file"', $headers['Content-Disposition']); + $this->assertEquals('content', $headers['Content-Type']); + } + + #[\PHPUnit\Framework\Attributes\DataProvider('filenameEncodingProvider')] + public function testFilenameEncoding(string $input, string $expected): void { + $response = new ChildDownloadResponse($input, 'content'); + $headers = $response->getHeaders(); - public function testHeaders() { - $headers = $this->response->getHeaders(); + $this->assertEquals('attachment; filename="' . $expected . '"', $headers['Content-Disposition']); + } - $this->assertStringContainsString('attachment; filename="file"', $headers['Content-Disposition']); - $this->assertStringContainsString('content', $headers['Content-Type']); + public static function filenameEncodingProvider() : array { + return [ + ['TestName.txt', 'TestName.txt'], + ['A "Quoted" Filename.txt', 'A \\"Quoted\\" Filename.txt'], + ['A "Quoted" Filename.txt', 'A \\"Quoted\\" Filename.txt'], + ['A "Quoted" Filename With A Backslash \\.txt', 'A \\"Quoted\\" Filename With A Backslash \\\\.txt'], + ['A "Very" Weird Filename \ / & <> " >\'""""\.text', 'A \\"Very\\" Weird Filename \\\\ / & <> \\" >\'\\"\\"\\"\\"\\\\.text'], + ['\\\\\\\\\\\\', '\\\\\\\\\\\\\\\\\\\\\\\\'], + ]; } } |