Commit 30432a03 authored by webchick's avatar webchick

Issue #1986330 by subhojit777, marcelodornelas, wheatpenny, kasperg, timaholt,...

Issue #1986330 by subhojit777, marcelodornelas, wheatpenny, kasperg, timaholt, stefank, AkshayKalose, develCuy, valthebald, moymilo, YesCT, dawehner, tstoeckler: When Batch ID doesn't exist, Drupal should emit a 404
parent b911f721
......@@ -15,6 +15,7 @@
*/
use Drupal\Component\Utility\SafeMarkup;
use Drupal\Component\Utility\String;
use Drupal\Component\Utility\Timer;
use Drupal\Component\Utility\UrlHelper;
use Drupal\Core\Batch\Percentage;
......@@ -23,6 +24,7 @@
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Renders the batch processing page based on the current state of the batch.
......@@ -43,8 +45,7 @@ function _batch_page(Request $request) {
if (!$batch) {
$batch = \Drupal::service('batch.storage')->load($request_id);
if (!$batch) {
drupal_set_message(t('No active batch.'), 'error');
return new RedirectResponse(\Drupal::url('<front>', [], ['absolute' => TRUE]));
throw new NotFoundHttpException(String::format('Batch %id requested, but not found.', array('%id' => $request_id)));
}
}
// Restore safe strings from previous batches.
......
<?php
/**
* @file
* Contains \Drupal\Tests\Core\Batch\BatchNotFoundTest.
*/
namespace Drupal\Tests\Core\Batch;
use Drupal\simpletest\WebTestBase;
/**
* Tests if Drupal returns page not found error when batch ID does not exist.
*
* @group Batch
*/
class BatchNotFoundTest extends WebTestBase {
/**
* The main user for testing.
*
* @var object
*/
protected $userToBeDeleted;
/**
* Administrator user.
*
* @var object
*/
protected $adminUser;
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array('views');
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->adminUser = $this->drupalCreateUser(array('administer users'));;
$this->userToBeDeleted = $this->drupalCreateUser();
}
/**
* Tests for page not found error if batch ID does not exist.
*/
public function testBatchNotFound() {
$this->drupalLogin($this->adminUser);
// Replicate a batch process by cancelling a user.
$edit = array(
'action' => 'user_cancel_user_action',
'user_bulk_form[2]' => TRUE,
);
$this->drupalPostForm('admin/people', $edit, t('Apply'));
$this->drupalPostForm(NULL, array(), t('Cancel accounts'));
$batch_id = db_next_id();
$this->drupalGet('batch', array(
'query' => array(
'op' => 'start',
'id' => $batch_id,
),
));
$this->assertResponse(404);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment