Move into nested docroot
This commit is contained in:
parent
83a0d3a149
commit
c8b70abde9
13405 changed files with 0 additions and 0 deletions
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\ban\Functional;
|
||||
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
use Drupal\Core\Database\Database;
|
||||
use Drupal\ban\BanIpManager;
|
||||
|
||||
/**
|
||||
* Tests IP address banning.
|
||||
*
|
||||
* @group ban
|
||||
*/
|
||||
class IpAddressBlockingTest extends BrowserTestBase {
|
||||
|
||||
/**
|
||||
* Modules to install.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('ban');
|
||||
|
||||
/**
|
||||
* Tests various user input to confirm correct validation and saving of data.
|
||||
*/
|
||||
function testIPAddressValidation() {
|
||||
// Create user.
|
||||
$admin_user = $this->drupalCreateUser(array('ban IP addresses'));
|
||||
$this->drupalLogin($admin_user);
|
||||
$this->drupalGet('admin/config/people/ban');
|
||||
|
||||
// Ban a valid IP address.
|
||||
$edit = array();
|
||||
$edit['ip'] = '1.2.3.3';
|
||||
$this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
|
||||
$ip = db_query("SELECT iid from {ban_ip} WHERE ip = :ip", array(':ip' => $edit['ip']))->fetchField();
|
||||
$this->assertTrue($ip, 'IP address found in database.');
|
||||
$this->assertRaw(t('The IP address %ip has been banned.', array('%ip' => $edit['ip'])), 'IP address was banned.');
|
||||
|
||||
// Try to block an IP address that's already blocked.
|
||||
$edit = array();
|
||||
$edit['ip'] = '1.2.3.3';
|
||||
$this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
|
||||
$this->assertText(t('This IP address is already banned.'));
|
||||
|
||||
// Try to block a reserved IP address.
|
||||
$edit = array();
|
||||
$edit['ip'] = '255.255.255.255';
|
||||
$this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
|
||||
$this->assertText(t('Enter a valid IP address.'));
|
||||
|
||||
// Try to block a reserved IP address.
|
||||
$edit = array();
|
||||
$edit['ip'] = 'test.example.com';
|
||||
$this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
|
||||
$this->assertText(t('Enter a valid IP address.'));
|
||||
|
||||
// Submit an empty form.
|
||||
$edit = array();
|
||||
$edit['ip'] = '';
|
||||
$this->drupalPostForm('admin/config/people/ban', $edit, t('Add'));
|
||||
$this->assertText(t('Enter a valid IP address.'));
|
||||
|
||||
// Pass an IP address as a URL parameter and submit it.
|
||||
$submit_ip = '1.2.3.4';
|
||||
$this->drupalPostForm('admin/config/people/ban/' . $submit_ip, array(), t('Add'));
|
||||
$ip = db_query("SELECT iid from {ban_ip} WHERE ip = :ip", array(':ip' => $submit_ip))->fetchField();
|
||||
$this->assertTrue($ip, 'IP address found in database');
|
||||
$this->assertRaw(t('The IP address %ip has been banned.', array('%ip' => $submit_ip)), 'IP address was banned.');
|
||||
|
||||
// Submit your own IP address. This fails, although it works when testing
|
||||
// manually.
|
||||
// TODO: On some systems this test fails due to a bug/inconsistency in cURL.
|
||||
// $edit = array();
|
||||
// $edit['ip'] = \Drupal::request()->getClientIP();
|
||||
// $this->drupalPostForm('admin/config/people/ban', $edit, t('Save'));
|
||||
// $this->assertText(t('You may not ban your own IP address.'));
|
||||
|
||||
// Test duplicate ip address are not present in the 'blocked_ips' table.
|
||||
// when they are entered programmatically.
|
||||
$connection = Database::getConnection();
|
||||
$banIp = new BanIpManager($connection);
|
||||
$ip = '1.0.0.0';
|
||||
$banIp->banIp($ip);
|
||||
$banIp->banIp($ip);
|
||||
$banIp->banIp($ip);
|
||||
$query = db_select('ban_ip', 'bip');
|
||||
$query->fields('bip', array('iid'));
|
||||
$query->condition('bip.ip', $ip);
|
||||
$ip_count = $query->execute()->fetchAll();
|
||||
$this->assertEqual(1, count($ip_count));
|
||||
$ip = '';
|
||||
$banIp->banIp($ip);
|
||||
$banIp->banIp($ip);
|
||||
$query = db_select('ban_ip', 'bip');
|
||||
$query->fields('bip', array('iid'));
|
||||
$query->condition('bip.ip', $ip);
|
||||
$ip_count = $query->execute()->fetchAll();
|
||||
$this->assertEqual(1, count($ip_count));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\ban\Kernel\Migrate\d7;
|
||||
|
||||
use Drupal\config\Tests\SchemaCheckTestTrait;
|
||||
use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
|
||||
|
||||
/**
|
||||
* Migrate blocked IPs.
|
||||
*
|
||||
* @group ban
|
||||
*/
|
||||
class MigrateBlockedIPsTest extends MigrateDrupal7TestBase {
|
||||
|
||||
use SchemaCheckTestTrait;
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['ban'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->installSchema('ban', ['ban_ip']);
|
||||
$this->executeMigration('d7_blocked_ips');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests migration of blocked IPs.
|
||||
*/
|
||||
public function testBlockedIPs() {
|
||||
$this->assertTrue(\Drupal::service('ban.ip_manager')->isBanned('111.111.111.111'));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\ban\Kernel\Plugin\migrate\source\d7;
|
||||
|
||||
use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
|
||||
|
||||
/**
|
||||
* Tests D7 blocked_ip source plugin.
|
||||
*
|
||||
* @covers \Drupal\ban\Plugin\migrate\source\d7\BlockedIps
|
||||
* @group ban
|
||||
*/
|
||||
class BlockedIpsTest extends MigrateSqlSourceTestBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['ban', 'migrate_drupal'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerSource() {
|
||||
$tests = [];
|
||||
|
||||
$tests[0]['source_data']['blocked_ips'] = [
|
||||
[
|
||||
'iid' => 1,
|
||||
'ip' => '127.0.0.1',
|
||||
]
|
||||
];
|
||||
$tests[0]['expected_data'] = [
|
||||
[
|
||||
'ip' => '127.0.0.1',
|
||||
],
|
||||
];
|
||||
return $tests;
|
||||
}
|
||||
|
||||
}
|
92
web/core/modules/ban/tests/src/Unit/BanMiddlewareTest.php
Normal file
92
web/core/modules/ban/tests/src/Unit/BanMiddlewareTest.php
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\ban\Unit;
|
||||
|
||||
use Drupal\ban\BanMiddleware;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpKernel\HttpKernelInterface;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\ban\BanMiddleware
|
||||
* @group ban
|
||||
*/
|
||||
class BanMiddlewareTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* The mocked wrapped kernel.
|
||||
*
|
||||
* @var \Symfony\Component\HttpKernel\HttpKernelInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $kernel;
|
||||
|
||||
/**
|
||||
* The mocked ban IP manager.
|
||||
*
|
||||
* @var \Drupal\ban\BanIpManagerInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $banManager;
|
||||
|
||||
/**
|
||||
* The tested ban middleware.
|
||||
*
|
||||
* @var \Drupal\ban\BanMiddleware
|
||||
*/
|
||||
protected $banMiddleware;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->kernel = $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface');
|
||||
$this->banManager = $this->getMock('Drupal\ban\BanIpManagerInterface');
|
||||
$this->banMiddleware = new BanMiddleware($this->kernel, $this->banManager);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a banned IP.
|
||||
*/
|
||||
public function testBannedIp() {
|
||||
$banned_ip = '17.0.0.2';
|
||||
$this->banManager->expects($this->once())
|
||||
->method('isBanned')
|
||||
->with($banned_ip)
|
||||
->willReturn(TRUE);
|
||||
|
||||
$this->kernel->expects($this->never())
|
||||
->method('handle');
|
||||
|
||||
$request = Request::create('/test-path');
|
||||
$request->server->set('REMOTE_ADDR', $banned_ip);
|
||||
$response = $this->banMiddleware->handle($request);
|
||||
|
||||
$this->assertEquals(403, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests an unbanned IP.
|
||||
*/
|
||||
public function testUnbannedIp() {
|
||||
$unbanned_ip = '18.0.0.2';
|
||||
$this->banManager->expects($this->once())
|
||||
->method('isBanned')
|
||||
->with($unbanned_ip)
|
||||
->willReturn(FALSE);
|
||||
|
||||
$request = Request::create('/test-path');
|
||||
$request->server->set('REMOTE_ADDR', $unbanned_ip);
|
||||
$expected_response = new Response(200);
|
||||
$this->kernel->expects($this->once())
|
||||
->method('handle')
|
||||
->with($request, HttpKernelInterface::MASTER_REQUEST, TRUE)
|
||||
->willReturn($expected_response);
|
||||
|
||||
$response = $this->banMiddleware->handle($request);
|
||||
|
||||
$this->assertSame($expected_response, $response);
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue