From afb23788b81f77343c619796340629d7aeccccc3 Mon Sep 17 00:00:00 2001 From: Niklas Keller Date: Wed, 9 Jan 2019 17:53:50 +0100 Subject: [PATCH] Add test for ParsingMiddleware --- test/ParsingMiddlewareTest.php | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 test/ParsingMiddlewareTest.php diff --git a/test/ParsingMiddlewareTest.php b/test/ParsingMiddlewareTest.php new file mode 100644 index 0000000..a671b9d --- /dev/null +++ b/test/ParsingMiddlewareTest.php @@ -0,0 +1,52 @@ +createCallback(1); + + $handler = stack(new CallableRequestHandler(function (Request $request) use ($callback) { + if ($request->hasAttribute(Form::class)) { + $callback(); + + $form = $request->getAttribute(Form::class); + + $this->assertSame('bar', $form->getValue('foo')); + $this->assertSame('y', $form->getValue('x')); + } + }), new ParsingMiddleware); + + $request = new Request($this->createMock(Client::class), 'GET', Uri\Http::createFromString('/'), [ + 'content-type' => 'application/x-www-form-urlencoded', + ], 'foo=bar&x=y'); + + wait($handler->handleRequest($request)); + } + + public function testNonForm() + { + $handler = stack(new CallableRequestHandler(function (Request $request) { + $this->assertTrue($request->hasAttribute(Form::class)); // attribute is set either way + $this->assertSame('{}', yield $request->getBody()->buffer()); + }), new ParsingMiddleware); + + $request = new Request($this->createMock(Client::class), 'GET', Uri\Http::createFromString('/'), [ + 'content-type' => 'application/json', + ], '{}'); + + wait($handler->handleRequest($request)); + } +}