TRUE))); // Save the map for update_test_mock_page() to use. variable_set('update_test_xml_map', $xml_map); // Manually check the update status. $this->drupalGet('admin/reports/updates/check'); } /** * Run a series of assertions that are applicable for all update statuses. */ protected function standardTests() { $this->assertRaw('

' . t('Drupal core') . '

'); $this->assertRaw(l(t('Check manually'), 'admin/reports/updates/check'), t('Link to check available updates manually appears.')); $this->assertRaw(l(t('Drupal'), 'http://example.com/project/drupal'), t('Link to the Drupal project appears.')); $this->assertNoText(t('No available releases found')); } } class UpdateCoreTestCase extends UpdateTestHelper { public static function getInfo() { return array( 'name' => 'Update core functionality', 'description' => 'Tests the update module through a series of functional tests using mock XML data.', 'group' => 'Update', ); } function setUp() { parent::setUp('update_test', 'update'); $admin_user = $this->drupalCreateUser(array('administer site configuration')); $this->drupalLogin($admin_user); } /** * Tests the update module when no updates are available. */ function testNoUpdatesAvailable() { $this->setSystemInfo7_0(); $this->refreshUpdateStatus(array('drupal' => '0')); $this->drupalGet('admin/reports/updates'); $this->standardTests(); $this->assertText(t('Up to date')); $this->assertNoText(t('Update available')); $this->assertNoText(t('Security update required!')); } /** * Tests the update module when one normal update ("7.1") is available. */ function testNormalUpdateAvailable() { $this->setSystemInfo7_0(); $this->refreshUpdateStatus(array('drupal' => '1')); $this->drupalGet('admin/reports/updates'); $this->standardTests(); $this->assertNoText(t('Up to date')); $this->assertText(t('Update available')); $this->assertNoText(t('Security update required!')); $this->assertRaw(l('7.1', 'http://example.com/drupal-7-1-release'), t('Link to release appears.')); $this->assertRaw(l(t('Download'), 'http://example.com/drupal-7-1.tar.gz'), t('Link to download appears.')); $this->assertRaw(l(t('Release notes'), 'http://example.com/drupal-7-1-release'), t('Link to release notes appears.')); } /** * Tests the update module when a security update ("7.2") is available. */ function testSecurityUpdateAvailable() { $this->setSystemInfo7_0(); $this->refreshUpdateStatus(array('drupal' => '2-sec')); $this->drupalGet('admin/reports/updates'); $this->standardTests(); $this->assertNoText(t('Up to date')); $this->assertNoText(t('Update available')); $this->assertText(t('Security update required!')); $this->assertRaw(l('7.2', 'http://example.com/drupal-7-2-release'), t('Link to release appears.')); $this->assertRaw(l(t('Download'), 'http://example.com/drupal-7-2.tar.gz'), t('Link to download appears.')); $this->assertRaw(l(t('Release notes'), 'http://example.com/drupal-7-2-release'), t('Link to release notes appears.')); } /** * Ensure proper results where there are date mismatches among modules. */ function testDatestampMismatch() { $system_info = array( '#all' => array( // We need to think we're running a -dev snapshot to see dates. 'version' => '7.0-dev', 'datestamp' => time(), ), 'block' => array( // This is 2001-09-09 01:46:40 GMT, so test for "2001-Sep-". 'datestamp' => '1000000000', ), ); variable_set('update_test_system_info', $system_info); $this->refreshUpdateStatus(array('drupal' => 'dev')); $this->drupalGet('admin/reports/updates'); $this->assertNoText(t('2001-Sep-')); $this->assertText(t('Up to date')); $this->assertNoText(t('Update available')); $this->assertNoText(t('Security update required!')); } protected function setSystemInfo7_0() { $setting = array( '#all' => array( 'version' => '7.0', ), ); variable_set('update_test_system_info', $setting); } } class UpdateTestContribCase extends UpdateTestHelper { public static function getInfo() { return array( 'name' => 'Update contrib functionality', 'description' => 'Tests how the update module handles contributed modules and themes in a series of functional tests using mock XML data.', 'group' => 'Update', ); } function setUp() { parent::setUp('update_test', 'update', 'aaa_update_test', 'bbb_update_test', 'ccc_update_test'); $admin_user = $this->drupalCreateUser(array('administer site configuration')); $this->drupalLogin($admin_user); } /** * Test the basic functionality of a contrib module on the status report. */ function testUpdateContribBasic() { $system_info = array( '#all' => array( 'version' => '7.0', ), 'aaa_update_test' => array( 'project' => 'aaa_update_test', 'version' => '7.x-1.0', 'hidden' => FALSE, ), ); variable_set('update_test_system_info', $system_info); $this->refreshUpdateStatus( array( 'drupal' => '0', 'aaa_update_test' => '1_0', ) ); $this->drupalGet('admin/reports/updates'); $this->standardTests(); $this->assertText(t('Up to date')); $this->assertRaw('

' . t('Modules') . '

'); $this->assertNoText(t('Update available')); $this->assertRaw(l(t('AAA Update test'), 'http://example.com/project/aaa_update_test'), t('Link to aaa_update_test project appears.')); } }