Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixed bug with responses not returning the new instance
  • Loading branch information
Sammyjo20 committed Apr 30, 2023
1 parent 35e1243 commit 97e2be3
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 3 deletions.
4 changes: 1 addition & 3 deletions src/Http/PendingRequest.php
Expand Up @@ -333,9 +333,7 @@ protected function executeRequestPipeline(): static
*/
public function executeResponsePipeline(ResponseContract $response): ResponseContract
{
$this->middleware()->executeResponsePipeline($response);

return $response;
return $this->middleware()->executeResponsePipeline($response);
}

/**
Expand Down
4 changes: 4 additions & 0 deletions tests/Feature/RequestTest.php
Expand Up @@ -2,8 +2,12 @@

declare(strict_types=1);

use GuzzleHttp\Psr7\Utils;
use Saloon\Http\Faking\MockClient;
use Saloon\Http\Faking\MockResponse;
use Saloon\Http\Response;
use Saloon\Http\PendingRequest;
use Saloon\Http\Response as SaloonResponse;
use Saloon\Http\Senders\GuzzleSender;
use Saloon\Tests\Fixtures\Requests\UserRequest;
use Saloon\Tests\Fixtures\Requests\ErrorRequest;
Expand Down
1 change: 1 addition & 0 deletions tests/Unit/PendingRequestTest.php
Expand Up @@ -31,3 +31,4 @@
expect($pendingRequest->getUrl())->toEqual('https://other-endpoint.co.uk/user');
expect($pendingRequest->getMethod())->toEqual(Method::POST);
});

25 changes: 25 additions & 0 deletions tests/Unit/SaloonResponseTest.php
Expand Up @@ -3,11 +3,14 @@
declare(strict_types=1);

use GuzzleHttp\Psr7\Response;
use GuzzleHttp\Psr7\Utils;
use Saloon\Http\PendingRequest;
use Saloon\Contracts\ArrayStore;
use Illuminate\Support\Collection;
use Saloon\Http\Faking\MockClient;
use Saloon\Http\Faking\MockResponse;
use Saloon\Http\Response as SaloonResponse;
use Saloon\Tests\Fixtures\Connectors\TestConnector;
use Symfony\Component\DomCrawler\Crawler;
use Saloon\Exceptions\Request\RequestException;
use Saloon\Tests\Fixtures\Requests\UserRequest;
Expand Down Expand Up @@ -250,3 +253,25 @@
expect($response->body())->toEqual('{"foo":"bar"}');
expect($response->object())->toEqual((object)['foo' => 'bar']);
});

test('if a response is changed through middleware the new instance is used', function () {

$mockClient = new MockClient([
MockResponse::make(['foo' => 'bar'], 200, ['X-Custom-Header' => 'Howdy']),
]);

$connector = new TestConnector;

$connector->middleware()->onResponse(function (SaloonResponse $response) {
// Let's modify the body while sending!
$psrResponse = $response->getPsrResponse();
$newPsrResponse = $psrResponse->withBody(Utils::streamFor('Hello World!'));

return $response::fromPsrResponse($newPsrResponse, $response->getPendingRequest());
});

$response = $connector->send(new UserRequest, $mockClient);

expect($response->body())->toEqual('Hello World!');
expect($response->headers()->all())->toEqual(['X-Custom-Header' => 'Howdy']);
});

0 comments on commit 97e2be3

Please sign in to comment.