mirror of
https://github.com/flarum/framework.git
synced 2024-11-24 02:09:26 +08:00
49 lines
1.3 KiB
PHP
49 lines
1.3 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of Flarum.
|
||
|
*
|
||
|
* For detailed copyright and license information, please view the
|
||
|
* LICENSE file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace Flarum\Tests\integration;
|
||
|
|
||
|
use Dflydev\FigCookies\SetCookie;
|
||
|
use Laminas\Diactoros\CallbackStream;
|
||
|
use Psr\Http\Message\ResponseInterface as Response;
|
||
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||
|
|
||
|
/**
|
||
|
* A collection of helpers for building PSR-7 requests for integration tests.
|
||
|
*/
|
||
|
trait BuildsHttpRequests
|
||
|
{
|
||
|
protected function requestWithJsonBody(Request $req, array $json): Request
|
||
|
{
|
||
|
return $req
|
||
|
->withHeader('Content-Type', 'application/json')
|
||
|
->withBody(
|
||
|
new CallbackStream(function () use ($json) {
|
||
|
return json_encode($json);
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
|
||
|
protected function requestWithCookiesFrom(Request $req, Response $previous): Request
|
||
|
{
|
||
|
$cookies = array_reduce(
|
||
|
$previous->getHeader('Set-Cookie'),
|
||
|
function ($memo, $setCookieString) {
|
||
|
$setCookie = SetCookie::fromSetCookieString($setCookieString);
|
||
|
$memo[$setCookie->getName()] = $setCookie->getValue();
|
||
|
|
||
|
return $memo;
|
||
|
},
|
||
|
[]
|
||
|
);
|
||
|
|
||
|
return $req->withCookieParams($cookies);
|
||
|
}
|
||
|
}
|