7
7
use ApiClients \Tools \Psr7 \Oauth1 \Definition \ConsumerSecret ;
8
8
use ApiClients \Tools \Psr7 \Oauth1 \Definition \TokenSecret ;
9
9
use ApiClients \Tools \Psr7 \Oauth1 \RequestSigning \RequestSigner ;
10
+ use GuzzleHttp \Psr7 \Request ;
10
11
11
12
class RequestSignerTest extends \PHPUnit_Framework_TestCase
12
13
{
@@ -26,4 +27,52 @@ public function testImmutability()
26
27
$ this ->assertNotSame ($ requestSignerWithAccessToken , $ requestSignerWithAccessTokenWithoutAccessToken );
27
28
$ this ->assertEquals ($ requestSigner , $ requestSignerWithAccessTokenWithoutAccessToken );
28
29
}
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
+ }
29
78
}
0 commit comments