Dshafik\GuzzleHttp\Tests\VcrHandlerTest::testRecording PHP Method

testRecording() public method

public testRecording ( $name, $requests, $responses )
    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());
        }
    }