aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/LargeFileHelperGetFileSizeTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/LargeFileHelperGetFileSizeTest.php')
-rw-r--r--tests/lib/LargeFileHelperGetFileSizeTest.php83
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/lib/LargeFileHelperGetFileSizeTest.php b/tests/lib/LargeFileHelperGetFileSizeTest.php
new file mode 100644
index 00000000000..fbf22f1eb87
--- /dev/null
+++ b/tests/lib/LargeFileHelperGetFileSizeTest.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace Test;
+
+use bantu\IniGetWrapper\IniGetWrapper;
+use OC\LargeFileHelper;
+use OCP\Server;
+use OCP\Util;
+
+/**
+ * Tests whether LargeFileHelper is able to determine file size at all.
+ * Large files are not considered yet.
+ */
+class LargeFileHelperGetFileSizeTest extends TestCase {
+ /** @var string */
+ protected $filename;
+ /** @var int */
+ protected $fileSize;
+ /** @var \OC\LargeFileHelper */
+ protected $helper;
+
+ protected function setUp(): void {
+ parent::setUp();
+ $this->helper = new LargeFileHelper();
+ }
+
+ public static function dataFileNameProvider(): array {
+ $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR;
+
+ return [
+ [ $path . 'lorem.txt', 446 ],
+ [ $path . 'strängé filename (duplicate #2).txt', 446 ],
+ ];
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataFileNameProvider')]
+ public function XtestGetFileSizeViaCurl($filename, $fileSize) {
+ if (!extension_loaded('curl')) {
+ $this->markTestSkipped(
+ 'The PHP curl extension is required for this test.'
+ );
+ }
+ if (Server::get(IniGetWrapper::class)->getString('open_basedir') !== '') {
+ $this->markTestSkipped(
+ 'The PHP curl extension does not work with the file:// protocol when open_basedir is enabled.'
+ );
+ }
+ $this->assertSame(
+ $fileSize,
+ $this->helper->getFileSizeViaCurl($filename)
+ );
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataFileNameProvider')]
+ public function testGetFileSizeViaExec($filename, $fileSize): void {
+ if (escapeshellarg('strängé') !== '\'strängé\'') {
+ $this->markTestSkipped('Your escapeshell args removes accents');
+ }
+ if (!Util::isFunctionEnabled('exec')) {
+ $this->markTestSkipped(
+ 'The exec() function needs to be enabled for this test.'
+ );
+ }
+ $this->assertSame(
+ $fileSize,
+ $this->helper->getFileSizeViaExec($filename)
+ );
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataFileNameProvider')]
+ public function testGetFileSizeNative($filename, $fileSize): void {
+ $this->assertSame(
+ $fileSize,
+ $this->helper->getFileSizeNative($filename)
+ );
+ }
+}