77use ApiClients \Tools \Psr7 \Oauth1 \Definition \ConsumerSecret ;
88use ApiClients \Tools \Psr7 \Oauth1 \Definition \TokenSecret ;
99use ApiClients \Tools \Psr7 \Oauth1 \RequestSigning \RequestSigner ;
10+ use GuzzleHttp \Psr7 \Request ;
1011
1112class 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