@@ -26,21 +26,25 @@ final class RestClientTest extends TestCase {
2626 * @dataProvider getRequestExamples
2727 */
2828 function testTelesignHeadersMatchExample ($ data ) {
29+ $ auth_method = $ data ["auth_method " ] ?? "HMAC-SHA256 " ;
2930 $ actual_headers = RestClient::generateTelesignHeaders (
3031 self ::EXAMPLE_CUSTOMER_ID ,
3132 self ::EXAMPLE_API_KEY ,
3233 $ data ["method_name " ],
3334 self ::EXAMPLE_RESOURCE ,
3435 self ::EXAMPLE_URL_ENCODED_FIELDS ,
3536 self ::EXAMPLE_DATE ,
36- self ::EXAMPLE_NONCE
37+ self ::EXAMPLE_NONCE ,
38+ null ,
39+ $ data ["request " ]["headers " ]["content-type " ],
40+ $ auth_method
3741 );
3842
3943 $ expected_headers = [
4044 "Authorization " => $ data ["request " ]["headers " ]["authorization " ],
4145 "Date " => self ::EXAMPLE_DATE ,
4246 "Content-Type " => $ data ["request " ]["headers " ]["content-type " ],
43- "x-ts-auth-method " => " HMAC-SHA256 " ,
47+ "x-ts-auth-method " => $ auth_method ,
4448 "x-ts-nonce " => self ::EXAMPLE_NONCE
4549 ];
4650
@@ -55,7 +59,7 @@ function getRequestExamples () {
5559 "uri " => self ::EXAMPLE_REST_ENDPOINT . self ::EXAMPLE_RESOURCE ,
5660 "body " => self ::EXAMPLE_URL_ENCODED_FIELDS ,
5761 "headers " => [
58- "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:smUGWEeXtN+WT1s/y1Ssp4Q2Acm/ultPxkgl/GjqSsA = " ,
62+ "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:dzREwjKg3/o02ABsf8itcNiNzzKWM293qOavWhfkkok = " ,
5963 "content-type " => "application/x-www-form-urlencoded " ,
6064 ]
6165 ]
@@ -66,7 +70,7 @@ function getRequestExamples () {
6670 "uri " => self ::EXAMPLE_REST_ENDPOINT . self ::EXAMPLE_RESOURCE . "? " . self ::EXAMPLE_URL_ENCODED_FIELDS ,
6771 "body " => "" ,
6872 "headers " => [
69- "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:YgzQt6LcuBDSUeTpE4SASXcSAKAm1eL5TWetbxhXJxg = " ,
73+ "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:rtUnnJ8wPWEq/pxxT5H+Pj78WHicDzkVYP+dIStuKiQ = " ,
7074 "content-type " => ""
7175 ]
7276 ]
@@ -77,7 +81,7 @@ function getRequestExamples () {
7781 "uri " => self ::EXAMPLE_REST_ENDPOINT . self ::EXAMPLE_RESOURCE ,
7882 "body " => self ::EXAMPLE_URL_ENCODED_FIELDS ,
7983 "headers " => [
80- "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:ccNQP7Tdwsfqx/Sdz/MmZuhFh+z0z/Bj+OcwDhbTT0s = " ,
84+ "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:U2s4H/VqFVnb/flIk9ynhUn6no+VBi2Jlc4YUh4H08k = " ,
8185 "content-type " => "application/x-www-form-urlencoded "
8286 ]
8387 ]
@@ -88,11 +92,23 @@ function getRequestExamples () {
8892 "uri " => self ::EXAMPLE_REST_ENDPOINT . self ::EXAMPLE_RESOURCE . "? " . self ::EXAMPLE_URL_ENCODED_FIELDS ,
8993 "body " => "" ,
9094 "headers " => [
91- "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:ODT8s51qSdrS2pKbtrKIu76gQJf2h0hDz8nJ5ho0/6w = " ,
95+ "authorization " => "TSA FFFFFFFF-EEEE-DDDD-1234-AB1234567890:PjtMTR0t1JzTZEuB7GKlOpdxpsyaX4Zy+4MBWnwii4w = " ,
9296 "content-type " => ""
9397 ]
9498 ]
95- ]]
99+ ]],
100+ [[
101+ "method_name " => "PATCH " ,
102+ "auth_method " => "Basic " ,
103+ "request " => [
104+ "uri " => self ::EXAMPLE_REST_ENDPOINT . self ::EXAMPLE_RESOURCE ,
105+ "body " => self ::EXAMPLE_FIELDS ,
106+ "headers " => [
107+ "authorization " => Example::AUTH_BASIC_STRING ,
108+ "content-type " => "application/json "
109+ ]
110+ ]
111+ ]],
96112 ];
97113 }
98114
@@ -120,14 +136,14 @@ function testUserAgentMatchesFormat () {
120136 $ mock = new MockHandler ([ new Response () ]);
121137
122138 $ client = new RestClient (
123- self ::EXAMPLE_CUSTOMER_ID , self ::EXAMPLE_API_KEY , self ::EXAMPLE_REST_ENDPOINT , 10 , null , $ mock
139+ self ::EXAMPLE_CUSTOMER_ID , self ::EXAMPLE_API_KEY , self ::EXAMPLE_REST_ENDPOINT , " php_telesign " , null , null , 10 , null , $ mock
124140 );
125141 $ client ->get (self ::EXAMPLE_RESOURCE );
126142
127143 $ user_agent = $ mock ->getLastRequest ()->getHeader ("user-agent " )[0 ];
128144 $ php_version = PHP_VERSION ;
129145 $ guzzle_version = Client::MAJOR_VERSION ;
130- $ pattern = "`^TeleSignSDK/php-v?\d.+ PHP/ $ php_version Guzzle/ $ guzzle_version$` " ;
146+ $ pattern = "`^TeleSignSDK/php PHP/ $ php_version Guzzle/ $ guzzle_version OriginatingSDK/php_telesign SDKVersion/[a-zA-Z0-9.\-_]+ $` " ;
131147
132148 $ this ->assertRegExp ($ pattern , $ user_agent );
133149 }
@@ -139,10 +155,12 @@ function testSendsRequest ($data) {
139155 $ mock = new MockHandler ([ new Response () ]);
140156
141157 $ client = new RestClient (
142- self ::EXAMPLE_CUSTOMER_ID , self ::EXAMPLE_API_KEY , self ::EXAMPLE_REST_ENDPOINT , 10 , null , $ mock
158+ self ::EXAMPLE_CUSTOMER_ID , self ::EXAMPLE_API_KEY , self ::EXAMPLE_REST_ENDPOINT , " php_telesign " , null , null , 10 , null , $ mock
143159 );
160+ $ auth_method = $ data ["auth_method " ] ?? "HMAC-SHA256 " ;
161+ $ content_type = $ data ["request " ]["headers " ]["content-type " ];
144162 $ client ->{$ data ["method_name " ]}(
145- self ::EXAMPLE_RESOURCE , self ::EXAMPLE_FIELDS , self ::EXAMPLE_DATE , self ::EXAMPLE_NONCE
163+ self ::EXAMPLE_RESOURCE , self ::EXAMPLE_FIELDS , self ::EXAMPLE_DATE , self ::EXAMPLE_NONCE , $ content_type , $ auth_method
146164 );
147165
148166 $ request = $ mock ->getLastRequest ();
@@ -151,7 +169,14 @@ function testSendsRequest ($data) {
151169 $ this ->assertEquals ($ data ["request " ]["uri " ], $ request ->getUri ());
152170 $ this ->assertTrue ($ request ->hasHeader ("authorization " ));
153171 $ this ->assertEquals ($ data ["request " ]["headers " ]["authorization " ], $ request ->getHeader ("authorization " )[0 ]);
154- $ this ->assertEquals ($ data ["request " ]["body " ], $ request ->getBody ());
172+
173+ $ bodyContent = $ request ->getBody ();
174+ if ($ content_type === "application/json " ) {
175+ $ parsedBody = json_decode ($ bodyContent , true );
176+ $ this ->assertEquals ($ data ["request " ]["body " ], $ parsedBody );
177+ } else {
178+ $ this ->assertEquals ($ data ["request " ]["body " ], $ bodyContent );
179+ }
155180 }
156181
157182 /**
@@ -161,7 +186,7 @@ function testReturnsResponse ($data) {
161186 $ mock = new MockHandler ([ new Response () ]);
162187
163188 $ client = new RestClient (
164- self ::EXAMPLE_CUSTOMER_ID , self ::EXAMPLE_API_KEY , self ::EXAMPLE_REST_ENDPOINT , 10 , null , $ mock
189+ self ::EXAMPLE_CUSTOMER_ID , self ::EXAMPLE_API_KEY , self ::EXAMPLE_REST_ENDPOINT , " php_telesign " , null , null , 10 , null , $ mock
165190 );
166191 $ response = $ client ->{$ data ["method_name " ]}(
167192 self ::EXAMPLE_RESOURCE , self ::EXAMPLE_FIELDS , self ::EXAMPLE_DATE , self ::EXAMPLE_NONCE
0 commit comments