aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/AppFramework/Http/DownloadResponseTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/AppFramework/Http/DownloadResponseTest.php')
-rw-r--r--tests/lib/AppFramework/Http/DownloadResponseTest.php55
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'],
+ ['\\\\\\\\\\\\', '\\\\\\\\\\\\\\\\\\\\\\\\'],
+ ];
}
}