Skip to content

Commit 3d3385b

Browse files
authored
Merge pull request #136 from Sammyjo20/feature/v2-specific-headers-for-body-traits
Feature | V2 Added headers to body traits
2 parents 945fd36 + a323a2a commit 3d3385b

File tree

7 files changed

+35
-0
lines changed

7 files changed

+35
-0
lines changed

src/Traits/Body/HasFormBody.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Saloon\Traits\Body;
66

7+
use Saloon\Contracts\PendingRequest;
78
use Saloon\Repositories\Body\FormBodyRepository;
89

910
trait HasFormBody
@@ -17,6 +18,17 @@ trait HasFormBody
1718
*/
1819
protected FormBodyRepository $body;
1920

21+
/**
22+
* Boot the HasFormBody trait
23+
*
24+
* @param \Saloon\Contracts\PendingRequest $pendingRequest
25+
* @return void
26+
*/
27+
public function bootHasFormBody(PendingRequest $pendingRequest): void
28+
{
29+
$pendingRequest->headers()->add('Content-Type', 'application/x-www-form-urlencoded');
30+
}
31+
2032
/**
2133
* Retrieve the data repository
2234
*

tests/Feature/Body/HasBodyTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818
$connector = new TestConnector;
1919
$request = new HasBodyRequest;
2020

21+
$request->headers()->add('Content-Type', 'application/custom');
22+
2123
$connector->sender()->addMiddleware(function (callable $handler) use ($request) {
2224
return function (RequestInterface $guzzleRequest, array $options) use ($request) {
25+
expect($guzzleRequest->getHeader('Content-Type'))->toEqual(['application/custom']);
2326
expect((string)$guzzleRequest->getBody())->toEqual((string)$request->body());
2427

2528
return new FulfilledPromise(MockResponse::make()->getPsrResponse());

tests/Feature/Body/HasFormBodyTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
declare(strict_types=1);
44

5+
use Saloon\Http\PendingRequest;
56
use Saloon\Http\Faking\MockResponse;
67
use Psr\Http\Message\RequestInterface;
78
use GuzzleHttp\Promise\FulfilledPromise;
@@ -21,8 +22,13 @@
2122
$connector = new TestConnector;
2223
$request = new HasFormBodyRequest;
2324

25+
$request->middleware()->onRequest(static function (PendingRequest $pendingRequest) {
26+
expect($pendingRequest->headers()->get('Content-Type'))->toEqual('application/x-www-form-urlencoded');
27+
});
28+
2429
$connector->sender()->addMiddleware(function (callable $handler) use ($request) {
2530
return function (RequestInterface $guzzleRequest, array $options) use ($request) {
31+
expect($guzzleRequest->getHeader('Content-Type'))->toEqual(['application/x-www-form-urlencoded']);
2632
expect((string)$guzzleRequest->getBody())->toEqual((string)$request->body());
2733

2834
return new FulfilledPromise(MockResponse::make()->getPsrResponse());

tests/Feature/Body/HasJsonBodyTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
declare(strict_types=1);
44

5+
use Saloon\Http\PendingRequest;
56
use Saloon\Http\Faking\MockResponse;
67
use Psr\Http\Message\RequestInterface;
78
use GuzzleHttp\Promise\FulfilledPromise;
@@ -32,8 +33,13 @@
3233
$connector = new TestConnector;
3334
$request = new HasJsonBodyRequest;
3435

36+
$request->middleware()->onRequest(static function (PendingRequest $pendingRequest) {
37+
expect($pendingRequest->headers()->get('Content-Type'))->toEqual('application/json');
38+
});
39+
3540
$connector->sender()->addMiddleware(function (callable $handler) use ($request) {
3641
return function (RequestInterface $guzzleRequest, array $options) use ($request) {
42+
expect($guzzleRequest->getHeader('Content-Type'))->toEqual(['application/json']);
3743
expect((string)$guzzleRequest->getBody())->toEqual((string)$request->body());
3844

3945
return new FulfilledPromise(MockResponse::make()->getPsrResponse());

tests/Feature/Body/HasMultipartBodyTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
$connector->sender()->addMiddleware(function (callable $handler) use ($request) {
2525
return function (RequestInterface $guzzleRequest, array $options) use ($request) {
26+
expect($guzzleRequest->getHeader('Content-Type')[0])->toContain('multipart/form-data; boundary=');
2627
expect((string)$guzzleRequest->getBody())->toContain(
2728
'X-Saloon: Yee-haw!',
2829
'Content-Disposition: form-data; name="nickname"; filename="user.txt"',

tests/Feature/Body/HasXmlBodyTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
declare(strict_types=1);
44

5+
use Saloon\Http\PendingRequest;
56
use Saloon\Http\Faking\MockResponse;
67
use Psr\Http\Message\RequestInterface;
78
use GuzzleHttp\Promise\FulfilledPromise;
@@ -26,8 +27,13 @@
2627
$connector = new TestConnector;
2728
$request = new HasXmlBodyRequest;
2829

30+
$request->middleware()->onRequest(static function (PendingRequest $pendingRequest) {
31+
expect($pendingRequest->headers()->get('Content-Type'))->toEqual('application/xml');
32+
});
33+
2934
$connector->sender()->addMiddleware(function (callable $handler) use ($request) {
3035
return function (RequestInterface $guzzleRequest, array $options) use ($request) {
36+
expect($guzzleRequest->getHeader('Content-Type'))->toEqual(['application/xml']);
3137
expect((string)$guzzleRequest->getBody())->toEqual((string)$request->body());
3238

3339
return new FulfilledPromise(MockResponse::make()->getPsrResponse());

tests/Feature/Oauth2/AuthCodeFlowConnectorTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@
152152
expect($pendingRequest->headers()->all())->toEqual([
153153
'Accept' => 'application/json',
154154
'Authorization' => 'Bearer access',
155+
'Content-Type' => 'application/x-www-form-urlencoded',
155156
]);
156157
});
157158

0 commit comments

Comments
 (0)