public function testRecording($name, $requests, $responses)
{
$this->setName($name);
$this->assertGreaterThanOrEqual(sizeof($requests), sizeof($responses));
\GuzzleHttp\Tests\Server::enqueue($responses);
$cassette = __DIR__ . '/fixtures/temp/' . str_replace([" with data set #", "test", " "], ["-", "", "-"], $this->getName()) . '.json';
$responses = [];
$vcr = \Dshafik\GuzzleHttp\VcrHandler::turnOn($cassette);
$this->assertInstanceOf(\GuzzleHttp\HandlerStack::class, $vcr);
$client = new \GuzzleHttp\Client(['handler' => $vcr]);
foreach ($requests as $key => $request) {
try {
$response = $client->send($request);
} catch (\GuzzleHttp\Exception\ClientException $e) {
$response = $e->getResponse();
}
$this->assertEmpty($response->getHeader('X-VCR-Recording'));
$responses[$key] = $response;
}
$vcr = \Dshafik\GuzzleHttp\VcrHandler::turnOn($cassette);
$this->assertInstanceOf(\GuzzleHttp\HandlerStack::class, $vcr);
$client = new \GuzzleHttp\Client(['handler' => $vcr]);
foreach ($requests as $key => $request) {
try {
$recording = $client->send($request);
} catch (\GuzzleHttp\Exception\ClientException $e) {
$recording = $e->getResponse();
}
$this->assertTrue(ctype_digit($recording->getHeader('X-VCR-Recording')[0]));
$this->assertEquals($responses[$key]->getStatusCode(), $recording->getStatusCode());
foreach ($responses[$key]->getHeaders() as $header => $value) {
$this->assertEquals($value, $recording->getHeader($header));
}
$this->assertEquals((string) $responses[$key]->getBody(), (string) $recording->getBody());
}
}