next = $this->prophesize(RequestHandlerInterface::class); $this->middleware = new DropDefaultDomainFromRequestMiddleware('doma.in'); } /** * @test * @dataProvider provideQueryParams */ public function domainIsDroppedWhenDefaultOneIsProvided(array $providedPayload, array $expectedPayload): void { $req = ServerRequestFactory::fromGlobals()->withQueryParams($providedPayload)->withParsedBody($providedPayload); $handle = $this->next->handle(Argument::that(function (ServerRequestInterface $request) use ($expectedPayload) { Assert::assertEquals($expectedPayload, $request->getQueryParams()); Assert::assertEquals($expectedPayload, $request->getParsedBody()); return $request; }))->willReturn(new Response()); $this->middleware->process($req, $this->next->reveal()); $handle->shouldHaveBeenCalledOnce(); } public function provideQueryParams(): iterable { yield [[], []]; yield [['foo' => 'bar'], ['foo' => 'bar']]; yield [['foo' => 'bar', 'domain' => 'doma.in'], ['foo' => 'bar']]; yield [['foo' => 'bar', 'domain' => 'not_default'], ['foo' => 'bar', 'domain' => 'not_default']]; yield [['domain' => 'doma.in'], []]; } }