vd/vendor/barryvdh/laravel-cors/tests/GlobalMiddlewareTest.php
2018-11-05 09:26:30 +08:00

164 lines
5.6 KiB
PHP

<?php
namespace Barryvdh\Cors\Tests;
class GlobalMiddlewareTest extends TestCase
{
/**
* Define environment setup.
*
* @param Illuminate\Foundation\Application $app
*
* @return void
*/
protected function getEnvironmentSetUp($app)
{
// Add the middleware
$kernel = $app->make(\Illuminate\Contracts\Http\Kernel::class);
$kernel->prependMiddleware(\Barryvdh\Cors\HandleCors::class);
parent::getEnvironmentSetUp($app);
}
public function testShouldReturnNullOnHeaderAssessControlAllowOriginBecauseDontHaveHttpOriginOnRequest()
{
$crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertNull($crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(200, $crawler->getStatusCode());
}
public function testOptionsAllowOriginAllowed()
{
$crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(200, $crawler->getStatusCode());
}
public function testOptionsAllowOriginAllowedNonExistingRoute()
{
$crawler = $this->call('OPTIONS', 'api/pang', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(200, $crawler->getStatusCode());
}
public function testOptionsAllowOriginNotAllowed()
{
$crawler = $this->call('OPTIONS', 'api/ping', [], [], [], [
'HTTP_ORIGIN' => 'otherhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(403, $crawler->getStatusCode());
}
public function testAllowOriginAllowed()
{
$crawler = $this->call('POST', 'web/ping', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(200, $crawler->getStatusCode());
$this->assertEquals('PONG', $crawler->getContent());
}
public function testAllowOriginNotAllowed()
{
$crawler = $this->call('POST', 'web/ping', [], [], [], [
'HTTP_ORIGIN' => 'otherhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(403, $crawler->getStatusCode());
}
public function testAllowMethodAllowed()
{
$crawler = $this->call('POST', 'web/ping', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods'));
$this->assertEquals(200, $crawler->getStatusCode());
$this->assertEquals('PONG', $crawler->getContent());
}
public function testAllowMethodNotAllowed()
{
$crawler = $this->call('POST', 'web/ping', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'PUT',
]);
$this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Methods'));
$this->assertEquals(200, $crawler->getStatusCode());
}
public function testAllowHeaderAllowed()
{
$crawler = $this->call('POST', 'web/ping', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-1, x-custom-2',
]);
$this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers'));
$this->assertEquals(200, $crawler->getStatusCode());
$this->assertEquals('PONG', $crawler->getContent());
}
public function testAllowHeaderNotAllowed()
{
$crawler = $this->call('POST', 'web/ping', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'x-custom-3',
]);
$this->assertEquals(null, $crawler->headers->get('Access-Control-Allow-Headers'));
$this->assertEquals(200, $crawler->getStatusCode());
}
public function testError()
{
if ($this->checkVersion('5.3', '<')) {
$this->markTestSkipped('Catching exceptions is not possible on Laravel 5.1');
}
$crawler = $this->call('POST', 'web/error', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(500, $crawler->getStatusCode());
}
public function testValidationException()
{
if ($this->checkVersion('5.3', '<')) {
$this->markTestSkipped('Catching exceptions is not possible on Laravel 5.1');
}
$crawler = $this->call('POST', 'web/validation', [], [], [], [
'HTTP_ORIGIN' => 'localhost',
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
]);
$this->assertEquals('localhost', $crawler->headers->get('Access-Control-Allow-Origin'));
$this->assertEquals(302, $crawler->getStatusCode());
}
}