2 namespace TYPO3\CMS\Install\Service;
18 use TYPO3\CMS\Core\Tests\UnitTestCase;
28 public function updateVersionMatrixStoresVersionMatrixInRegistry()
31 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'fetchVersionMatrixFromRemote'), array(),
'',
false);
32 $registry = $this->getMock(Registry::class);
33 $versionArray = array(7 => []);
34 $registry->expects($this->once())->method(
'set')->with(
'TYPO3.CMS.Install',
'coreVersionMatrix', $versionArray);
36 $instance->expects($this->once())->method(
'fetchVersionMatrixFromRemote')->will($this->returnValue($versionArray));
37 $instance->updateVersionMatrix();
43 public function updateVersionMatrixRemovesOldReleasesFromMatrix()
46 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'fetchVersionMatrixFromRemote'), array(),
'',
false);
47 $registry = $this->getMock(Registry::class);
48 $versionArray = array(
53 ->expects($this->once())
55 ->with(
'TYPO3.CMS.Install',
'coreVersionMatrix', $this->logicalNot($this->arrayHasKey(
'6.2')));
57 $instance->expects($this->once())->method(
'fetchVersionMatrixFromRemote')->will($this->returnValue($versionArray));
58 $instance->updateVersionMatrix();
64 public function isInstalledVersionAReleasedVersionReturnsTrueForNonDevelopmentVersion()
67 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'getInstalledVersion'), array(),
'',
false);
68 $instance->expects($this->once())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
69 $this->assertTrue($instance->isInstalledVersionAReleasedVersion());
75 public function isInstalledVersionAReleasedVersionReturnsFalseForDevelopmentVersion()
78 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'getInstalledVersion'), array(),
'',
false);
79 $instance->expects($this->once())->method(
'getInstalledVersion')->will($this->returnValue(
'7.4-dev'));
80 $this->assertFalse($instance->isInstalledVersionAReleasedVersion());
87 public function getTarGzSha1OfVersionThrowsExceptionIfSha1DoesNotExistInMatrix()
90 $instance = $this->getAccessibleMock(
91 CoreVersionService::class,
92 array(
'getVersionMatrix',
'getMajorVersion',
'ensureVersionExistsInMatrix'),
97 $versionMatrix = array(
104 $instance->expects($this->once())->method(
'getMajorVersion')->will($this->returnValue(
'7'));
105 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
106 $this->assertTrue($instance->getTarGzSha1OfVersion(
'7.2.0'));
112 public function getTarGzSha1OfVersionReturnsSha1OfSpecifiedVersion()
114 $versionMatrixFixtureFile = __DIR__ .
'/Fixtures/VersionMatrixFixture.php';
116 $instance = $this->getAccessibleMock(
117 CoreVersionService::class,
118 array(
'getVersionMatrix',
'getMajorVersion',
'ensureVersionExistsInMatrix'),
123 $instance->expects($this->any())->method(
'getMajorVersion')->will($this->returnValue(
'7'));
124 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue(require($versionMatrixFixtureFile)));
125 $this->assertSame(
'3dc156eed4b99577232f537d798a8691493f8a83', $instance->getTarGzSha1OfVersion(
'7.2.0'));
133 public function isYoungerPatchReleaseAvailableReturnsTrueIfYoungerReleaseIsAvailable()
136 $instance = $this->getAccessibleMock(
137 CoreVersionService::class,
138 array(
'getVersionMatrix',
'getInstalledVersion'),
143 $versionMatrix = array(
147 'type' =>
'security',
148 'date' =>
'2013-12-01 18:24:25 UTC',
152 'date' =>
'2013-11-01 18:24:25 UTC',
157 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
158 $instance->expects($this->any())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
159 $this->assertTrue($instance->isYoungerPatchReleaseAvailable());
167 public function isYoungerReleaseAvailableReturnsFalseIfNoYoungerReleaseExists()
170 $instance = $this->getAccessibleMock(
171 CoreVersionService::class,
172 array(
'getVersionMatrix',
'getInstalledVersion'),
177 $versionMatrix = array(
182 'date' =>
'2013-12-01 18:24:25 UTC',
186 'date' =>
'2013-11-01 18:24:25 UTC',
191 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
192 $instance->expects($this->any())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
193 $this->assertFalse($instance->isYoungerPatchReleaseAvailable());
201 public function isYoungerReleaseAvailableReturnsFalseIfOnlyADevelopmentReleaseIsYounger()
204 $instance = $this->getAccessibleMock(
205 CoreVersionService::class,
206 array(
'getVersionMatrix',
'getInstalledVersion'),
211 $versionMatrix = array(
215 'type' =>
'development',
216 'date' =>
'2013-12-01 18:24:25 UTC',
220 'date' =>
'2013-11-01 18:24:25 UTC',
225 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
226 $instance->expects($this->any())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
227 $this->assertFalse($instance->isYoungerPatchReleaseAvailable());
235 public function isYoungerDevelopmentReleaseAvailableReturnsTrueIfADevelopmentReleaseIsYounger()
238 $instance = $this->getAccessibleMock(
239 CoreVersionService::class,
240 array(
'getVersionMatrix',
'getInstalledVersion'),
245 $versionMatrix = array(
249 'type' =>
'development',
250 'date' =>
'2013-12-01 18:24:25 UTC',
254 'date' =>
'2013-11-01 18:24:25 UTC',
259 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
260 $instance->expects($this->any())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
261 $this->assertTrue($instance->isYoungerPatchDevelopmentReleaseAvailable());
269 public function isUpdateSecurityRelevantReturnsTrueIfAnUpdateIsSecurityRelevant()
272 $instance = $this->getAccessibleMock(
273 CoreVersionService::class,
274 array(
'getVersionMatrix',
'getInstalledVersion'),
279 $versionMatrix = array(
283 'type' =>
'security',
284 'date' =>
'2013-12-01 18:24:25 UTC',
288 'date' =>
'2013-11-01 18:24:25 UTC',
293 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
294 $instance->expects($this->any())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
295 $this->assertTrue($instance->isUpdateSecurityRelevant());
303 public function isUpdateSecurityRelevantReturnsFalseIfUpdateIsNotSecurityRelevant()
306 $instance = $this->getAccessibleMock(
307 CoreVersionService::class,
308 array(
'getVersionMatrix',
'getInstalledVersion'),
313 $versionMatrix = array(
318 'date' =>
'2013-12-01 18:24:25 UTC',
322 'date' =>
'2013-11-01 18:24:25 UTC',
327 $instance->expects($this->any())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
328 $instance->expects($this->any())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
329 $this->assertFalse($instance->isUpdateSecurityRelevant());
335 public function getInstalledMajorVersionFetchesInstalledVersionNumber()
338 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'getInstalledVersion'), array(),
'',
false);
339 $instance->expects($this->once())->method(
'getInstalledVersion')->will($this->returnValue(
'7.2.0'));
340 $this->assertSame(
'7', $instance->_call(
'getInstalledMajorVersion'));
371 public function getMajorVersionReturnsCorrectMajorVersion($version, $expectedMajor)
374 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'dummy'), array(),
'',
false);
375 $this->assertSame($expectedMajor, $instance->_call(
'getMajorVersion', $version));
382 public function getVersionMatrixThrowsExceptionIfVersionMatrixIsNotYetSetInRegistry()
385 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'fetchVersionMatrixFromRemote'), array(),
'',
false);
386 $registry = $this->getMock(Registry::class);
387 $registry->expects($this->once())->method(
'get')->will($this->returnValue(null));
389 $instance->_call(
'getVersionMatrix');
395 public function getVersionMatrixReturnsMatrixFromRegistry()
398 $instance = $this->getAccessibleMock(CoreVersionService::class, array(
'fetchVersionMatrixFromRemote'), array(),
'',
false);
399 $registry = $this->getMock(Registry::class);
400 $versionArray = array($this->getUniqueId());
401 $registry->expects($this->once())->method(
'get')->will($this->returnValue($versionArray));
403 $this->assertSame($versionArray, $instance->_call(
'getVersionMatrix'));
410 public function getReleaseTimestampOfVersionThrowsExceptionIfReleaseDateIsNotDefined()
412 $versionMatrix = array(
420 $instance = $this->getAccessibleMock(
421 CoreVersionService::class,
422 array(
'getVersionMatrix',
'getMajorVersion',
'ensureVersionExistsInMatrix'),
427 $instance->expects($this->once())->method(
'getMajorVersion')->will($this->returnValue(
'7'));
428 $instance->expects($this->once())->method(
'getVersionMatrix')->will($this->returnValue($versionMatrix));
429 $instance->_call(
'getReleaseTimestampOfVersion',
'7.2.0');
435 public function getReleaseTimestampOfVersionReturnsTimestamp()
437 $versionMatrixFixtureFile = __DIR__ .
'/Fixtures/VersionMatrixFixture.php';
439 $instance = $this->getAccessibleMock(
440 CoreVersionService::class,
441 array(
'getVersionMatrix',
'getMajorVersion',
'ensureVersionExistsInMatrix'),
446 $instance->expects($this->once())->method(
'getMajorVersion')->will($this->returnValue(
'7'));
447 $instance->expects($this->once())->method(
'getVersionMatrix')->will($this->returnValue(require($versionMatrixFixtureFile)));
448 $this->assertSame(1398968665, $instance->_call(
'getReleaseTimestampOfVersion',
'7.3.1'));
455 public function ensureVersionExistsInMatrixThrowsExceptionIfMinorVersionDoesNotExist()
457 $versionMatrixFixtureFile = __DIR__ .
'/Fixtures/VersionMatrixFixture.php';
459 $instance = $this->getAccessibleMock(
460 CoreVersionService::class,
461 array(
'getVersionMatrix',
'getMajorVersion'),
466 $instance->expects($this->once())->method(
'getMajorVersion')->will($this->returnValue(
'2'));
467 $instance->expects($this->once())->method(
'getVersionMatrix')->will($this->returnValue(require($versionMatrixFixtureFile)));
468 $instance->_call(
'ensureVersionExistsInMatrix',
'2.0.42');
475 public function ensureVersionExistsInMatrixThrowsExceptionIfPatchLevelDoesNotExist()
477 $versionMatrixFixtureFile = __DIR__ .
'/Fixtures/VersionMatrixFixture.php';
479 $instance = $this->getAccessibleMock(
480 CoreVersionService::class,
481 array(
'getVersionMatrix',
'getMajorVersion'),
486 $instance->expects($this->once())->method(
'getMajorVersion')->will($this->returnValue(
'7'));
487 $instance->expects($this->once())->method(
'getVersionMatrix')->will($this->returnValue(require($versionMatrixFixtureFile)));
488 $instance->_call(
'ensureVersionExistsInMatrix',
'7.2.5');