<?php
namespace Telnyx;
/**
* @internal
* @coversNothing
*/
final class TelnyxTelemetryTest extends \Telnyx\TestCase
{
const TEST_API_KEY = 'KEY123';
const TEST_RESOURCE_ID = 'acct_123';
const TEST_EXTERNALACCOUNT_ID = 'ba_123';
const TEST_PERSON_ID = 'person_123';
const FAKE_VALID_RESPONSE = '{
"data": [],
"record_type": "list",
"meta": [],
"url": "/v2/phone_numbers"
}';
protected function setUp()
{
// clear static telemetry data
ApiRequestor::resetTelemetry();
}
public function testNoTelemetrySentIfNotEnabled()
{
Telnyx::setApiKey(self::TEST_API_KEY);
$requestheaders = null;
$stub = $this
->getMockBuilder('HttpClient\\ClientInterface')
->setMethods(['request'])
->getMock()
;
$stub->expects(static::any())
->method('request')
->with(
static::anything(),
static::anything(),
static::callback(function ($headers) use (&$requestheaders) {
foreach ($headers as $index => $header) {
// capture the requested headers and format back to into an assoc array
$components = \explode(': ', $header, 2);
$requestheaders[$components[0]] = $components[1];
}
return true;
}),
static::anything(),
static::anything()
)->willReturn([self::FAKE_VALID_RESPONSE, 200, ['request-id' => '123']]);
ApiRequestor::setHttpClient($stub);
// make one request to capture its result
PhoneNumber::all();
static::assertArrayNotHasKey('X-Telnyx-Client-Telemetry', $requestheaders);
// make another request and verify telemetry isn't sent
PhoneNumber::all();
static::assertArrayNotHasKey('X-Telnyx-Client-Telemetry', $requestheaders);
ApiRequestor::setHttpClient(null);
}
public function testTelemetrySetIfEnabled()
{
Telnyx::setApiKey(self::TEST_API_KEY);
Telnyx::setEnableTelemetry(true);
$requestheaders = null;
$stub = $this
->getMockBuilder('HttpClient\\ClientInterface')
->setMethods(['request'])
->getMock()
;
$stub->expects(static::any())
->method('request')
->with(
static::anything(),
static::anything(),
static::callback(function ($headers) use (&$requestheaders) {
// capture the requested headers and format back to into an assoc array
foreach ($headers as $index => $header) {
$components = \explode(': ', $header, 2);
$requestheaders[$components[0]] = $components[1];
}
return true;
}),
static::anything(),
static::anything()
)->willReturn([self::FAKE_VALID_RESPONSE, 200, ['request-id' => ['req_123']]]);
ApiRequestor::setHttpClient($stub);
// make one request to capture its result
PhoneNumber::all();
static::assertArrayNotHasKey('X-Telnyx-Client-Telemetry', $requestheaders);
// make another request to send the previous
PhoneNumber::all();
static::assertArrayHasKey('X-Telnyx-Client-Telemetry', $requestheaders);
$data = \json_decode($requestheaders['X-Telnyx-Client-Telemetry'], true);
static::assertNotNull($data['last_request_metrics']['request_duration_ms']);
ApiRequestor::setHttpClient(null);
}
}