Skip to content

Commit df1da4c

Browse files
authored
Merge pull request #310 from hypervel/hotfix/add-missing-response-context
fix: add missing options to handleMiddlewareResponse
2 parents 503eb67 + 07cb695 commit df1da4c

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

src/api-client/src/PendingRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ protected function handleMiddlewareRequest(ApiRequest $request): ApiRequest
301301
protected function handleMiddlewareResponse(ApiResponse $response): ApiResponse
302302
{
303303
return $this->pipeline
304-
->send($response)
304+
->send($response->withContext('options', $this->middlewareOptions))
305305
->through($this->createMiddleware($this->responseMiddleware))
306306
->thenReturn();
307307
}

tests/ApiClient/PendingRequestTest.php

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,20 +171,36 @@ public function testMiddlewareCanBeEnabled(): void
171171
TestRequestMiddleware::reset();
172172
}
173173

174-
public function testWithMiddlewareOptionsPassesOptionsToMiddleware(): void
174+
public function testWithMiddlewareOptionsPassesOptionsToRequestMiddleware(): void
175175
{
176176
$client = new ApiClient();
177177
$options = ['key' => 'value', 'timeout' => 30];
178178

179179
$pending = $client
180180
->withMiddlewareOptions($options)
181-
->withRequestMiddleware([OptionsCheckingMiddleware::class]);
181+
->withRequestMiddleware([RequestOptionsCheckingMiddleware::class]);
182182

183183
Http::fake(['test' => Http::response('{"success": true}')]);
184184
$pending->get('test');
185185

186-
$this->assertEquals($options, OptionsCheckingMiddleware::$receivedOptions);
187-
OptionsCheckingMiddleware::reset();
186+
$this->assertEquals($options, RequestOptionsCheckingMiddleware::$receivedOptions);
187+
RequestOptionsCheckingMiddleware::reset();
188+
}
189+
190+
public function testWithMiddlewareOptionsPassesOptionsToResponseMiddleware(): void
191+
{
192+
$client = new ApiClient();
193+
$options = ['key' => 'value', 'timeout' => 30];
194+
195+
$pending = $client
196+
->withMiddlewareOptions($options)
197+
->withResponseMiddleware([ResponseOptionsCheckingMiddleware::class]);
198+
199+
Http::fake(['test' => Http::response('{"success": true}')]);
200+
$pending->get('test');
201+
202+
$this->assertEquals($options, ResponseOptionsCheckingMiddleware::$receivedOptions);
203+
ResponseOptionsCheckingMiddleware::reset();
188204
}
189205

190206
public function testMiddlewareCaching(): void
@@ -462,7 +478,7 @@ public function handle(ApiRequest $request, callable $next): ApiRequest
462478
}
463479
}
464480

465-
class OptionsCheckingMiddleware
481+
class RequestOptionsCheckingMiddleware
466482
{
467483
public static ?array $receivedOptions = null;
468484

@@ -482,6 +498,26 @@ public static function reset(): void
482498
}
483499
}
484500

501+
class ResponseOptionsCheckingMiddleware
502+
{
503+
public static ?array $receivedOptions = null;
504+
505+
public function __construct(protected ?array $config = null)
506+
{
507+
}
508+
509+
public function handle(ApiResponse $response, callable $next): ApiResponse
510+
{
511+
self::$receivedOptions = $response->context('options');
512+
return $next($response);
513+
}
514+
515+
public static function reset(): void
516+
{
517+
self::$receivedOptions = null;
518+
}
519+
}
520+
485521
class CachingTestMiddleware
486522
{
487523
public static ?string $instanceId = null;

0 commit comments

Comments
 (0)