mirror of
https://github.com/Neur0toxine/pock.git
synced 2024-12-01 09:26:02 +03:00
matcher for preserialized JSON
This commit is contained in:
parent
285d06a01d
commit
66e6e3ab2a
@ -317,6 +317,23 @@ class PockBuilder
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Match JSON request body against JSON string or array with data.
|
||||||
|
*
|
||||||
|
* @param array<int|string, mixed>|string $data
|
||||||
|
*
|
||||||
|
* @return self
|
||||||
|
* @throws \Pock\Exception\JsonException
|
||||||
|
*/
|
||||||
|
public function matchSerializedJsonBody($data): self
|
||||||
|
{
|
||||||
|
if (is_string($data)) {
|
||||||
|
$data = self::jsonDecode($data, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addMatcher(new JsonBodyMatcher($data));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Match XML request body using raw XML data.
|
* Match XML request body using raw XML data.
|
||||||
*
|
*
|
||||||
@ -324,11 +341,12 @@ class PockBuilder
|
|||||||
* It also doesn't serializer values with available XML serializer.
|
* It also doesn't serializer values with available XML serializer.
|
||||||
* Use PockBuilder::matchSerializedXmlBody if you want to execute available serializer.
|
* Use PockBuilder::matchSerializedXmlBody if you want to execute available serializer.
|
||||||
*
|
*
|
||||||
* @see \Pock\PockBuilder::matchSerializedXmlBody()
|
|
||||||
*
|
|
||||||
* @param DOMDocument|\Psr\Http\Message\StreamInterface|resource|string $data
|
* @param DOMDocument|\Psr\Http\Message\StreamInterface|resource|string $data
|
||||||
*
|
*
|
||||||
* @return self
|
* @return self
|
||||||
|
* @throws \Pock\Exception\XmlException
|
||||||
|
* @see \Pock\PockBuilder::matchSerializedXmlBody()
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public function matchXmlBody($data): self
|
public function matchXmlBody($data): self
|
||||||
{
|
{
|
||||||
|
@ -711,6 +711,19 @@ EOF;
|
|||||||
->withHeader('Content-Type', 'text/plain')
|
->withHeader('Content-Type', 'text/plain')
|
||||||
->withBody('Second token (post json)');
|
->withBody('Second token (post json)');
|
||||||
|
|
||||||
|
$builder->matchMethod(RequestMethod::POST)
|
||||||
|
->matchScheme(RequestScheme::HTTPS)
|
||||||
|
->matchHost(self::TEST_HOST)
|
||||||
|
->matchPath('/ping')
|
||||||
|
->matchHeaders([
|
||||||
|
'Authorization' => 'Token token_3',
|
||||||
|
'Content-Type' => 'application/json'
|
||||||
|
])
|
||||||
|
->matchSerializedJsonBody('{"field": "value3"}')
|
||||||
|
->reply(200)
|
||||||
|
->withHeader('Content-Type', 'text/plain')
|
||||||
|
->withBody('Third token (post json with match against serialized data)');
|
||||||
|
|
||||||
$builder->matchMethod(RequestMethod::POST)
|
$builder->matchMethod(RequestMethod::POST)
|
||||||
->matchScheme(RequestScheme::HTTPS)
|
->matchScheme(RequestScheme::HTTPS)
|
||||||
->matchHost(self::TEST_HOST)
|
->matchHost(self::TEST_HOST)
|
||||||
@ -779,6 +792,19 @@ EOF;
|
|||||||
);
|
);
|
||||||
self::assertEquals('Second token (post json)', $response->getBody()->getContents());
|
self::assertEquals('Second token (post json)', $response->getBody()->getContents());
|
||||||
|
|
||||||
|
$response = $client->sendRequest(
|
||||||
|
self::getPsr17Factory()
|
||||||
|
->createRequest(RequestMethod::POST, self::TEST_URI)
|
||||||
|
->withHeader('Authorization', 'Token token_3')
|
||||||
|
->withHeader('Content-Type', 'application/json')
|
||||||
|
->withUri(self::getPsr17Factory()->createUri(self::TEST_URI . 'ping'))
|
||||||
|
->withBody(self::getPsr17Factory()->createStream('{"field": "value3"}'))
|
||||||
|
);
|
||||||
|
self::assertEquals(
|
||||||
|
'Third token (post json with match against serialized data)',
|
||||||
|
$response->getBody()->getContents()
|
||||||
|
);
|
||||||
|
|
||||||
$response = $client->sendRequest(
|
$response = $client->sendRequest(
|
||||||
self::getPsr17Factory()
|
self::getPsr17Factory()
|
||||||
->createRequest(RequestMethod::POST, self::TEST_URI)
|
->createRequest(RequestMethod::POST, self::TEST_URI)
|
||||||
|
Loading…
Reference in New Issue
Block a user