2 namespace TYPO3\CMS\Extensionmanager\Tests\Unit\Utility;
33 $this->objectManagerMock = $this->getMock(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface::class);
40 public function checkTypo3DependencyThrowsExceptionIfVersionNumberIsTooLow()
43 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
44 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'15.0.0'));
45 $dependencyMock->setIdentifier(
'typo3');
46 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
48 $this->setExpectedException(\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException::class,
'', 1399144499);
49 $dependencyUtility->_call(
'checkTypo3Dependency', $dependencyMock);
56 public function checkTypo3DependencyThrowsExceptionIfVersionNumberIsTooHigh()
59 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
60 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'3.0.0'));
61 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
62 $dependencyMock->setIdentifier(
'typo3');
63 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
65 $this->setExpectedException(\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException::class,
'', 1399144521);
66 $dependencyUtility->_call(
'checkTypo3Dependency', $dependencyMock);
73 public function checkTypo3DependencyThrowsExceptionIfIdentifierIsNotTypo3()
76 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
77 $dependencyMock->setIdentifier(
'123');
78 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
80 $this->setExpectedException(\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException::class,
'', 1399144551);
81 $dependencyUtility->_call(
'checkTypo3Dependency', $dependencyMock);
88 public function checkTypo3DependencyReturnsTrueIfVersionNumberIsInRange()
91 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
92 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'15.0.0'));
93 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
94 $dependencyMock->setIdentifier(
'typo3');
95 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
97 $this->assertTrue($dependencyUtility->_call(
'checkTypo3Dependency', $dependencyMock));
104 public function checkTypo3DependencyCanHandleEmptyVersionHighestVersion()
107 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
108 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
''));
109 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
110 $dependencyMock->setIdentifier(
'typo3');
111 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
113 $this->assertTrue($dependencyUtility->_call(
'checkTypo3Dependency', $dependencyMock));
120 public function checkTypo3DependencyCanHandleEmptyVersionLowestVersion()
123 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
124 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'15.0.0'));
125 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
''));
126 $dependencyMock->setIdentifier(
'typo3');
127 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
129 $this->assertTrue($dependencyUtility->_call(
'checkTypo3Dependency', $dependencyMock));
136 public function checkPhpDependencyThrowsExceptionIfVersionNumberIsTooLow()
139 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
140 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'15.0.0'));
141 $dependencyMock->setIdentifier(
'php');
142 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
144 $this->setExpectedException(\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException::class,
'', 1377977857);
145 $dependencyUtility->_call(
'checkPhpDependency', $dependencyMock);
152 public function checkPhpDependencyThrowsExceptionIfVersionNumberIsTooHigh()
155 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
156 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'3.0.0'));
157 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
158 $dependencyMock->setIdentifier(
'php');
159 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
161 $this->setExpectedException(\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException::class,
'', 1377977856);
162 $dependencyUtility->_call(
'checkPhpDependency', $dependencyMock);
169 public function checkPhpDependencyThrowsExceptionIfIdentifierIsNotTypo3()
172 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
173 $dependencyMock->setIdentifier(
'123');
174 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
176 $this->setExpectedException(\TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException::class,
'', 1377977858);
177 $dependencyUtility->_call(
'checkPhpDependency', $dependencyMock);
184 public function checkPhpDependencyReturnsTrueIfVersionNumberIsInRange()
187 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
188 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'15.0.0'));
189 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
190 $dependencyMock->setIdentifier(
'php');
191 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
193 $this->assertTrue($dependencyUtility->_call(
'checkPhpDependency', $dependencyMock));
200 public function checkPhpDependencyCanHandleEmptyVersionHighestVersion()
203 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
204 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
''));
205 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
206 $dependencyMock->setIdentifier(
'php');
207 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
209 $this->assertTrue($dependencyUtility->_call(
'checkPhpDependency', $dependencyMock));
216 public function checkPhpDependencyCanHandleEmptyVersionLowestVersion()
219 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
220 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'15.0.0'));
221 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
''));
222 $dependencyMock->setIdentifier(
'php');
223 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
225 $this->assertTrue($dependencyUtility->_call(
'checkPhpDependency', $dependencyMock));
232 public function checkDependenciesCallsMethodToCheckPhpDependencies()
235 $extensionMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, array(
'dummy'));
237 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
238 $dependencyMock->setIdentifier(
'php');
239 $dependencyStorage = new \SplObjectStorage();
240 $dependencyStorage->attach($dependencyMock);
241 $extensionMock->setDependencies($dependencyStorage);
243 $dependencyUtility = $this->getMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'checkPhpDependency',
'checkTypo3Dependency'));
244 $dependencyUtility->expects($this->atLeastOnce())->method(
'checkPhpDependency');
245 $dependencyUtility->checkDependencies($extensionMock);
252 public function checkDependenciesCallsMethodToCheckTypo3Dependencies()
255 $extensionMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, array(
'dummy'));
257 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
258 $dependencyMock->setIdentifier(
'typo3');
259 $dependencyStorage = new \SplObjectStorage();
260 $dependencyStorage->attach($dependencyMock);
261 $extensionMock->setDependencies($dependencyStorage);
263 $dependencyUtility = $this->getMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'checkPhpDependency',
'checkTypo3Dependency'));
265 $dependencyUtility->expects($this->atLeastOnce())->method(
'checkTypo3Dependency');
266 $dependencyUtility->checkDependencies($extensionMock);
273 public function isVersionCompatibleReturnsTrueForCompatibleVersion()
276 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
277 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'15.0.0'));
278 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
280 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
282 $this->assertTrue($dependencyUtility->_call(
'isVersionCompatible', $version, $dependencyMock));
289 public function isVersionCompatibleReturnsFalseForIncompatibleVersion()
292 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
293 $dependencyMock->expects($this->atLeastOnce())->method(
'getHighestVersion')->will($this->returnValue(
'1.0.1'));
294 $dependencyMock->expects($this->atLeastOnce())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
296 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
298 $this->assertFalse($dependencyUtility->_call(
'isVersionCompatible', $version, $dependencyMock));
307 $availableExtensions = array(
312 $listUtilityMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Utility\ListUtility::class, array(
'getAvailableExtensions'));
313 $listUtilityMock->expects($this->atLeastOnce())->method(
'getAvailableExtensions')->will($this->returnValue($availableExtensions));
314 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
315 $dependencyUtility->_set(
'listUtility', $listUtilityMock);
317 $this->assertTrue($dependencyUtility->_call(
'isDependentExtensionAvailable',
'dummy'));
326 $availableExtensions = array(
331 $listUtilityMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Utility\ListUtility::class, array(
'getAvailableExtensions'));
332 $listUtilityMock->expects($this->atLeastOnce())->method(
'getAvailableExtensions')->will($this->returnValue($availableExtensions));
333 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
334 $dependencyUtility->_set(
'listUtility', $listUtilityMock);
336 $this->assertFalse($dependencyUtility->_call(
'isDependentExtensionAvailable',
'42'));
345 $emConfUtility = $this->getMock(\TYPO3\CMS\Extensionmanager\Utility\EmConfUtility::class, array(
'includeEmConf'));
346 $emConfUtility->expects($this->once())->method(
'includeEmConf')->will($this->returnValue(array(
350 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'setAvailableExtensions',
'isVersionCompatible'));
351 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getIdentifier'));
352 $dependencyMock->expects($this->once())->method(
'getIdentifier')->will($this->returnValue(
'dummy'));
353 $dependencyUtility->_set(
'emConfUtility', $emConfUtility);
354 $dependencyUtility->_set(
'availableExtensions', array(
359 $dependencyUtility->expects($this->once())->method(
'setAvailableExtensions');
360 $dependencyUtility->expects($this->once())->method(
'isVersionCompatible')->with(
'1.0.0', $this->anything());
361 $dependencyUtility->_call(
'isAvailableVersionCompatible', $dependencyMock);
370 $extensionRepositoryMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository::class, array(
'countByExtensionKey'), array($this->objectManagerMock));
371 $extensionRepositoryMock->expects($this->once())->method(
'countByExtensionKey')->with(
'test123')->will($this->returnValue(1));
372 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
373 $dependencyUtility->_set(
'extensionRepository', $extensionRepositoryMock);
374 $count = $dependencyUtility->_call(
'isExtensionDownloadableFromTer',
'test123');
376 $this->assertTrue($count);
385 $extensionRepositoryMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository::class, array(
'countByExtensionKey'), array($this->objectManagerMock));
386 $extensionRepositoryMock->expects($this->once())->method(
'countByExtensionKey')->with(
'test123')->will($this->returnValue(0));
387 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
388 $dependencyUtility->_set(
'extensionRepository', $extensionRepositoryMock);
389 $count = $dependencyUtility->_call(
'isExtensionDownloadableFromTer',
'test123');
391 $this->assertFalse($count);
400 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getIdentifier',
'getHighestVersion',
'getLowestVersion'));
401 $dependencyMock->expects($this->once())->method(
'getIdentifier')->will($this->returnValue(
'dummy'));
402 $dependencyMock->expects($this->once())->method(
'getHighestVersion')->will($this->returnValue(
'10.0.0'));
403 $dependencyMock->expects($this->once())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
404 $extensionRepositoryMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository::class, array(
'countByVersionRangeAndExtensionKey'), array($this->objectManagerMock));
405 $extensionRepositoryMock->expects($this->once())->method(
'countByVersionRangeAndExtensionKey')->with(
'dummy', 1000000, 10000000)->will($this->returnValue(2));
406 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
407 $dependencyUtility->_set(
'extensionRepository', $extensionRepositoryMock);
408 $count = $dependencyUtility->_call(
'isDownloadableVersionCompatible', $dependencyMock);
410 $this->assertTrue($count);
419 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getIdentifier'));
420 $dependencyMock->expects($this->once())->method(
'getIdentifier')->will($this->returnValue(
'dummy'));
421 $extensionRepositoryMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository::class, array(
'countByVersionRangeAndExtensionKey'), array($this->objectManagerMock));
422 $extensionRepositoryMock->expects($this->once())->method(
'countByVersionRangeAndExtensionKey')->with(
'dummy', 1000000, 2000000)->will($this->returnValue(0));
423 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'getLowestAndHighestIntegerVersions'));
424 $dependencyUtility->_set(
'extensionRepository', $extensionRepositoryMock);
425 $dependencyUtility->expects($this->once())->method(
'getLowestAndHighestIntegerVersions')->will($this->returnValue(array(
426 'lowestIntegerVersion' => 1000000,
427 'highestIntegerVersion' => 2000000
429 $count = $dependencyUtility->_call(
'isDownloadableVersionCompatible', $dependencyMock);
431 $this->assertFalse($count);
440 $expectedVersions = array(
441 'lowestIntegerVersion' => 1000000,
442 'highestIntegerVersion' => 2000000
445 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getHighestVersion',
'getLowestVersion'));
446 $dependencyMock->expects($this->once())->method(
'getHighestVersion')->will($this->returnValue(
'2.0.0'));
447 $dependencyMock->expects($this->once())->method(
'getLowestVersion')->will($this->returnValue(
'1.0.0'));
448 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'dummy'));
449 $versions = $dependencyUtility->_call(
'getLowestAndHighestIntegerVersions', $dependencyMock);
451 $this->assertSame($expectedVersions, $versions);
460 $extension1 = new \TYPO3\CMS\Extensionmanager\Domain\Model\Extension();
461 $extension1->setExtensionKey(
'foo');
462 $extension1->setVersion(
'1.0.0');
463 $extension2 = new \TYPO3\CMS\Extensionmanager\Domain\Model\Extension();
464 $extension2->setExtensionKey(
'bar');
465 $extension2->setVersion(
'1.0.42');
467 $myStorage = new \TYPO3\CMS\Extensionmanager\Tests\Unit\Fixtures\LatestCompatibleExtensionObjectStorageFixture();
468 $myStorage->extensions[] = $extension1;
469 $myStorage->extensions[] = $extension2;
470 $dependencyMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Dependency::class, array(
'getIdentifier'));
471 $dependencyMock->expects($this->once())->method(
'getIdentifier')->will($this->returnValue(
'foobar'));
472 $dependencyUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, array(
'getLowestAndHighestIntegerVersions'));
473 $dependencyUtility->expects($this->once())->method(
'getLowestAndHighestIntegerVersions')->will($this->returnValue(array(
474 'lowestIntegerVersion' => 1000000,
475 'highestIntegerVersion' => 2000000
477 $extensionRepositoryMock = $this->getMock(\TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository::class, array(
'findByVersionRangeAndExtensionKeyOrderedByVersion'), array($this->objectManagerMock));
478 $extensionRepositoryMock->expects($this->once())->method(
'findByVersionRangeAndExtensionKeyOrderedByVersion')->with(
'foobar', 1000000, 2000000)->will($this->returnValue($myStorage));
479 $dependencyUtility->_set(
'extensionRepository', $extensionRepositoryMock);
480 $extension = $dependencyUtility->_call(
'getLatestCompatibleExtensionByIntegerVersionDependency', $dependencyMock);
482 $this->assertInstanceOf(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, $extension);
483 $this->assertSame(
'foo', $extension->getExtensionKey());