|
21 | 21 | use Google\Service\Exception as ServiceException; |
22 | 22 | use Google\Tests\BaseTest; |
23 | 23 | use GuzzleHttp\Client as GuzzleClient; |
| 24 | +use GuzzleHttp\Exception\ClientException; |
| 25 | +use GuzzleHttp\Exception\RequestException; |
24 | 26 | use GuzzleHttp\Psr7; |
25 | 27 | use GuzzleHttp\Psr7\Request; |
26 | 28 | use GuzzleHttp\Psr7\Response; |
| 29 | +use Prophecy\Argument; |
27 | 30 |
|
28 | 31 | class RESTTest extends BaseTest |
29 | 32 | { |
@@ -86,6 +89,37 @@ public function testExceptionResponse() |
86 | 89 | $response = $this->rest->doExecute($http, $request); |
87 | 90 | } |
88 | 91 |
|
| 92 | + public function testRequestExceptionWithResponseIsHandled() |
| 93 | + { |
| 94 | + $this->expectException(ServiceException::class); |
| 95 | + $this->expectExceptionCode(400); |
| 96 | + |
| 97 | + $request = new Request('GET', 'http://www.example.com'); |
| 98 | + $response = new Response(400, [], Psr7\Utils::streamFor('{"error": "bad request"}')); |
| 99 | + |
| 100 | + $http = $this->prophesize('GuzzleHttp\ClientInterface'); |
| 101 | + $http->send(Argument::type('Psr\Http\Message\RequestInterface'), []) |
| 102 | + ->shouldBeCalledTimes(1) |
| 103 | + ->willThrow(new ClientException('Bad Request', $request, $response)); |
| 104 | + |
| 105 | + $this->rest->doExecute($http->reveal(), $request); |
| 106 | + } |
| 107 | + |
| 108 | + public function testRequestExceptionWithoutResponseIsRethrown() |
| 109 | + { |
| 110 | + $this->expectException(RequestException::class); |
| 111 | + $this->expectExceptionMessage('Request failed'); |
| 112 | + |
| 113 | + $request = new Request('GET', 'http://www.example.com'); |
| 114 | + |
| 115 | + $http = $this->prophesize('GuzzleHttp\ClientInterface'); |
| 116 | + $http->send(Argument::type('Psr\Http\Message\RequestInterface'), []) |
| 117 | + ->shouldBeCalledTimes(1) |
| 118 | + ->willThrow(new RequestException('Request failed', $request)); |
| 119 | + |
| 120 | + $this->rest->doExecute($http->reveal(), $request); |
| 121 | + } |
| 122 | + |
89 | 123 | public function testDecodeEmptyResponse() |
90 | 124 | { |
91 | 125 | $stream = Psr7\Utils::streamFor('{}'); |
|
0 commit comments