From 858bc283a4fbcb24f05fd194903e176ae73ea16f Mon Sep 17 00:00:00 2001 From: Richard Marmorstein Date: Mon, 15 Jan 2024 22:38:51 -0600 Subject: [PATCH 1/3] Beta: report raw_request usage --- lib/BaseStripeClient.php | 2 +- tests/Stripe/BaseStripeClientTest.php | 36 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/BaseStripeClient.php b/lib/BaseStripeClient.php index e3c757bfc..b34b249de 100644 --- a/lib/BaseStripeClient.php +++ b/lib/BaseStripeClient.php @@ -198,7 +198,7 @@ public function rawRequest($method, $path, $params = null, $opts = []) $opts->headers = \array_merge($opts->headers, $headers); $baseUrl = $opts->apiBase ?: $this->getApiBase(); $requestor = new \Stripe\ApiRequestor($this->apiKeyForRequest($opts), $baseUrl); - list($response) = $requestor->request($method, $path, $params, $opts->headers, $apiMode); + list($response) = $requestor->request($method, $path, $params, $opts->headers, $apiMode, ['raw_request']); return $response; } diff --git a/tests/Stripe/BaseStripeClientTest.php b/tests/Stripe/BaseStripeClientTest.php index 815f082f0..fb16ebac3 100644 --- a/tests/Stripe/BaseStripeClientTest.php +++ b/tests/Stripe/BaseStripeClientTest.php @@ -14,6 +14,9 @@ final class BaseStripeClientTest extends \Stripe\TestCase /** @var \ReflectionProperty */ private $optsReflector; + /** @var \ReflectionClass */ + private $apiRequestorReflector; + protected function headerStartsWith($header, $name) { return substr($header, 0, \strlen($name)) === $name; @@ -26,6 +29,12 @@ protected function setUpOptsReflector() $this->optsReflector->setAccessible(true); } + /** @before */ + protected function setUpApiRequestorReflector() + { + $this->apiRequestorReflector = new \ReflectionClass(\Stripe\ApiRequestor::class); + } + public function testCtorDoesNotThrowWhenNoParams() { $client = new BaseStripeClient(); @@ -273,6 +282,33 @@ public function testJsonRawRequestGetWithURLParams() static::assertSame('Stripe-Version: ' . ApiVersion::CURRENT, $stripe_version); } + public function testRawRequestUsageTelemetry() + { + $curlClientStub = $this->getMockBuilder(\Stripe\HttpClient\CurlClient::class) + ->setMethods(['executeRequestWithRetries']) + ->getMock() + ; + $curlClientStub->method('executeRequestWithRetries') + ->willReturn(['{}', 200, ["request-id" => "req_123"]]) + ; + + $curlClientStub->expects(static::once()) + ->method('executeRequestWithRetries') + ->with(static::callback(function ($opts) { + return true; + }), MOCK_URL . '/v1/xyz') + ; + ApiRequestor::setHttpClient($curlClientStub); + $client = new BaseStripeClient([ + 'api_key' => 'sk_test_client', + 'api_base' => MOCK_URL, + ]); + $client->rawRequest('post', '/v1/xyz', [], [ + 'api_mode' => 'standard', + ]); + static::assertEquals(["raw_request"], $this->apiRequestorReflector->getStaticPropertyValue('requestTelemetry')->usage); + } + public function testJsonRawRequestPost() { $curlClientStub = $this->getMockBuilder(\Stripe\HttpClient\CurlClient::class) From 6af91258fbb761c51a1b4ba733076eb0122accb9 Mon Sep 17 00:00:00 2001 From: Richard Marmorstein Date: Tue, 16 Jan 2024 02:24:27 -0600 Subject: [PATCH 2/3] Lint --- tests/Stripe/BaseStripeClientTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Stripe/BaseStripeClientTest.php b/tests/Stripe/BaseStripeClientTest.php index fb16ebac3..c19362846 100644 --- a/tests/Stripe/BaseStripeClientTest.php +++ b/tests/Stripe/BaseStripeClientTest.php @@ -289,7 +289,7 @@ public function testRawRequestUsageTelemetry() ->getMock() ; $curlClientStub->method('executeRequestWithRetries') - ->willReturn(['{}', 200, ["request-id" => "req_123"]]) + ->willReturn(['{}', 200, ['request-id' => 'req_123']]) ; $curlClientStub->expects(static::once()) @@ -306,7 +306,7 @@ public function testRawRequestUsageTelemetry() $client->rawRequest('post', '/v1/xyz', [], [ 'api_mode' => 'standard', ]); - static::assertEquals(["raw_request"], $this->apiRequestorReflector->getStaticPropertyValue('requestTelemetry')->usage); + static::assertSame(['raw_request'], $this->apiRequestorReflector->getStaticPropertyValue('requestTelemetry')->usage); } public function testJsonRawRequestPost() From 889f459440fa86787d8a7aa59ece1ad6d2594ee9 Mon Sep 17 00:00:00 2001 From: Richard Marmorstein Date: Tue, 16 Jan 2024 03:04:00 -0600 Subject: [PATCH 3/3] Fix bug --- tests/Stripe/BaseStripeClientTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Stripe/BaseStripeClientTest.php b/tests/Stripe/BaseStripeClientTest.php index c19362846..3e1a23300 100644 --- a/tests/Stripe/BaseStripeClientTest.php +++ b/tests/Stripe/BaseStripeClientTest.php @@ -306,7 +306,8 @@ public function testRawRequestUsageTelemetry() $client->rawRequest('post', '/v1/xyz', [], [ 'api_mode' => 'standard', ]); - static::assertSame(['raw_request'], $this->apiRequestorReflector->getStaticPropertyValue('requestTelemetry')->usage); + // Can't use ->getStaticPropertyValue because this has a bug until PHP 7.4.9: https://bugs.php.net/bug.php?id=69804 + static::assertSame(['raw_request'], $this->apiRequestorReflector->getStaticProperties()['requestTelemetry']->usage); } public function testJsonRawRequestPost()