diff options
Diffstat (limited to 'tests/lib/App/CompareVersionTest.php')
-rw-r--r-- | tests/lib/App/CompareVersionTest.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/lib/App/CompareVersionTest.php b/tests/lib/App/CompareVersionTest.php new file mode 100644 index 00000000000..3c8295f0ed7 --- /dev/null +++ b/tests/lib/App/CompareVersionTest.php @@ -0,0 +1,79 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test\App; + +use InvalidArgumentException; +use OC\App\CompareVersion; +use Test\TestCase; + +class CompareVersionTest extends TestCase { + /** @var CompareVersion */ + private $compare; + + protected function setUp(): void { + parent::setUp(); + + $this->compare = new CompareVersion(); + } + + public static function comparisonData(): array { + return [ + // Compatible versions + ['13.0.0.3', '13.0.0', '>=', true], + ['13.0.0.3', '13.0.0', '<=', true], + ['13.0.0', '13.0.0', '>=', true], + ['13.0.0', '13.0', '<=', true], + ['13.0.0', '13', '>=', true], + ['13.0.1', '13', '>=', true], + ['13.0.1', '13', '<=', true], + ['13.0.1.9', '13', '<=', true], + ['13.0.1-beta.1', '13', '<=', true], + ['7.4.14', '7.4', '<=', true], + ['7.4.14-ubuntu', '7.4', '<=', true], + ['7.4.14-ubuntu', '7.4.15', '<=', true], + ['7.4.16-ubuntu', '7.4.15', '<=', false], + // Incompatible major versions + ['13.0.0.3', '13.0.0', '<', false], + ['12.0.0', '13.0.0', '>=', false], + ['12.0.0', '13.0', '>=', false], + ['12.0.0', '13', '>=', false], + ['7.4.15-ubuntu', '7.4.15', '>=', true], + // Incompatible minor and patch versions + ['13.0.0', '13.0.1', '>=', false], + ['13.0.0', '13.1', '>=', false], + // Compatible minor and patch versions + ['13.0.1', '13.0.0', '>=', true], + ['13.2.0', '13.1', '>=', true], + ]; + } + + #[\PHPUnit\Framework\Attributes\DataProvider('comparisonData')] + public function testComparison(string $actualVersion, string $requiredVersion, + string $comparator, bool $expected): void { + $isCompatible = $this->compare->isCompatible($actualVersion, $requiredVersion, + $comparator); + + $this->assertEquals($expected, $isCompatible); + } + + public function testInvalidServerVersion(): void { + $actualVersion = '13'; + $this->expectException(InvalidArgumentException::class); + + $this->compare->isCompatible($actualVersion, '13.0.0'); + } + + public function testInvalidRequiredVersion(): void { + $actualVersion = '13.0.0'; + $this->expectException(InvalidArgumentException::class); + + $this->compare->isCompatible($actualVersion, '13.0.0.9'); + } +} |