diff options
author | David Rothstein <drothstein@gmail.com> | 2012-07-29 20:02:07 -0400 |
---|---|---|
committer | David Rothstein <drothstein@gmail.com> | 2012-07-29 20:02:07 -0400 |
commit | 4d26c301ac838915c5a4e328096e8ae8809ea903 (patch) | |
tree | 57b25939ae018721b60605a2e0a874bbd22ea887 /modules | |
parent | 6d1ce3866cdd543bf7ae9a33439d37a33492d248 (diff) | |
download | brdo-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.test | 47 | ||||
-rw-r--r-- | modules/simpletest/tests/form_test.module | 35 |
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) { |