‪TYPO3CMS  11.5
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 
20 use org\bovigo\vfs\vfsStream;
24 use TYPO3\CMS\Core\Package\PackageManager;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
30 class ‪PackageTest extends UnitTestCase
31 {
32  protected function ‪setUp(): void
33  {
34  parent::setUp();
35  vfsStream::setup('Packages');
36  }
37 
42  {
43  $this->expectException(InvalidPackagePathException::class);
44  $this->expectExceptionCode(1166631890);
45 
46  $packageManagerMock = $this->createMock(PackageManager::class);
47  $packageManagerMock->method('isPackageKeyValid')->willReturn(true);
48  new ‪Package($packageManagerMock, 'Vendor.TestPackage', './ThisPackageSurelyDoesNotExist');
49  }
50 
51  public function ‪validPackageKeys(): array
52  {
53  return [
54  ['Doctrine.DBAL'],
55  ['TYPO3.CMS'],
56  ['My.Own.TwitterPackage'],
57  ['GoFor.IT'],
58  ['Symfony.Symfony'],
59  ];
60  }
61 
66  public function ‪constructAcceptsValidPackageKeys($packageKey): void
67  {
68  $packagePath = 'vfs://Packages/' . str_replace('\\', '/', $packageKey) . '/';
69  mkdir($packagePath, 0777, true);
70  file_put_contents($packagePath . 'composer.json', '{"name": "' . $packageKey . '", "type": "flow-test"}');
71  file_put_contents($packagePath . 'ext_emconf.php', '');
72 
73  $packageManagerMock = $this->createMock(PackageManager::class);
74  $packageManagerMock->method('isPackageKeyValid')->willReturn(true);
75  $package = new ‪Package($packageManagerMock, $packageKey, $packagePath);
76  self::assertEquals($packageKey, $package->getPackageKey());
77  }
78 
79  public function ‪invalidPackageKeys(): array
80  {
81  return [
82  ['TYPO3..Flow'],
83  ['RobertLemke.Flow. Twitter'],
84  ['Schalke*4'],
85  ];
86  }
87 
92  public function ‪constructRejectsInvalidPackageKeys($packageKey): void
93  {
94  $this->expectException(InvalidPackageKeyException::class);
95  $this->expectExceptionCode(1217959511);
96 
97  $packagePath = 'vfs://Packages/' . str_replace('\\', '/', $packageKey) . '/';
98  mkdir($packagePath, 0777, true);
99 
100  $packageManagerMock = $this->createMock(PackageManager::class);
101  new ‪Package($packageManagerMock, $packageKey, $packagePath);
102  }
103 
107  public function ‪aPackageCanBeFlaggedAsProtected(): void
108  {
109  $packagePath = 'vfs://Packages/Application/Vendor/Dummy/';
110  mkdir($packagePath, 0700, true);
111  file_put_contents($packagePath . 'composer.json', '{"name": "vendor/dummy", "type": "flow-test"}');
112  file_put_contents($packagePath . 'ext_emconf.php', '');
113 
114  $packageManagerMock = $this->createMock(PackageManager::class);
115  $packageManagerMock->method('isPackageKeyValid')->willReturn(true);
116  $package = new ‪Package($packageManagerMock, 'Vendor.Dummy', $packagePath);
117 
118  self::assertFalse($package->isProtected());
119  $package->setProtected(true);
120  self::assertTrue($package->isProtected());
121  }
122 }
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\setUp
‪setUp()
Definition: PackageTest.php:32
‪TYPO3\CMS\Core\Package\Exception\InvalidPackagePathException
Definition: InvalidPackagePathException.php:23
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\invalidPackageKeys
‪invalidPackageKeys()
Definition: PackageTest.php:79
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\constructThrowsPackageDoesNotExistException
‪constructThrowsPackageDoesNotExistException()
Definition: PackageTest.php:41
‪TYPO3\CMS\Core\Package\Exception\InvalidPackageKeyException
Definition: InvalidPackageKeyException.php:23
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest
Definition: PackageTest.php:31
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\constructRejectsInvalidPackageKeys
‪constructRejectsInvalidPackageKeys($packageKey)
Definition: PackageTest.php:92
‪TYPO3\CMS\Core\Tests\Unit\Package
Definition: AbstractServiceProviderTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\constructAcceptsValidPackageKeys
‪constructAcceptsValidPackageKeys($packageKey)
Definition: PackageTest.php:66
‪TYPO3\CMS\Core\Package\Package
Definition: Package.php:28
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\aPackageCanBeFlaggedAsProtected
‪aPackageCanBeFlaggedAsProtected()
Definition: PackageTest.php:107
‪TYPO3\CMS\Core\Tests\Unit\Package\PackageTest\validPackageKeys
‪validPackageKeys()
Definition: PackageTest.php:51