Skip to content

Commit ee3dee6

Browse files
committed
RequestSigner::test
1 parent 9bac123 commit ee3dee6

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/RequestSigning/RequestSignerTest.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use ApiClients\Tools\Psr7\Oauth1\Definition\ConsumerSecret;
88
use ApiClients\Tools\Psr7\Oauth1\Definition\TokenSecret;
99
use ApiClients\Tools\Psr7\Oauth1\RequestSigning\RequestSigner;
10+
use GuzzleHttp\Psr7\Request;
1011

1112
class RequestSignerTest extends \PHPUnit_Framework_TestCase
1213
{
@@ -26,4 +27,52 @@ public function testImmutability()
2627
$this->assertNotSame($requestSignerWithAccessToken, $requestSignerWithAccessTokenWithoutAccessToken);
2728
$this->assertEquals($requestSigner, $requestSignerWithAccessTokenWithoutAccessToken);
2829
}
30+
31+
public function testSign()
32+
{
33+
$expectedHeaderParts = [
34+
'oauth_consumer_key' => false,
35+
'oauth_nonce' => false,
36+
'oauth_signature_method' => false,
37+
'oauth_timestamp' => false,
38+
'oauth_version' => false,
39+
'oauth_token' => false,
40+
'oauth_signature' => false,
41+
];
42+
$request = new Request(
43+
'POST',
44+
'httpx://example.com/',
45+
[
46+
'Content-Type' => 'application/x-www-form-urlencoded',
47+
]
48+
);
49+
$requestSigner = (new RequestSigner(
50+
new ConsumerKey('consumer_key'),
51+
new ConsumerSecret('consumer_secret')
52+
))->withAccessToken(
53+
new AccessToken('access_token'),
54+
new TokenSecret('token_secret')
55+
);
56+
57+
$signedRequest = $requestSigner->sign($request);
58+
59+
$this->assertNotSame($request, $signedRequest);
60+
$this->assertTrue($signedRequest->hasHeader('Authorization'));
61+
$headerChunks = explode(' ', current($signedRequest->getHeader('Authorization')));
62+
$this->assertCount(2, $headerChunks);
63+
$this->assertSame('OAuth', $headerChunks[0]);
64+
65+
$headerChunks = explode(',', $headerChunks[1]);
66+
$this->assertCount(count($expectedHeaderParts), $headerChunks);
67+
foreach ($headerChunks as $headerChunk) {
68+
list($key, $value) = explode('=', $headerChunk);
69+
$this->assertTrue(isset($expectedHeaderParts[$key]));
70+
$expectedHeaderParts[$key] = true;
71+
}
72+
73+
foreach ($expectedHeaderParts as $expectedHeaderPart) {
74+
$this->assertInternalType('bool', $expectedHeaderPart);
75+
$this->assertTrue($expectedHeaderPart);
76+
}
77+
}
2978
}

0 commit comments

Comments
 (0)