diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-09-26 17:03:13 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-09-26 17:03:13 +0000 |
commit | bf7175abe5735bd304246bfc353dfdb7078f747c (patch) | |
tree | 7a35de607c383c165d30d87d99e05132fc737822 /modules/update | |
parent | dfa38ec66cc463ea4c98028032de1a11cdccca4c (diff) | |
download | brdo-bf7175abe5735bd304246bfc353dfdb7078f747c.tar.gz brdo-bf7175abe5735bd304246bfc353dfdb7078f747c.tar.bz2 |
- Patch #253501 by dww, cwgordon7 | boombatower, Dave Reid: added tests for update.module.
Diffstat (limited to 'modules/update')
-rw-r--r-- | modules/update/tests/no-updates.xml | 34 | ||||
-rw-r--r-- | modules/update/tests/normal-update.xml | 51 | ||||
-rw-r--r-- | modules/update/tests/security-update.xml | 69 | ||||
-rw-r--r-- | modules/update/tests/update_test.info | 8 | ||||
-rw-r--r-- | modules/update/tests/update_test.module | 50 | ||||
-rw-r--r-- | modules/update/update.info | 5 | ||||
-rw-r--r-- | modules/update/update.test | 100 |
7 files changed, 315 insertions, 2 deletions
diff --git a/modules/update/tests/no-updates.xml b/modules/update/tests/no-updates.xml new file mode 100644 index 000000000..701e11e3e --- /dev/null +++ b/modules/update/tests/no-updates.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<project xmlns:dc="http://purl.org/dc/elements/1.1/"> +<title>Drupal</title> +<short_name>drupal</short_name> +<dc:creator>Drupal</dc:creator> +<api_version>7.x</api_version> +<recommended_major>7</recommended_major> +<supported_majors>7</supported_majors> +<default_major>7</default_major> +<project_status>published</project_status> +<link>http://example.com/project/drupal</link> + <terms> + <term><name>Projects</name><value>Drupal project</value></term> + </terms> +<releases> + <release> + <name>Drupal 7.0</name> + <version>7.0</version> + <tag>DRUPAL-7-0</tag> + <version_major>7</version_major> + <version_patch>0</version_patch> + <status>published</status> + <release_link>http://example.com/drupal-7-0-release</release_link> + <download_link>http://example.com/drupal-7-0.tar.gz</download_link> + <date>1250424521</date> + <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash> + <filesize>1073741824</filesize> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> +</releases> +</project> diff --git a/modules/update/tests/normal-update.xml b/modules/update/tests/normal-update.xml new file mode 100644 index 000000000..de4cfd004 --- /dev/null +++ b/modules/update/tests/normal-update.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<project xmlns:dc="http://purl.org/dc/elements/1.1/"> +<title>Drupal</title> +<short_name>drupal</short_name> +<dc:creator>Drupal</dc:creator> +<api_version>7.x</api_version> +<recommended_major>7</recommended_major> +<supported_majors>7</supported_majors> +<default_major>7</default_major> +<project_status>published</project_status> +<link>http://example.com/project/drupal</link> + <terms> + <term><name>Projects</name><value>Drupal project</value></term> + </terms> +<releases> + <release> + <name>Drupal 7.1</name> + <version>7.1</version> + <tag>DRUPAL-7-1</tag> + <version_major>7</version_major> + <version_patch>1</version_patch> + <status>published</status> + <release_link>http://example.com/drupal-7-1-release</release_link> + <download_link>http://example.com/drupal-7-1.tar.gz</download_link> + <date>1250424581</date> + <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash> + <filesize>2147483648</filesize> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Drupal 7.0</name> + <version>7.0</version> + <tag>DRUPAL-7-0</tag> + <version_major>7</version_major> + <version_patch>0</version_patch> + <status>published</status> + <release_link>http://example.com/drupal-7-0-release</release_link> + <download_link>http://example.com/drupal-7-0.tar.gz</download_link> + <date>1250424521</date> + <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash> + <filesize>1073741824</filesize> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> +</releases> +</project> diff --git a/modules/update/tests/security-update.xml b/modules/update/tests/security-update.xml new file mode 100644 index 000000000..1e68c8d5f --- /dev/null +++ b/modules/update/tests/security-update.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<project xmlns:dc="http://purl.org/dc/elements/1.1/"> +<title>Drupal</title> +<short_name>drupal</short_name> +<dc:creator>Drupal</dc:creator> +<api_version>7.x</api_version> +<recommended_major>7</recommended_major> +<supported_majors>7</supported_majors> +<default_major>7</default_major> +<project_status>published</project_status> +<link>http://example.com/project/drupal</link> + <terms> + <term><name>Projects</name><value>Drupal project</value></term> + </terms> +<releases> + <release> + <name>Drupal 7.2</name> + <version>7.2</version> + <tag>DRUPAL-7-2</tag> + <version_major>7</version_major> + <version_patch>2</version_patch> + <status>published</status> + <release_link>http://example.com/drupal-7-2-release</release_link> + <download_link>http://example.com/drupal-7-2.tar.gz</download_link> + <date>1250424641</date> + <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash> + <filesize>4294967296</filesize> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + <term><name>Release type</name><value>Security update</value></term> + </terms> + </release> + <release> + <name>Drupal 7.1</name> + <version>7.1</version> + <tag>DRUPAL-7-1</tag> + <version_major>7</version_major> + <version_patch>1</version_patch> + <status>published</status> + <release_link>http://example.com/drupal-7-1-release</release_link> + <download_link>http://example.com/drupal-7-1.tar.gz</download_link> + <date>1250424581</date> + <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash> + <filesize>2147483648</filesize> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Drupal 7.0</name> + <version>7.0</version> + <tag>DRUPAL-7-0</tag> + <version_major>7</version_major> + <version_patch>0</version_patch> + <status>published</status> + <release_link>http://example.com/drupal-7-0-release</release_link> + <download_link>http://example.com/drupal-7-0.tar.gz</download_link> + <date>1250424521</date> + <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash> + <filesize>1073741824</filesize> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> +</releases> +</project> diff --git a/modules/update/tests/update_test.info b/modules/update/tests/update_test.info new file mode 100644 index 000000000..10445c297 --- /dev/null +++ b/modules/update/tests/update_test.info @@ -0,0 +1,8 @@ +; $Id$ +name = Update test +description = Support module for update module testing. +package = Testing +version = VERSION +core = 7.x +files[] = update_test.module +hidden = TRUE diff --git a/modules/update/tests/update_test.module b/modules/update/tests/update_test.module new file mode 100644 index 000000000..54e497415 --- /dev/null +++ b/modules/update/tests/update_test.module @@ -0,0 +1,50 @@ +<?php +// $Id$ + +/** + * Implement hook_menu(). + */ +function update_test_menu() { + $items = array(); + + $items['update-test'] = array( + 'title' => t('Update test'), + 'page callback' => 'update_test_mock_page', + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + ); + + return $items; +} + +/** + * Implement hook_system_info_alter(). + * + * This checks the 'update_test_system_info' variable and sees if we need to + * alter the system info for the given $file based on the setting. The setting + * is expected to be a nested associative array. If the key '#all' is defined, + * its subarray will include .info keys and values for all modules and themes + * on the system. Otherwise, the settings array is keyed by the module or + * theme short name ($file->name) and the subarrays contain settings just for + * that module or theme. + */ +function update_test_system_info_alter(&$info, $file) { + $setting = variable_get('update_test_system_info', array()); + foreach (array('#all', $file->name) as $id) { + if (!empty($setting[$id])) { + foreach ($setting[$id] as $key => $value) { + $info[$key] = $value; + } + } + } +} + +/** + * Page callback, prints mock XML for the update module. + */ +function update_test_mock_page() { + $xml = variable_get('update_test_xml', FALSE); + // Note: this will cause an exception to occur if no variable was set and + // $file is FALSE. + readfile(drupal_get_path('module', 'update_test') . "/$xml"); +} diff --git a/modules/update/update.info b/modules/update/update.info index 5e1006c39..36ea5d3cf 100644 --- a/modules/update/update.info +++ b/modules/update/update.info @@ -4,9 +4,10 @@ description = Checks the status of available updates for Drupal and your install version = VERSION package = Core core = 7.x -files[] = update.module files[] = update.compare.inc files[] = update.fetch.inc +files[] = update.install +files[] = update.module files[] = update.report.inc files[] = update.settings.inc -files[] = update.install +files[] = update.test diff --git a/modules/update/update.test b/modules/update/update.test new file mode 100644 index 000000000..3ce325056 --- /dev/null +++ b/modules/update/update.test @@ -0,0 +1,100 @@ +<?php +// $Id$ + +/** + * @file + * This file contains tests for the update module. + */ + +class UpdateTestCase extends DrupalWebTestCase { + + public static function getInfo() { + return array( + 'name' => 'Update 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); + variable_set('update_fetch_url', url('update-test', array('absolute' => TRUE))); + } + + /** + * Tests the update module when no updates are available. + */ + function testNoUpdatesAvailable() { + $this->setSystemInfo7_0(); + $this->refreshUpdateData('no-updates.xml'); + $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->refreshUpdateData('normal-update.xml'); + $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->refreshUpdateData('security-update.xml'); + $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.')); + } + + /** + * Helper function: force te update cache to refresh based on the contents of + * the specified XML file. + * + * @param $xml + * The file name of the XML file to use for mock update data. + */ + protected function refreshUpdateData($xml) { + variable_set('update_test_xml', $xml); + $this->drupalGet('admin/reports/updates/check'); + } + + protected function setSystemInfo7_0() { + $setting = array( + '#all' => array( + 'version' => '7.0', + ), + ); + variable_set('update_test_system_info', $setting); + } + + /** + * Helper function: run a series of assertions that are applicable for all + * update statuses. + */ + protected function standardTests() { + $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.')); + } +} |