|
8 | 8 | use FlagsmithTest\Offline\FakeOfflineHandler; |
9 | 9 | use GuzzleHttp\Psr7\Response; |
10 | 10 | use PHPUnit\Framework\TestCase; |
| 11 | +use Psr\Http\Client\ClientInterface; |
11 | 12 | use Psr\Http\Message\StreamFactoryInterface; |
12 | 13 |
|
13 | 14 | class FlagsmithClientTest extends TestCase |
@@ -449,4 +450,32 @@ public function testOfflineHandlerUsedAsFallbackForLocalEvaluation() |
449 | 450 | $this->assertEquals($identityFlags->getFlag('some_feature')->enabled, true); |
450 | 451 | $this->assertEquals($identityFlags->getFlag('some_feature')->value, 'some-value'); |
451 | 452 | } |
| 453 | + |
| 454 | + public function testApiRequestsIncludeUserAgentHeader() |
| 455 | + { |
| 456 | + $capturedRequest = null; |
| 457 | + $mockClient = $this->createMock(ClientInterface::class); |
| 458 | + $mockClient->expects($this->once()) |
| 459 | + ->method('sendRequest') |
| 460 | + ->with($this->callback(function ($request) use (&$capturedRequest) { |
| 461 | + $capturedRequest = $request; |
| 462 | + return true; |
| 463 | + })) |
| 464 | + ->willReturn( |
| 465 | + new Response(200, ['Content-Type' => 'application/json'], file_get_contents(__DIR__ . '/Data/flags.json')) |
| 466 | + ); |
| 467 | + |
| 468 | + $flagsmith = (new Flagsmith('api_key')) |
| 469 | + ->withClient($mockClient); |
| 470 | + |
| 471 | + $flagsmith->getEnvironmentFlags(); |
| 472 | + |
| 473 | + $this->assertNotNull($capturedRequest); |
| 474 | + $this->assertTrue($capturedRequest->hasHeader('User-Agent')); |
| 475 | + $userAgent = $capturedRequest->getHeaderLine('User-Agent'); |
| 476 | + $composerData = json_decode(file_get_contents(__DIR__ . '/../composer.json'), true); |
| 477 | + $expectedVersion = $composerData['version'] ?? 'unknown'; |
| 478 | + $expectedUserAgent = "flagsmith-php-sdk/{$expectedVersion}"; |
| 479 | + $this->assertEquals($expectedUserAgent, $userAgent); |
| 480 | + } |
452 | 481 | } |
0 commit comments