diff --git a/composer.json b/composer.json index 4cb43cbe..b349cca9 100644 --- a/composer.json +++ b/composer.json @@ -26,10 +26,10 @@ "php-school/cli-menu": "^4.1", "beberlei/assert": "^3.2", "psr/http-message": "^1.0", - "zendframework/zend-diactoros": "^2.1", "myclabs/php-enum": "^1.4", "kadet/keylighter": "^0.8.3", - "nikic/php-parser": "^4.0" + "nikic/php-parser": "^4.0", + "guzzlehttp/guzzle": "^7.2" }, "require-dev": { "composer/composer": "^1.2", diff --git a/composer.lock b/composer.lock index d77a1de3..9099b323 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a180ba8e94629778b2ff31275333ab73", + "content-hash": "54cf397f1643ba1107f77f288e3586a3", "packages": [ { "name": "aydin-hassan/cli-md-renderer", @@ -209,6 +209,238 @@ }, "time": "2019-12-12T13:22:17+00:00" }, + { + "name": "guzzlehttp/guzzle", + "version": "7.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", + "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.4", + "guzzlehttp/psr7": "^1.7", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "psr/log": "^1.1" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.1-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.2.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://github.com/alexeyshockov", + "type": "github" + }, + { + "url": "https://github.com/gmponos", + "type": "github" + } + ], + "time": "2020-10-10T11:47:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "60d379c243457e073cff02bc323a2a86cb355631" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", + "reference": "60d379c243457e073cff02bc323a2a86cb355631", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.4.0" + }, + "time": "2020-09-30T07:37:28+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.7.0" + }, + "time": "2020-09-30T07:37:11+00:00" + }, { "name": "kadet/keylighter", "version": "v0.8.3", @@ -909,21 +1141,21 @@ "time": "2017-02-14T16:28:37+00:00" }, { - "name": "psr/http-factory", + "name": "psr/http-client", "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": "^7.0 || ^8.0", "psr/http-message": "^1.0" }, "type": "library", @@ -934,7 +1166,7 @@ }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -947,21 +1179,18 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "factory", "http", - "message", + "http-client", "psr", - "psr-17", - "psr-7", - "request", - "response" + "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-client/tree/master" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2020-06-29T06:28:15+00:00" }, { "name": "psr/http-message", @@ -1016,6 +1245,50 @@ }, "time": "2016-08-06T14:39:51+00:00" }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, { "name": "symfony/filesystem", "version": "v4.4.15", @@ -1227,82 +1500,6 @@ } ], "time": "2020-09-02T16:08:58+00:00" - }, - { - "name": "zendframework/zend-diactoros", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "de5847b068362a88684a55b0dbb40d85986cfa52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/de5847b068362a88684a55b0dbb40d85986cfa52", - "reference": "de5847b068362a88684a55b0dbb40d85986cfa52", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], - "psr-4": { - "Zend\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "keywords": [ - "http", - "psr", - "psr-7" - ], - "support": { - "docs": "https://docs.zendframework.com/zend-diactoros/", - "forum": "https://discourse.zendframework.com/c/questions/exprssive", - "issues": "https://github.com/zendframework/zend-diactoros/issues", - "rss": "https://github.com/zendframework/zend-diactoros/releases.atom", - "slack": "https://zendframework-slack.herokuapp.com", - "source": "https://github.com/zendframework/zend-diactoros" - }, - "abandoned": "laminas/laminas-diactoros", - "time": "2019-11-13T19:16:13+00:00" } ], "packages-dev": [ diff --git a/src/ExerciseRunner/CgiRunner.php b/src/ExerciseRunner/CgiRunner.php index 0d637f6b..c18ad2ae 100644 --- a/src/ExerciseRunner/CgiRunner.php +++ b/src/ExerciseRunner/CgiRunner.php @@ -2,6 +2,7 @@ namespace PhpSchool\PhpWorkshop\ExerciseRunner; +use GuzzleHttp\Psr7\Message; use PhpSchool\PhpWorkshop\Check\CodeParseCheck; use PhpSchool\PhpWorkshop\Check\FileExistsCheck; use PhpSchool\PhpWorkshop\Check\PhpLintCheck; @@ -197,7 +198,7 @@ private function executePhpFile(string $fileName, RequestInterface $request, str $output = "HTTP/1.0 200 OK\r\n" . $output; } - return ResponseSerializer::fromString($output); + return Message::parseResponse($output); } /** diff --git a/test/Event/CgiExecuteEventTest.php b/test/Event/CgiExecuteEventTest.php index 3fbe8352..112e0c41 100644 --- a/test/Event/CgiExecuteEventTest.php +++ b/test/Event/CgiExecuteEventTest.php @@ -2,26 +2,32 @@ namespace PhpSchool\PhpWorkshopTest\Event; +use GuzzleHttp\Psr7\Request; use PhpSchool\PhpWorkshop\Event\CgiExecuteEvent; use PHPUnit\Framework\TestCase; use Psr\Http\Message\RequestInterface; -use Zend\Diactoros\Request; class CgiExecuteEventTest extends TestCase { public function testAddHeader(): void { - $request = new Request(); + $request = new Request('GET', 'https://some.site'); $e = new CgiExecuteEvent('event', $request); $e->addHeaderToRequest('Content-Type', 'text/html'); - $this->assertSame(['Content-Type' => ['text/html']], $e->getRequest()->getHeaders()); + $this->assertSame( + [ + 'Host' => ['some.site'], + 'Content-Type' => ['text/html'], + ], + $e->getRequest()->getHeaders() + ); $this->assertNotSame($request, $e->getRequest()); } public function testModifyRequest(): void { - $request = new Request(); + $request = new Request('GET', 'https://some.site'); $e = new CgiExecuteEvent('event', $request); $e->modifyRequest(function (RequestInterface $request) { @@ -29,14 +35,20 @@ public function testModifyRequest(): void ->withHeader('Content-Type', 'text/html') ->withMethod('POST'); }); - $this->assertSame(['Content-Type' => ['text/html']], $e->getRequest()->getHeaders()); + $this->assertSame( + [ + 'Host' => ['some.site'], + 'Content-Type' => ['text/html'], + ], + $e->getRequest()->getHeaders() + ); $this->assertSame('POST', $e->getRequest()->getMethod()); $this->assertNotSame($request, $e->getRequest()); } public function testGetRequest(): void { - $request = new Request(); + $request = new Request('GET', 'https://some.site'); $e = new CgiExecuteEvent('event', $request); $this->assertSame($request, $e->getRequest()); diff --git a/test/ExerciseRunner/CgiRunnerTest.php b/test/ExerciseRunner/CgiRunnerTest.php index 9465975d..b01152a2 100644 --- a/test/ExerciseRunner/CgiRunnerTest.php +++ b/test/ExerciseRunner/CgiRunnerTest.php @@ -3,6 +3,7 @@ namespace PhpSchool\PhpWorkshopTest\ExerciseRunner; use Colors\Color; +use GuzzleHttp\Psr7\Request; use PhpSchool\Terminal\Terminal; use PhpSchool\PhpWorkshop\Check\CodeParseCheck; use PhpSchool\PhpWorkshop\Check\FileExistsCheck; @@ -21,8 +22,6 @@ use PhpSchool\PhpWorkshop\Utils\RequestRenderer; use PhpSchool\PhpWorkshopTest\Asset\CgiExerciseInterface; use PHPUnit\Framework\TestCase; -use Zend\Diactoros\Request; -use Zend\Diactoros\Uri; class CgiRunnerTest extends TestCase { @@ -69,9 +68,7 @@ public function testVerifyThrowsExceptionIfSolutionFailsExecution(): void ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); + $request = (new Request('GET', 'http://some.site?number=5')); $this->exercise ->expects($this->once()) @@ -92,9 +89,7 @@ public function testVerifyReturnsSuccessIfGetSolutionOutputMatchesUserOutput(): ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); + $request = (new Request('GET', 'http://some.site?number=5')); $this->exercise ->expects($this->once()) @@ -115,9 +110,7 @@ public function testVerifyReturnsSuccessIfPostSolutionOutputMatchesUserOutput(): ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('POST') - ->withUri(new Uri('http://some.site')) + $request = (new Request('POST', 'http://some.site')) ->withHeader('Content-Type', 'application/x-www-form-urlencoded'); $request->getBody()->write('number=5'); @@ -145,9 +138,7 @@ public function testVerifyReturnsSuccessIfPostSolutionOutputMatchesUserOutputWit ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('POST') - ->withUri(new Uri('http://some.site')) + $request = (new Request('POST', 'http://some.site')) ->withHeader('Content-Type', 'application/x-www-form-urlencoded'); $request->getBody()->write('number=5&start=4'); @@ -172,9 +163,7 @@ public function testVerifyReturnsFailureIfUserSolutionFailsToExecute(): void ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); + $request = (new Request('GET', 'http://some.site?number=5')); $this->exercise ->expects($this->once()) @@ -204,9 +193,7 @@ public function testVerifyReturnsFailureIfSolutionOutputDoesNotMatchUserOutput() ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); + $request = (new Request('GET', 'http://some.site?number=5')); $this->exercise ->expects($this->once()) @@ -236,9 +223,7 @@ public function testVerifyReturnsFailureIfSolutionOutputHeadersDoesNotMatchUserO ->method('getSolution') ->willReturn($solution); - $request = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); + $request = (new Request('GET', 'http://some.site?number=5')); $this->exercise ->expects($this->once()) @@ -277,13 +262,8 @@ public function testRunPassesOutputAndReturnsSuccessIfAllRequestsAreSuccessful() $color = new Color(); $color->setForceStyle(true); $output = new StdOutput($color, $this->createMock(Terminal::class)); - $request1 = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); - - $request2 = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=6')); + $request1 = (new Request('GET', 'http://some.site?number=5')); + $request2 = (new Request('GET', 'http://some.site?number=6')); $this->exercise ->expects($this->once()) @@ -326,9 +306,7 @@ public function testRunPassesOutputAndReturnsFailureIfARequestFails(): void $color = new Color(); $color->setForceStyle(true); $output = new StdOutput($color, $this->createMock(Terminal::class)); - $request1 = (new Request()) - ->withMethod('GET') - ->withUri(new Uri('http://some.site?number=5')); + $request1 = (new Request('GET', 'http://some.site?number=5')); $this->exercise ->expects($this->once()) diff --git a/test/ResultRenderer/Cgi/RequestFailureRendererTest.php b/test/ResultRenderer/Cgi/RequestFailureRendererTest.php index a3ba93ab..a72d9ee0 100644 --- a/test/ResultRenderer/Cgi/RequestFailureRendererTest.php +++ b/test/ResultRenderer/Cgi/RequestFailureRendererTest.php @@ -2,10 +2,10 @@ namespace PhpSchool\PhpWorkshopTest\ResultRenderer\Cgi; +use GuzzleHttp\Psr7\Request; use PhpSchool\PhpWorkshop\Result\Cgi\RequestFailure; use PhpSchool\PhpWorkshop\ResultRenderer\Cgi\RequestFailureRenderer; use PhpSchool\PhpWorkshopTest\ResultRenderer\AbstractResultRendererTest; -use Zend\Diactoros\Request; class RequestFailureRendererTest extends AbstractResultRendererTest { @@ -72,8 +72,7 @@ public function testRenderWhenOutputAndHeadersDifferent(): void private function request(): Request { - return (new Request('http://www.test.com')) - ->withMethod('POST') + return (new Request('POST', 'http://www.test.com')) ->withHeader('Content-Type', 'application/json'); } } diff --git a/test/ResultRenderer/CgiResultRendererTest.php b/test/ResultRenderer/CgiResultRendererTest.php index 9a1e0995..0624230d 100644 --- a/test/ResultRenderer/CgiResultRendererTest.php +++ b/test/ResultRenderer/CgiResultRendererTest.php @@ -2,6 +2,7 @@ namespace PhpSchool\PhpWorkshopTest\ResultRenderer; +use GuzzleHttp\Psr7\Request; use PhpSchool\PhpWorkshop\Result\Cgi\CgiResult; use PhpSchool\PhpWorkshop\Result\Cgi\RequestFailure; use PhpSchool\PhpWorkshop\Result\Cgi\GenericFailure; @@ -10,7 +11,6 @@ use PhpSchool\PhpWorkshop\ResultRenderer\CgiResultRenderer; use PhpSchool\PhpWorkshop\ResultRenderer\FailureRenderer; use PhpSchool\PhpWorkshop\Utils\RequestRenderer; -use Zend\Diactoros\Request; class CgiResultRendererTest extends AbstractResultRendererTest { @@ -222,8 +222,7 @@ function (GenericFailure $failure) use ($genericFailureRenderer) { private function request(): Request { - return (new Request('http://www.test.com')) - ->withMethod('POST') + return (new Request('POST', 'http://www.test.com')) ->withHeader('Content-Type', 'application/json'); } } diff --git a/test/Util/RequestRendererTest.php b/test/Util/RequestRendererTest.php index 0dd12b6e..95f66bcf 100644 --- a/test/Util/RequestRendererTest.php +++ b/test/Util/RequestRendererTest.php @@ -2,16 +2,15 @@ namespace PhpSchool\PhpWorkshopTest\Util; +use GuzzleHttp\Psr7\Request; use PhpSchool\PhpWorkshop\Utils\RequestRenderer; use PHPUnit\Framework\TestCase; -use Zend\Diactoros\Request; class RequestRendererTest extends TestCase { public function testWriteRequestWithHeaders(): void { - $request = (new Request('http://www.time.com/api/pt?iso=2016-01-21T18:14:33+0000')) - ->withMethod('GET'); + $request = (new Request('GET', 'http://www.time.com/api/pt?iso=2016-01-21T18:14:33+0000')); $expected = "URL: http://www.time.com/api/pt?iso=2016-01-21T18:14:33+0000\n"; $expected .= "METHOD: GET\n"; @@ -22,8 +21,7 @@ public function testWriteRequestWithHeaders(): void public function testWriteRequestWithNoHeaders(): void { - $request = (new Request('/endpoint')) - ->withMethod('GET'); + $request = (new Request('GET', '/endpoint')); $expected = "URL: /endpoint\n"; $expected .= "METHOD: GET\n"; @@ -33,8 +31,7 @@ public function testWriteRequestWithNoHeaders(): void public function testWriteRequestWithPostBodyJson(): void { - $request = (new Request('/endpoint')) - ->withMethod('POST') + $request = (new Request('POST', '/endpoint')) ->withHeader('Content-Type', 'application/json'); $request->getBody()->write( @@ -54,8 +51,7 @@ public function testWriteRequestWithPostBodyJson(): void public function testWriteRequestWithPostBodyUrlEncoded(): void { - $request = (new Request('/endpoint')) - ->withMethod('POST') + $request = (new Request('POST', '/endpoint')) ->withHeader('Content-Type', 'application/x-www-form-urlencoded'); $request->getBody()->write(