/** * @expectedException \OpenCloud\Common\Error\BadResponseError */ public function test_it_throws_exception_when_error() { $e = new BadResponseError(); $e->setRequest(new Request('HEAD', 'foo')); $e->setResponse(new Response(500)); $this->client->request('HEAD', 'foo', ['headers' => []])->shouldBeCalled()->willThrow($e); $this->assertFalse($this->service->containerExists('foo')); }
/** * Helper method responsible for constructing and returning {@see BadResponseError} exceptions. * * @param RequestInterface $request The faulty request * @param ResponseInterface $response The error-filled response * * @return BadResponseError */ public function httpError(RequestInterface $request, ResponseInterface $response) : BadResponseError { $message = $this->header('HTTP Error'); $message .= sprintf("The remote server returned a \"%d %s\" error for the following transaction:\n\n", $response->getStatusCode(), $response->getReasonPhrase()); $message .= $this->header('Request'); $message .= trim($this->str($request)) . PHP_EOL . PHP_EOL; $message .= $this->header('Response'); $message .= trim($this->str($response)) . PHP_EOL . PHP_EOL; $message .= $this->header('Further information'); $message .= $this->getStatusCodeMessage($response->getStatusCode()); $message .= "Visit http://docs.php-opencloud.com/en/latest/http-codes for more information about debugging " . "HTTP status codes, or file a support issue on https://github.com/php-opencloud/openstack/issues."; $e = new BadResponseError($message); $e->setRequest($request); $e->setResponse($response); return $e; }
public function test_it_chunks_according_to_provided_segment_size() { /** @var \GuzzleHttp\Psr7\Stream $stream */ $stream = \GuzzleHttp\Psr7\stream_for(implode('', range('A', 'Z'))); $data = ['name' => 'object', 'stream' => $stream, 'segmentSize' => 10, 'segmentPrefix' => 'objectPrefix', 'segmentContainer' => 'segments']; // check container creation $e = new BadResponseError(); $e->setRequest(new Request('HEAD', 'segments')); $e->setResponse(new Response(404)); $this->client->request('HEAD', 'segments', ['headers' => []])->shouldBeCalled()->willThrow($e); $this->setupMock('PUT', 'segments', null, [], new Response(201)); $this->setupMock('PUT', 'segments/objectPrefix/1', $stream->read(10), [], new Response(201)); $this->setupMock('PUT', 'segments/objectPrefix/2', $stream->read(10), [], new Response(201)); $this->setupMock('PUT', 'segments/objectPrefix/3', $stream->read(10), [], new Response(201)); $this->setupMock('PUT', 'test/object', null, ['X-Object-Manifest' => 'segments/objectPrefix'], new Response(201)); $stream->rewind(); $this->container->createLargeObject($data); }