Mercurial > hg > cmmr2012-drupal-site
diff core/modules/update/tests/src/Functional/UpdateContribTest.php @ 4:a9cd425dd02b
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:11:55 +0000 |
parents | c75dbcec494b |
children |
line wrap: on
line diff
--- a/core/modules/update/tests/src/Functional/UpdateContribTest.php Thu Feb 28 11:14:44 2019 +0000 +++ b/core/modules/update/tests/src/Functional/UpdateContribTest.php Thu Feb 28 13:11:55 2019 +0000 @@ -178,7 +178,7 @@ // we're really testing that the project listings are in the right order. $bbb_project_link = '<div class="project-update__title"><a href="http://example.com/project/bbb_update_test">BBB Update test</a>'; $ccc_project_link = '<div class="project-update__title"><a href="http://example.com/project/ccc_update_test">CCC Update test</a>'; - $this->assertTrue(strpos($this->getRawContent(), $bbb_project_link) < strpos($this->getRawContent(), $ccc_project_link), "'BBB Update test' project is listed before the 'CCC Update test' project"); + $this->assertTrue(strpos($this->getSession()->getPage()->getContent(), $bbb_project_link) < strpos($this->getSession()->getPage()->getContent(), $ccc_project_link), "'BBB Update test' project is listed before the 'CCC Update test' project"); } /** @@ -438,4 +438,130 @@ $this->assertNoText(t('Security update')); } + /** + * Tests update status of security releases. + * + * @param string $module_version + * The module version the site is using. + * @param string[] $expected_security_releases + * The security releases, if any, that the status report should recommend. + * @param string $expected_update_message_type + * The type of update message expected. + * @param string $fixture + * The fixture file to use. + * + * @dataProvider securityUpdateAvailabilityProvider + */ + public function testSecurityUpdateAvailability($module_version, array $expected_security_releases, $expected_update_message_type, $fixture) { + $system_info = [ + '#all' => [ + 'version' => '8.0.0', + ], + 'aaa_update_test' => [ + 'project' => 'aaa_update_test', + 'version' => $module_version, + 'hidden' => FALSE, + ], + ]; + $this->config('update_test.settings')->set('system_info', $system_info)->save(); + $this->refreshUpdateStatus(['drupal' => '0.0', 'aaa_update_test' => $fixture]); + $this->assertSecurityUpdates('aaa_update_test', $expected_security_releases, $expected_update_message_type, 'table.update:nth-of-type(2)'); + } + + /** + * Data provider method for testSecurityUpdateAvailability(). + * + * These test cases rely on the following fixtures containing the following + * releases: + * - aaa_update_test.sec.8.x-1.2.xml + * - 8.x-1.2 Security update + * - 8.x-1.1 Insecure + * - 8.x-1.0 Insecure + * - aaa_update_test.sec.8.x-1.1_8.x-1.2.xml + * - 8.x-1.2 Security update + * - 8.x-1.1 Security update, Insecure + * - 8.x-1.0 Insecure + * - aaa_update_test.sec.8.x-1.2_8.x-2.2.xml + * - 8.x-3.0-beta2 + * - 8.x-3.0-beta1 Insecure + * - 8.x-2.2 Security update + * - 8.x-2.1 Security update, Insecure + * - 8.x-2.0 Insecure + * - 8.x-1.2 Security update + * - 8.x-1.1 Insecure + * - 8.x-1.0 Insecure + * - aaa_update_test.sec.8.x-2.2_1.x_secure.xml + * - 8.x-2.2 Security update + * - 8.x-2.1 Security update, Insecure + * - 8.x-2.0 Insecure + * - 8.x-1.2 + * - 8.x-1.1 + * - 8.x-1.0 + */ + public function securityUpdateAvailabilityProvider() { + return [ + // Security releases available for module major release 1. + // No releases for next major. + '8.x-1.0, 8.x-1.2' => [ + 'module_patch_version' => '8.x-1.0', + 'expected_security_releases' => ['8.x-1.2'], + 'expected_update_message_type' => static::SECURITY_UPDATE_REQUIRED, + 'fixture' => 'sec.8.x-1.2', + ], + // Two security releases available for module major release 1. + // 8.x-1.1 security release marked as insecure. + // No releases for next major. + '8.x-1.0, 8.x-1.1 8.x-1.2' => [ + 'module_patch_version' => '8.x-1.0', + 'expected_security_releases' => ['8.x-1.2'], + 'expected_update_message_type' => static::SECURITY_UPDATE_REQUIRED, + 'fixture' => 'sec.8.x-1.1_8.x-1.2', + ], + // Security release available for module major release 2. + // No releases for next major. + '8.x-2.0, 8.x-2.2' => [ + 'module_patch_version' => '8.x-2.0', + 'expected_security_releases' => ['8.x-2.2'], + 'expected_update_message_type' => static::SECURITY_UPDATE_REQUIRED, + 'fixture' => 'sec.8.x-2.2_1.x_secure', + ], + '8.x-2.2, 8.x-1.2 8.x-2.2' => [ + 'module_patch_version' => '8.x-2.2', + 'expected_security_releases' => [], + 'expected_update_message_type' => static::UPDATE_NONE, + 'fixture' => 'sec.8.x-1.2_8.x-2.2', + ], + // Security release available for module major release 1. + // Security release also available for next major. + '8.x-1.0, 8.x-1.2 8.x-2.2' => [ + 'module_patch_version' => '8.x-1.0', + 'expected_security_releases' => ['8.x-1.2'], + 'expected_update_message_type' => static::SECURITY_UPDATE_REQUIRED, + 'fixture' => 'sec.8.x-1.2_8.x-2.2', + ], + // No security release available for module major release 1 but 1.x + // releases are not marked as insecure. + // Security release available for next major. + '8.x-1.0, 8.x-2.2, not insecure' => [ + 'module_patch_version' => '8.x-1.0', + 'expected_security_releases' => [], + 'expected_update_message_type' => static::UPDATE_AVAILABLE, + 'fixture' => 'sec.8.x-2.2_1.x_secure', + ], + // On latest security release for module major release 1. + // Security release also available for next major. + '8.x-1.2, 8.x-1.2 8.x-2.2' => [ + 'module_patch_version' => '8.x-1.2', + 'expected_security_release' => [], + 'expected_update_message_type' => static::UPDATE_NONE, + 'fixture' => 'sec.8.x-1.2_8.x-2.2', + ], + // @todo In https://www.drupal.org/node/2865920 add test cases: + // - 8.x-2.0 using fixture 'sec.8.x-1.2_8.x-2.2' to ensure that 8.x-2.2 + // is the only security update. + // - 8.x-3.0-beta1 using fixture 'sec.8.x-1.2_8.x-2.2' to ensure that + // 8.x-2.2 is the only security update. + ]; + } + }