‪TYPO3CMS  ‪main
PackageTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
24 use TYPO3\CMS\Core\Package\PackageManager;
26 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
27 
31 final class ‪PackageTest extends UnitTestCase
32 {
33  protected string ‪$testRoot;
34 
35  protected function ‪setUp(): void
36  {
37  parent::setUp();
38  $this->testRoot = ‪Environment::getVarPath() . '/tests/Packages/';
39  ‪GeneralUtility::mkdir_deep($this->testRoot);
40  $this->testFilesToDelete[] = ‪$this->testRoot;
41  }
42 
47  {
48  $this->expectException(InvalidPackagePathException::class);
49  $this->expectExceptionCode(1166631890);
50 
51  $packageManagerMock = $this->createMock(PackageManager::class);
52  $packageManagerMock->method('isPackageKeyValid')->willReturn(true);
53  new ‪Package($packageManagerMock, 'Vendor.TestPackage', './ThisPackageSurelyDoesNotExist');
54  }
55 
56  public static function ‪validPackageKeys(): array
57  {
58  return [
59  ['Doctrine.DBAL'],
60  ['TYPO3.CMS'],
61  ['My.Own.TwitterPackage'],
62  ['GoFor.IT'],
63  ['Symfony.Symfony'],
64  ];
65  }
66 
71  public function ‪constructAcceptsValidPackageKeys($packageKey): void
72  {
73  $packagePath = $this->testRoot . str_replace('\\', '/', $packageKey) . '/';
74  mkdir($packagePath, 0777, true);
75  file_put_contents($packagePath . 'composer.json', '{"name": "' . $packageKey . '", "type": "flow-test"}');
76  file_put_contents($packagePath . 'ext_emconf.php', '');
77 
78  $packageManagerMock = $this->createMock(PackageManager::class);
79  $packageManagerMock->method('isPackageKeyValid')->willReturn(true);
80  $package = new ‪Package($packageManagerMock, $packageKey, $packagePath);
81  self::assertEquals($packageKey, $package->getPackageKey());
82  }
83 
84  public static function ‪invalidPackageKeys(): array
85  {
86  return [
87  ['TYPO3..Flow'],
88  ['RobertLemke.Flow. Twitter'],
89  ['Schalke*4'],
90  ];
91  }
92 
97  public function ‪constructRejectsInvalidPackageKeys($packageKey): void
98  {
99  $this->expectException(InvalidPackageKeyException::class);
100  $this->expectExceptionCode(1217959511);
101 
102  $packagePath = $this->testRoot . str_replace('\\', '/', $packageKey) . '/';
103  mkdir($packagePath, 0777, true);
104 
105  $packageManagerMock = $this->createMock(PackageManager::class);
106  new ‪Package($packageManagerMock, $packageKey, $packagePath);
107  }
108 
112  public function ‪aPackageCanBeFlaggedAsProtected(): void
113  {
114  $packagePath = $this->testRoot . 'Application/Vendor/Dummy/';
115  mkdir($packagePath, 0700, true);
116  file_put_contents($packagePath . 'composer.json', '{"name": "vendor/dummy", "type": "flow-test"}');
117  file_put_contents($packagePath . 'ext_emconf.php', '');
118 
119  $packageManagerMock = $this->createMock(PackageManager::class);
120  $packageManagerMock->method('isPackageKeyValid')->willReturn(true);
121  $package = new ‪Package($packageManagerMock, 'Vendor.Dummy', $packagePath);
122 
123  self::assertFalse($package->isProtected());
124  $package->setProtected(true);
125  self::assertTrue($package->isProtected());
126  }
127 }
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\setUp
‪setUp()
Definition: PackageTest.php:35
‪TYPO3\CMS\Core\Package\Exception\InvalidPackagePathException
Definition: InvalidPackagePathException.php:24
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\invalidPackageKeys
‪static invalidPackageKeys()
Definition: PackageTest.php:84
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\constructThrowsPackageDoesNotExistException
‪constructThrowsPackageDoesNotExistException()
Definition: PackageTest.php:46
‪TYPO3\CMS\Core\Package\Exception\InvalidPackageKeyException
Definition: InvalidPackageKeyException.php:24
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\$testRoot
‪string $testRoot
Definition: PackageTest.php:33
‪TYPO3\CMS\Core\Core\Environment\getVarPath
‪static getVarPath()
Definition: Environment.php:197
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest
Definition: PackageTest.php:32
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\constructRejectsInvalidPackageKeys
‪constructRejectsInvalidPackageKeys($packageKey)
Definition: PackageTest.php:97
‪TYPO3\CMS\Core\Tests\Unit\Package
Definition: AbstractServiceProviderTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\constructAcceptsValidPackageKeys
‪constructAcceptsValidPackageKeys($packageKey)
Definition: PackageTest.php:71
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir_deep
‪static mkdir_deep($directory)
Definition: GeneralUtility.php:1638
‪TYPO3\CMS\Core\Package\Package
Definition: Package.php:28
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\validPackageKeys
‪static validPackageKeys()
Definition: PackageTest.php:56
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\aPackageCanBeFlaggedAsProtected
‪aPackageCanBeFlaggedAsProtected()
Definition: PackageTest.php:112
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:51