Skip to content

Commit

Permalink
Add test for ParsingMiddleware
Browse files Browse the repository at this point in the history
  • Loading branch information
kelunik committed Jan 9, 2019
1 parent 42135b3 commit afb2378
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions test/ParsingMiddlewareTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace Amp\Http\Server\FormParser\Test;

use Amp\Http\Server\Driver\Client;
use Amp\Http\Server\FormParser\Form;
use Amp\Http\Server\FormParser\ParsingMiddleware;
use Amp\Http\Server\Request;
use Amp\Http\Server\RequestHandler\CallableRequestHandler;
use Amp\PHPUnit\TestCase;
use League\Uri;
use function Amp\Http\Server\Middleware\stack;
use function Amp\Promise\wait;

class ParsingMiddlewareTest extends TestCase
{
public function testWwwFormUrlencoded()
{
$callback = $this->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));
}
}

0 comments on commit afb2378

Please sign in to comment.