1 form.test FormsFormStorageTestCase::testImmutableForm()

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

File

core/modules/simpletest/tests/form.test, line 1297
Unit tests for the Backdrop 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->backdropGet('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->backdropPost(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->backdropPost(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');
}