Skip to content

Commit b3dd5ba

Browse files
committed
LNX-332 - Add old profiler checking
1 parent 233e93a commit b3dd5ba

4 files changed

Lines changed: 87 additions & 3 deletions

File tree

src/Stackify/Utils/Rum.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public function getSapiName()
279279
*/
280280
protected function isProfilerActive()
281281
{
282-
return function_exists('stackify_transaction_id') && class_exists('\Stackify\Profiler');
282+
return function_exists('stackify_transaction_id') && class_exists($this->getProfilerClass());
283283
}
284284

285285
/**
@@ -289,13 +289,24 @@ protected function isProfilerActive()
289289
*/
290290
public function getProfilerInsertRumScript()
291291
{
292-
if ($this->isProfilerActive()) {
293-
return \Stackify\Profiler::insertRumScript();
292+
if ($this->isProfilerActive() && method_exists($this->getProfilerClass(), 'insertRumScript')) {
293+
$profilerClass = $this->getProfilerClass();
294+
return $profilerClass::insertRumScript();
294295
}
295296

296297
return null;
297298
}
298299

300+
/**
301+
* Get profiler class
302+
*
303+
* @return string
304+
*/
305+
public function getProfilerClass()
306+
{
307+
return 'Stackify\Profiler';
308+
}
309+
299310
/**
300311
* Get RUM Script URL
301312
*
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Stackify\Tests\Utils\Fixtures;
4+
5+
class ProfilerNoInsert
6+
{
7+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace Stackify\Tests\Utils\Fixtures;
4+
5+
class ProfilerWithInsert
6+
{
7+
public static function insertRumScript()
8+
{
9+
return 'mock script';
10+
}
11+
}

tests/Utils/UtilsRumTest.php

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,61 @@ public function testRumGetReportingUrlNonCliWithRequestMethod()
920920
unset($_SERVER['REQUEST_METHOD']);
921921
}
922922

923+
public function testRumInsertScriptWithProfilerActiveMock()
924+
{
925+
$class = 'Stackify\Tests\Utils\Fixtures\ProfilerWithInsert';
926+
$this->assertSame($class::insertRumScript(), 'mock script');
927+
928+
$mockRumObject = $this->getMockBuilder(Rum::class)
929+
->setMethods(['getProfilerClass'])
930+
->getMock();
931+
932+
$mockRumObject->method('getProfilerClass')
933+
->willReturn($class);
934+
935+
$this->assertSame($mockRumObject->getProfilerClass(), $class);
936+
$this->assertSame($mockRumObject->insertRumScript(), 'mock script');
937+
}
938+
939+
public function testRumInsertScriptWithProfilerActiveMockNoMethod()
940+
{
941+
$class = 'Stackify\Tests\Utils\Fixtures\ProfilerNoInsert';
942+
$this->assertFalse(method_exists($class, 'insertRumScript'));
943+
944+
$mockRumObject = $this->getMockBuilder(Rum::class)
945+
->setMethods(['getTransactionId', 'getReportingUrl'])
946+
->getMock();
947+
948+
$appName = 'test app name';
949+
$environment = 'test environment';
950+
$reportingUrl = 'test-1234';
951+
$transactionId = 'trans-1234';
952+
$rumKey = 'valid-rum-key';
953+
$rumScriptUrl = self::DEFAULT_RUM_SCRIPT_URL;
954+
955+
$mockRumObject->setupConfiguration(
956+
$appName,
957+
$environment,
958+
$rumKey
959+
);
960+
961+
$mockRumObject->method('getTransactionId')
962+
->willReturn($transactionId);
963+
964+
$mockRumObject->method('getReportingUrl')
965+
->willReturn($reportingUrl);
966+
967+
$rumSettings = array(
968+
'ID' => $transactionId,
969+
'Name' => base64_encode(utf8_encode($appName)),
970+
'Env' => base64_encode(utf8_encode($environment)),
971+
'Trans' => base64_encode(utf8_encode($reportingUrl))
972+
);
973+
974+
$rumScript = '<script type="text/javascript">(window.StackifySettings || (window.StackifySettings = '.json_encode($rumSettings).'))</script><script src="'.$rumScriptUrl.'" data-key="'.$rumKey.'" async></script>';
975+
$this->assertSame($mockRumObject->insertRumScript(), $rumScript);
976+
}
977+
923978
private function givenARumObjectWithDefaultSetting()
924979
{
925980
return new Rum;

0 commit comments

Comments
 (0)