diff --git a/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php b/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php
index 4cf5bcd..0595f10 100644
--- a/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php
+++ b/core/modules/config/lib/Drupal/config/Form/ConfigExportForm.php
@@ -1,17 +1,30 @@
 <?php
 
+/**
+ * @file
+ * Contains \Drupal\config\Form\ConfigExportForm.
+ */
+
 namespace Drupal\config\Form;
 
 use Drupal\Core\Form\FormInterface;
 
+/**
+ * Defines the configuration export form.
+ */
 class ConfigExportForm implements FormInterface {
 
+  /**
+   * {@inheritdoc}
+   */
   public function getFormID() {
     return 'config_export_form';
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function buildForm(array $form, array &$form_state) {
-    $form['#action'] = '/admin/config/development/export-download';
     $form['description'] = array(
       '#markup' => '<p>' . t('Use the export button below to download your site configuration.') . '</p>',
     );
@@ -19,13 +32,20 @@ public function buildForm(array $form, array &$form_state) {
       '#type' => 'submit',
       '#value' => t('Export'),
     );
+
     return $form;
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function validateForm(array &$form, array &$form_state) {
   }
 
+  /**
+   * {@inheritdoc}
+   */
   public function submitForm(array &$form, array &$form_state) {
+    $form_state['redirect'] = 'admin/config/development/export-download';
   }
 }
-
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
new file mode 100644
index 0000000..54c401e
--- /dev/null
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigExportUITest.php
@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\config\Tests\ConfigExportUITest.
+ */
+
+namespace Drupal\config\Tests;
+
+use Drupal\simpletest\WebTestBase;
+use Drupal\Component\Archiver\Tar;
+
+/**
+ * Tests exporting configuration from active store in files.
+ */
+class ConfigExportUITest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('config', 'config_test');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Export UI',
+      'description' => 'Tests the user interface for exporting configuration.',
+      'group' => 'Configuration',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    $this->web_user = $this->drupalCreateUser(array('export configuration'));
+    $this->drupalLogin($this->web_user);
+  }
+
+  /**
+   * Tests export of configuration.
+   */
+  function testExport() {
+    // Verify the export page with export submit button is available.
+    $this->drupalGet('admin/config/development/export');
+    $this->assertFieldById('edit-submit', t('Export'));
+
+    // Submit the export form and verify response.
+    $this->drupalPost('admin/config/development/export', array(), t('Export'));
+    $this->assertResponse(200, 'User can access the download callback.');
+
+    // Get the archived binary file provided to user for download.
+    $archive_data = $this->drupalGetContent();
+
+    // Temporarily save the archive file.
+    $uri = file_unmanaged_save_data($archive_data, 'temporary://config.tar.gz');
+
+    // Extract the archive and verify it's not empty.
+    $file_path = file_directory_temp() . '/' . file_uri_target($uri);
+    $archiver = new Tar($file_path);
+    $archive_contents = $archiver->listContents();
+    $this->assert(!empty($archive_contents), 'Downloaded archive file is not empty.');
+
+    // Prepare the list of config files from active storage.
+    // @see ConfigController::downloadExport()
+    $storage_active = $this->container->get('config.storage');
+    $config_files = array();
+    foreach ($storage_active->listAll() as $config_name) {
+      $config_files[] = $config_name . '.yml';
+    }
+    // Assert that the downloaded archive file contents are the same as the test
+    // site active store.
+    $this->assertIdentical($archive_contents, $config_files);
+  }
+}
