3 namespace Drupal\Tests\ban\Unit;
5 use Drupal\ban\BanMiddleware;
6 use Drupal\Tests\UnitTestCase;
7 use Symfony\Component\HttpFoundation\Request;
8 use Symfony\Component\HttpFoundation\Response;
9 use Symfony\Component\HttpKernel\HttpKernelInterface;
12 * @coversDefaultClass \Drupal\ban\BanMiddleware
15 class BanMiddlewareTest extends UnitTestCase {
18 * The mocked wrapped kernel.
20 * @var \Symfony\Component\HttpKernel\HttpKernelInterface|\PHPUnit_Framework_MockObject_MockObject
25 * The mocked ban IP manager.
27 * @var \Drupal\ban\BanIpManagerInterface|\PHPUnit_Framework_MockObject_MockObject
29 protected $banManager;
32 * The tested ban middleware.
34 * @var \Drupal\ban\BanMiddleware
36 protected $banMiddleware;
41 protected function setUp() {
44 $this->kernel = $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface');
45 $this->banManager = $this->getMock('Drupal\ban\BanIpManagerInterface');
46 $this->banMiddleware = new BanMiddleware($this->kernel, $this->banManager);
52 public function testBannedIp() {
53 $banned_ip = '17.0.0.2';
54 $this->banManager->expects($this->once())
59 $this->kernel->expects($this->never())
62 $request = Request::create('/test-path');
63 $request->server->set('REMOTE_ADDR', $banned_ip);
64 $response = $this->banMiddleware->handle($request);
66 $this->assertEquals(403, $response->getStatusCode());
70 * Tests an unbanned IP.
72 public function testUnbannedIp() {
73 $unbanned_ip = '18.0.0.2';
74 $this->banManager->expects($this->once())
79 $request = Request::create('/test-path');
80 $request->server->set('REMOTE_ADDR', $unbanned_ip);
81 $expected_response = new Response(200);
82 $this->kernel->expects($this->once())
84 ->with($request, HttpKernelInterface::MASTER_REQUEST, TRUE)
85 ->willReturn($expected_response);
87 $response = $this->banMiddleware->handle($request);
89 $this->assertSame($expected_response, $response);