summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDavid Rothstein <drothstein@gmail.com>2012-07-29 20:02:07 -0400
committerDavid Rothstein <drothstein@gmail.com>2012-07-29 20:02:07 -0400
commit4d26c301ac838915c5a4e328096e8ae8809ea903 (patch)
tree57b25939ae018721b60605a2e0a874bbd22ea887 /modules
parent6d1ce3866cdd543bf7ae9a33439d37a33492d248 (diff)
downloadbrdo-4d26c301ac838915c5a4e328096e8ae8809ea903.tar.gz
brdo-4d26c301ac838915c5a4e328096e8ae8809ea903.tar.bz2
Issue #635046 by claudiu.cristea, sun, fago: Fixed form_state_values_clean() is polluting form values.
Diffstat (limited to 'modules')
-rw-r--r--modules/simpletest/tests/form.test47
-rw-r--r--modules/simpletest/tests/form_test.module35
2 files changed, 81 insertions, 1 deletions
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index 5aa7e4aa3..d1bb171e1 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -589,7 +589,7 @@ class FormValidationTestCase extends DrupalWebTestCase {
*/
function testValidateLimitErrors() {
$edit = array(
- 'test' => 'invalid',
+ 'test' => 'invalid',
'test_numeric_index[0]' => 'invalid',
'test_substring[foo]' => 'invalid',
);
@@ -1170,6 +1170,51 @@ class FormStateValuesCleanTestCase extends DrupalWebTestCase {
}
/**
+ * Tests $form_state clearance with form elements having buttons.
+ */
+class FormStateValuesCleanAdvancedTestCase extends DrupalWebTestCase {
+ /**
+ * An image file path for uploading.
+ */
+ protected $image;
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Form state values clearance (advanced)',
+ 'description' => 'Test proper removal of submitted form values using form_state_values_clean() when having forms with elements containing buttons like "managed_file".',
+ 'group' => 'Form API',
+ );
+ }
+
+ function setUp() {
+ parent::setUp('form_test');
+ }
+
+ /**
+ * Tests form_state_values_clean().
+ */
+ function testFormStateValuesCleanAdvanced() {
+
+ // Get an image for uploading.
+ $image_files = $this->drupalGetTestFiles('image');
+ $this->image = current($image_files);
+
+ // Check if the physical file is there.
+ $this->assertTrue(is_file($this->image->uri), t("The image file we're going to upload exists."));
+
+ // "Browse" for the desired file.
+ $edit = array('files[image]' => drupal_realpath($this->image->uri));
+
+ // Post the form.
+ $this->drupalPost('form_test/form-state-values-clean-advanced', $edit, t('Submit'));
+
+ // Expecting a 200 HTTP code.
+ $this->assertResponse(200, t('Received a 200 response for posted test file.'));
+ $this->assertRaw(t('You WIN!'), t('Found the success message.'));
+ }
+}
+
+/**
* Tests form rebuilding.
*
* @todo Add tests for other aspects of form rebuilding.
diff --git a/modules/simpletest/tests/form_test.module b/modules/simpletest/tests/form_test.module
index a6b21a41a..e4ac77b12 100644
--- a/modules/simpletest/tests/form_test.module
+++ b/modules/simpletest/tests/form_test.module
@@ -99,6 +99,14 @@ function form_test_menu() {
'type' => MENU_CALLBACK,
);
+ $items['form_test/form-state-values-clean-advanced'] = array(
+ 'title' => 'Form state values clearance advanced test',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('form_test_form_state_values_clean_advanced_form'),
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+
$items['form-test/checkbox'] = array(
'title' => t('Form test'),
'page callback' => 'drupal_get_form',
@@ -879,6 +887,33 @@ function form_test_form_state_values_clean_form_submit($form, &$form_state) {
}
/**
+ * Form constructor for the form_state_values_clean() test.
+ */
+function form_test_form_state_values_clean_advanced_form($form, &$form_state) {
+ // Build an example form containing a managed file and a submit form element.
+ $form['image'] = array(
+ '#type' => 'managed_file',
+ '#title' => t('Image'),
+ '#upload_location' => 'public://',
+ '#default_value' => 0,
+ );
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Submit'),
+ );
+ return $form;
+}
+
+/**
+ * Form submission handler for form_test_form_state_values_clean_advanced_form().
+ */
+function form_test_form_state_values_clean_advanced_form_submit($form, &$form_state) {
+ form_state_values_clean($form_state);
+ print t('You WIN!');
+ exit;
+}
+
+/**
* Build a form to test a checkbox.
*/
function _form_test_checkbox($form, &$form_state) {