You are here

function FormsFormStorageTestCase::testImmutableForm in Drupal 7

Verifies that form build-id is regenerated when loading an immutable form from the cache.

File

modules/simpletest/tests/form.test, line 1291
Unit tests for the Drupal Form API.

Class

FormsFormStorageTestCase
Test the form storage on a multistep form.

Code

function testImmutableForm() {

  // Request the form with 'cache' query parameter to enable form caching.
  $this
    ->drupalGet('form_test/form-storage', array(
    'query' => array(
      'cache' => 1,
      'immutable' => 1,
    ),
  ));
  $buildIdFields = $this
    ->xpath('//input[@name="form_build_id"]');
  $this
    ->assertEqual(count($buildIdFields), 1, 'One form build id field on the page');
  $buildId = (string) $buildIdFields[0]['value'];

  // Trigger validation error by submitting an empty title.
  $edit = array(
    'title' => '',
  );
  $this
    ->drupalPost(NULL, $edit, 'Continue submit');

  // Verify that the build-id did change.
  $this
    ->assertNoFieldByName('form_build_id', $buildId, 'Build id changes when form validation fails');

  // Retrieve the new build-id.
  $buildIdFields = $this
    ->xpath('//input[@name="form_build_id"]');
  $this
    ->assertEqual(count($buildIdFields), 1, 'One form build id field on the page');
  $buildId = (string) $buildIdFields[0]['value'];

  // Trigger validation error by again submitting an empty title.
  $edit = array(
    'title' => '',
  );
  $this
    ->drupalPost(NULL, $edit, 'Continue submit');

  // Verify that the build-id does not change the second time.
  $this
    ->assertFieldByName('form_build_id', $buildId, 'Build id remains the same when form validation fails subsequently');
}