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