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 ApiClients \Tools \Psr7 \Oauth1 \Signature \HmacSha1Signature ;
10
11
use GuzzleHttp \Psr7 \Request ;
11
12
12
13
class RequestSignerTest extends \PHPUnit_Framework_TestCase
@@ -39,12 +40,22 @@ public function testSign()
39
40
'oauth_token ' => false ,
40
41
'oauth_signature ' => false ,
41
42
];
43
+ $ captureValues = [
44
+ 'oauth_consumer_key ' => '' ,
45
+ 'oauth_nonce ' => '' ,
46
+ 'oauth_signature_method ' => '' ,
47
+ 'oauth_timestamp ' => '' ,
48
+ 'oauth_version ' => '' ,
49
+ 'oauth_token ' => '' ,
50
+ 'oauth_signature ' => '' ,
51
+ ];
42
52
$ request = new Request (
43
53
'POST ' ,
44
54
'httpx://example.com/ ' ,
45
55
[
46
56
'Content-Type ' => 'application/x-www-form-urlencoded ' ,
47
- ]
57
+ ],
58
+ 'foo=bar '
48
59
);
49
60
$ requestSigner = (new RequestSigner (
50
61
new ConsumerKey ('consumer_key ' ),
@@ -67,13 +78,32 @@ public function testSign()
67
78
foreach ($ headerChunks as $ headerChunk ) {
68
79
list ($ key , $ value ) = explode ('= ' , $ headerChunk );
69
80
$ this ->assertTrue (isset ($ expectedHeaderParts [$ key ]));
81
+ if (isset ($ captureValues [$ key ])) {
82
+ $ captureValues [$ key ] = rawurldecode (str_replace ('" ' , '' , $ value ));
83
+ }
70
84
$ expectedHeaderParts [$ key ] = true ;
71
85
}
72
86
73
87
foreach ($ expectedHeaderParts as $ expectedHeaderPart ) {
74
88
$ this ->assertInternalType ('bool ' , $ expectedHeaderPart );
75
89
$ this ->assertTrue ($ expectedHeaderPart );
76
90
}
91
+
92
+ $ signature = $ captureValues ['oauth_signature ' ];
93
+ unset($ captureValues ['oauth_signature ' ]);
94
+
95
+ $ this ->assertSame (
96
+ (new HmacSha1Signature (
97
+ new ConsumerSecret ('consumer_secret ' )
98
+ ))->withTokenSecret (
99
+ new TokenSecret ('token_secret ' )
100
+ )->sign (
101
+ $ request ->getUri (),
102
+ array_merge (['foo ' => 'bar ' ], $ captureValues ),
103
+ 'POST '
104
+ ),
105
+ $ signature
106
+ );
77
107
}
78
108
79
109
public function testSignToRequestAuthorization ()
@@ -88,12 +118,20 @@ public function testSignToRequestAuthorization()
88
118
'oauth_callback ' => false ,
89
119
'oauth_signature ' => false ,
90
120
];
121
+ $ captureValues = [
122
+ 'oauth_consumer_key ' => '' ,
123
+ 'oauth_nonce ' => '' ,
124
+ 'oauth_signature_method ' => '' ,
125
+ 'oauth_timestamp ' => '' ,
126
+ 'oauth_version ' => '' ,
127
+ 'oauth_callback ' => '' ,
128
+ 'oauth_signature ' => '' ,
129
+ ];
91
130
$ request = new Request (
92
131
'POST ' ,
93
132
'httpx://example.com/ ' ,
94
- [
95
- 'Content-Type ' => 'application/x-www-form-urlencoded ' ,
96
- ]
133
+ [],
134
+ 'foo=bar '
97
135
);
98
136
$ requestSigner = new RequestSigner (
99
137
new ConsumerKey ('consumer_key ' ),
@@ -113,12 +151,29 @@ public function testSignToRequestAuthorization()
113
151
foreach ($ headerChunks as $ headerChunk ) {
114
152
list ($ key , $ value ) = explode ('= ' , $ headerChunk );
115
153
$ this ->assertTrue (isset ($ expectedHeaderParts [$ key ]));
154
+ if (isset ($ captureValues [$ key ])) {
155
+ $ captureValues [$ key ] = rawurldecode (str_replace ('" ' , '' , $ value ));
156
+ }
116
157
$ expectedHeaderParts [$ key ] = true ;
117
158
}
118
159
119
160
foreach ($ expectedHeaderParts as $ expectedHeaderPart ) {
120
161
$ this ->assertInternalType ('bool ' , $ expectedHeaderPart );
121
162
$ this ->assertTrue ($ expectedHeaderPart );
122
163
}
164
+
165
+ $ signature = $ captureValues ['oauth_signature ' ];
166
+ unset($ captureValues ['oauth_signature ' ]);
167
+
168
+ $ this ->assertSame (
169
+ (new HmacSha1Signature (
170
+ new ConsumerSecret ('consumer_secret ' )
171
+ ))->sign (
172
+ $ request ->getUri (),
173
+ $ captureValues ,
174
+ 'POST '
175
+ ),
176
+ $ signature
177
+ );
123
178
}
124
179
}
0 commit comments