-
Notifications
You must be signed in to change notification settings - Fork 295
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[2.x] Fixes Swoole
PUT|PATCH|DELETE
requests on Laravel 11 (#862)
* Use InputBag instead of ParameterBag Use InputBag instead of ParameterBag * Adds tests * Runs only on Swoole --------- Co-authored-by: sy-records <[email protected]>
- Loading branch information
1 parent
6133c1c
commit 66cb38a
Showing
2 changed files
with
169 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
<?php | ||
|
||
namespace Laravel\Octane\Tests; | ||
|
||
use Illuminate\Http\Request; | ||
use Laravel\Octane\Swoole\Actions\ConvertSwooleRequestToIlluminateRequest; | ||
use Mockery; | ||
use Orchestra\Testbench\TestCase; | ||
use Swoole\Http\Request as SwooleRequest; | ||
|
||
class SwooleRequestTest extends TestCase | ||
{ | ||
public function setUp(): void | ||
{ | ||
parent::setUp(); | ||
|
||
if (! extension_loaded('swoole')) { | ||
$this->markTestSkipped('Swoole extension is not installed.'); | ||
} | ||
} | ||
|
||
public function test_convert_swoole_request_to_illuminate_request() | ||
{ | ||
$swooleRequest = new SwooleRequest(); | ||
|
||
$action = new ConvertSwooleRequestToIlluminateRequest(); | ||
|
||
$request = $action->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertInstanceOf(Request::class, $request); | ||
} | ||
|
||
public function test_server_variables() | ||
{ | ||
$swooleRequest = new SwooleRequest(); | ||
|
||
$swooleRequest->server = [ | ||
'REQUEST_METHOD' => 'GET', | ||
'REQUEST_URI' => '/foo', | ||
'QUERY_STRING' => 'bar=baz', | ||
'SERVER_PROTOCOL' => 'HTTP/1.1', | ||
]; | ||
|
||
$swooleRequest->header = [ | ||
'host' => 'localhost', | ||
'content-type' => 'application/json', | ||
]; | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('GET', $request->server->get('REQUEST_METHOD')); | ||
$this->assertSame('GET', $request->getMethod()); | ||
$this->assertSame('/foo?bar=baz', $request->server->get('REQUEST_URI')); | ||
$this->assertSame('/foo?bar=baz', $request->getRequestUri()); | ||
$this->assertSame('HTTP/1.1', $request->server->get('SERVER_PROTOCOL')); | ||
$this->assertSame('HTTP/1.1', $request->getProtocolVersion()); | ||
$this->assertSame('localhost', $request->header('host')); | ||
$this->assertSame('localhost', $request->getHost()); | ||
$this->assertSame('application/json', $request->header('content-type')); | ||
} | ||
|
||
public function test_get() | ||
{ | ||
$swooleRequest = new SwooleRequest(); | ||
$swooleRequest->get = [ | ||
'foo' => 'bar', | ||
]; | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('bar', $request->get('foo')); | ||
$this->assertSame('bar', $request->input('foo')); | ||
$this->assertSame('bar', $request->query('foo')); | ||
} | ||
|
||
public function test_post() | ||
{ | ||
$swooleRequest = new SwooleRequest(); | ||
$swooleRequest->header = [ | ||
'content-type' => 'application/x-www-form-urlencoded', | ||
]; | ||
$swooleRequest->server = [ | ||
'REQUEST_METHOD' => 'POST', | ||
]; | ||
|
||
$swooleRequest->post = [ | ||
'foo' => 'bar', | ||
]; | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('bar', $request->post('foo')); | ||
$this->assertSame('bar', $request->input('foo')); | ||
} | ||
|
||
public function test_put() | ||
{ | ||
$swooleRequest = Mockery::mock(new SwooleRequest())->makePartial(); | ||
|
||
$swooleRequest->header = [ | ||
'content-type' => 'application/x-www-form-urlencoded', | ||
]; | ||
$swooleRequest->server = [ | ||
'REQUEST_METHOD' => 'PUT', | ||
]; | ||
|
||
$swooleRequest->shouldReceive('rawContent')->andReturn('foo=bar'); | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('bar', $request->input('foo')); | ||
$this->assertSame('bar', $request->get('foo')); | ||
$this->assertSame('bar', $request->post('foo')); | ||
} | ||
|
||
public function test_patch() | ||
{ | ||
$swooleRequest = Mockery::mock(new SwooleRequest())->makePartial(); | ||
|
||
$swooleRequest->header = [ | ||
'content-type' => 'application/x-www-form-urlencoded', | ||
]; | ||
$swooleRequest->server = [ | ||
'REQUEST_METHOD' => 'PATCH', | ||
]; | ||
|
||
$swooleRequest->shouldReceive('rawContent')->andReturn('foo=bar'); | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('bar', $request->input('foo')); | ||
$this->assertSame('bar', $request->get('foo')); | ||
$this->assertSame('bar', $request->post('foo')); | ||
} | ||
|
||
public function test_delete() | ||
{ | ||
$swooleRequest = Mockery::mock(new SwooleRequest())->makePartial(); | ||
|
||
$swooleRequest->header = [ | ||
'content-type' => 'application/x-www-form-urlencoded', | ||
]; | ||
$swooleRequest->server = [ | ||
'REQUEST_METHOD' => 'DELETE', | ||
]; | ||
|
||
$swooleRequest->shouldReceive('rawContent')->andReturn('foo=bar'); | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('bar', $request->input('foo')); | ||
$this->assertSame('bar', $request->get('foo')); | ||
$this->assertSame('bar', $request->post('foo')); | ||
} | ||
|
||
public function test_cookie() | ||
{ | ||
$swooleRequest = new SwooleRequest(); | ||
$swooleRequest->cookie = [ | ||
'foo' => 'bar', | ||
]; | ||
|
||
$request = (new ConvertSwooleRequestToIlluminateRequest())->__invoke($swooleRequest, 'cli-server'); | ||
|
||
$this->assertSame('bar', $request->cookie('foo')); | ||
} | ||
} |