Skip to content

Commit 9b662b3

Browse files
committed
Remove http.route from laminas
1 parent 651e235 commit 9b662b3

11 files changed

Lines changed: 9 additions & 37 deletions

appsec/tests/integration/src/test/groovy/com/datadog/appsec/php/integration/Laminas33Tests.groovy

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,6 @@ class Laminas33Tests {
9999

100100
@Test
101101
@Order(4)
102-
void 'home request sets http route to literal slash'() {
103-
Trace trace = container.traceFromRequest('/') { HttpResponse<InputStream> resp ->
104-
assert resp.statusCode() == 200
105-
}
106-
Span span = trace.first()
107-
assert span.meta.'http.route' == '/'
108-
}
109-
110-
@Test
111-
@Order(5)
112102
void 'Login failure automated event'() {
113103
Trace trace = container.traceFromRequest('/authenticate?email=nonExisiting@email.com') {
114104
HttpResponse<InputStream> resp ->
@@ -119,12 +109,11 @@ class Laminas33Tests {
119109
assert span.meta.'appsec.events.users.login.failure.track' == 'true'
120110
assert span.meta.'_dd.appsec.events.users.login.failure.auto.mode' == 'identification'
121111
assert span.meta.'appsec.events.users.login.failure.usr.exists' == 'false'
122-
assert span.meta.'http.route' == '/authenticate'
123112
assert span.metrics._sampling_priority_v1 == 2.0d
124113
}
125114

126115
@Test
127-
@Order(6)
116+
@Order(5)
128117
void 'Login success automated event'() {
129118
def trace = container.traceFromRequest('/authenticate?email=ciuser@example.com') {
130119
HttpResponse<InputStream> resp ->
@@ -135,12 +124,11 @@ class Laminas33Tests {
135124
assert span.meta.'usr.id' == '1'
136125
assert span.meta.'_dd.appsec.events.users.login.success.auto.mode' == 'identification'
137126
assert span.meta.'appsec.events.users.login.success.track' == 'true'
138-
assert span.meta.'http.route' == '/authenticate'
139127
assert span.metrics._sampling_priority_v1 == 2.0d
140128
}
141129

142130
@Test
143-
@Order(7)
131+
@Order(6)
144132
void 'path params trigger WAF block and laminas http route template'() {
145133
HttpRequest req = container.buildReq('/dynamic-path/someValue').GET().build()
146134
def trace = container.traceFromRequest(req, ofString()) { HttpResponse<String> re ->
@@ -153,6 +141,5 @@ class Laminas33Tests {
153141
assert span.metrics.'_dd.appsec.waf.duration' > 0.0d
154142
assert span.meta.'_dd.appsec.event_rules.version' != ''
155143
assert span.meta.'appsec.blocked' == 'true'
156-
assert span.meta.'http.route' == '/dynamic-path[/:param01]'
157144
}
158145
}

src/DDTrace/Integrations/Laminas/LaminasIntegration.php

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -275,14 +275,6 @@ static function (SpanData $span) use ($controller, $action) {
275275
$rootSpan->meta['laminas.route.name'] = $routeName;
276276
$rootSpan->meta['laminas.route.action'] = "$controller@$action";
277277

278-
// http.route: developer-defined template (e.g. /dynamic_route[/:param01[/static[/:param02]]])
279-
// Use LaminasIntegration:: not self:: — non-static hook closure is bound to the route object;
280-
// ddtrace resolves self to the instrumented class (e.g. TreeRouteStack).
281-
$routeTemplate = LaminasIntegration::httpRouteTemplateFromMatchedRoute($this, $routeMatch);
282-
if ($routeTemplate !== null) {
283-
$rootSpan->meta[Tag::HTTP_ROUTE] = $routeTemplate;
284-
}
285-
286278
// Push path params to appsec
287279
if (function_exists('\datadog\appsec\push_addresses')) {
288280
$params = $routeMatch->getParams();
@@ -544,10 +536,6 @@ static function ($This, $scope, $args) {
544536
$rootSpan->resource = "$controller@$eventName $routeName";
545537
$rootSpan->meta['laminas.route.name'] = $routeName;
546538
$rootSpan->meta['laminas.route.action'] = $controller . '@' . $eventName;
547-
$routeTemplate = LaminasIntegration::httpRouteTemplateFromMatchedRoute($event->getRouteMatch(), $event->getRouteMatch());
548-
if ($routeTemplate !== null) {
549-
$rootSpan->meta[Tag::HTTP_ROUTE] = $routeTemplate;
550-
}
551539

552540
if (isset($eventName, self::$EVENT_TYPES)) {
553541
install_hook(
@@ -935,7 +923,13 @@ public static function httpRouteTemplateFromMatchedRoute($matchedRoute, $routeMa
935923
}
936924
}
937925

938-
if (method_exists($matchedRoute, 'getRoute')) {
926+
// Segment (and similar leaf routes) expose getRoute() with no args as the path template.
927+
// RouteStackInterface (TreeRouteStack, Part, …) inherits SimpleRouteStack::getRoute($name), which
928+
// requires the route name — calling it with no arguments throws ArgumentCountError.
929+
if (
930+
method_exists($matchedRoute, 'getRoute')
931+
&& !($matchedRoute instanceof \Laminas\Router\RouteStackInterface)
932+
) {
939933
$routeSpec = $matchedRoute->getRoute();
940934
if (is_string($routeSpec) && $routeSpec !== '') {
941935
return $routeSpec;

tests/snapshots/tests.integrations.laminas.api_tools.latest.rest_test.test_scenario_rest2xx.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"_dd.p.dm": "-0",
1212
"component": "laminas",
1313
"http.method": "POST",
14-
"http.route": "[/v:version]/datadog-rest-service[/:datadog_rest_service_id]",
1514
"http.status_code": "201",
1615
"http.url": "http://localhost/datadog-rest-service",
1716
"http.version": "1.1",

tests/snapshots/tests.integrations.laminas.api_tools.latest.rest_test.test_scenario_rest4xx.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"_dd.p.dm": "-0",
1212
"component": "laminas",
1313
"http.method": "GET",
14-
"http.route": "[/v:version]/datadog-rest-service[/:datadog_rest_service_id]",
1514
"http.status_code": "405",
1615
"http.url": "http://localhost/datadog-rest-service/1",
1716
"http.version": "1.1",

tests/snapshots/tests.integrations.laminas.api_tools.latest.rest_test.test_scenario_rest5xx.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"error.stack": "#0 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas-api-tools/api-tools-rest/src/AbstractResourceListener.php(182): DatadogApi\\V1\\Rest\\DatadogRestService\\DatadogRestServiceResource->fetch()\n#1 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\\ApiTools\\Rest\\AbstractResourceListener->dispatch()\n#2 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(177): Laminas\\EventManager\\EventManager->triggerListeners()\n#3 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas-api-tools/api-tools-rest/src/Resource.php(544): Laminas\\EventManager\\EventManager->triggerEventUntil()\n#4 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas-api-tools/api-tools-rest/src/Resource.php(499): Laminas\\ApiTools\\Rest\\Resource->triggerEvent()\n#5 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas-api-tools/api-tools-rest/src/RestController.php(493): Laminas\\ApiTools\\Rest\\Resource->fetch()\n#6 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-mvc/src/Controller/AbstractRestfulController.php(372): Laminas\\ApiTools\\Rest\\RestController->get()\n#7 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas-api-tools/api-tools-rest/src/RestController.php(335): Laminas\\Mvc\\Controller\\AbstractRestfulController->onDispatch()\n#8 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\\ApiTools\\Rest\\RestController->onDispatch()\n#9 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(177): Laminas\\EventManager\\EventManager->triggerListeners()\n#10 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php(105): Laminas\\EventManager\\EventManager->triggerEventUntil()\n#11 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-mvc/src/Controller/AbstractRestfulController.php(306): Laminas\\Mvc\\Controller\\AbstractController->dispatch()\n#12 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-mvc/src/DispatchListener.php(117): Laminas\\Mvc\\Controller\\AbstractRestfulController->dispatch()\n#13 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\\Mvc\\DispatchListener->onDispatch()\n#14 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(177): Laminas\\EventManager\\EventManager->triggerListeners()\n#15 {path}/tests/Frameworks/Laminas/ApiTools/Latest/vendor/laminas/laminas-mvc/src/Application.php(319): Laminas\\EventManager\\EventManager->triggerEventUntil()\n#16 {path}/tests/Frameworks/Laminas/ApiTools/Latest/public/index.php(60): Laminas\\Mvc\\Application->run()\n#17 {main}",
1616
"error.type": "Error",
1717
"http.method": "GET",
18-
"http.route": "[/v:version]/datadog-rest-service[/:datadog_rest_service_id]",
1918
"http.status_code": "500",
2019
"http.url": "http://localhost/datadog-rest-service/42",
2120
"http.version": "1.1",

tests/snapshots/tests.integrations.laminas.mvc.latest.common_scenarios_test.test_scenario_get_return_string.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"_dd.p.dm": "-0",
1212
"component": "laminas",
1313
"http.method": "GET",
14-
"http.route": "/simple[/:key][/:pwd]",
1514
"laminas.route.name": "simple",
1615
"http.status_code": "200",
1716
"http.url": "http://localhost/simple?key=value&<redacted>",

tests/snapshots/tests.integrations.laminas.mvc.latest.common_scenarios_test.test_scenario_get_with_exception.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"error.stack": "#0 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php(72): Application\\Controller\\CommonSpecsController->errorAction()\n#1 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(320): Laminas\\Mvc\\Controller\\AbstractActionController->onDispatch(Object(Laminas\\Mvc\\MvcEvent))\n#2 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(178): Laminas\\EventManager\\EventManager->triggerListeners(Object(Laminas\\Mvc\\MvcEvent), Object(Closure))\n#3 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php(105): Laminas\\EventManager\\EventManager->triggerEventUntil(Object(Closure), Object(Laminas\\Mvc\\MvcEvent))\n#4 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-mvc/src/DispatchListener.php(117): Laminas\\Mvc\\Controller\\AbstractController->dispatch(Object(Laminas\\Http\\PhpEnvironment\\Request), Object(Laminas\\Http\\PhpEnvironment\\Response))\n#5 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(320): Laminas\\Mvc\\DispatchListener->onDispatch(Object(Laminas\\Mvc\\MvcEvent))\n#6 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-eventmanager/src/EventManager.php(178): Laminas\\EventManager\\EventManager->triggerListeners(Object(Laminas\\Mvc\\MvcEvent), Object(Closure))\n#7 {path}/tests/Frameworks/Laminas/Mvc/Latest/vendor/laminas/laminas-mvc/src/Application.php(319): Laminas\\EventManager\\EventManager->triggerEventUntil(Object(Closure), Object(Laminas\\Mvc\\MvcEvent))\n#8 {path}/tests/Frameworks/Laminas/Mvc/Latest/public/index.php(37): Laminas\\Mvc\\Application->run()\n#9 {main}",
1616
"error.type": "Exception",
1717
"http.method": "GET",
18-
"http.route": "/error[/:key][/:pwd]",
1918
"laminas.route.name": "error",
2019
"http.status_code": "500",
2120
"http.url": "http://localhost/error?key=value&<redacted>",

tests/snapshots/tests.integrations.laminas.mvc.latest.common_scenarios_test.test_scenario_get_with_view.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"_dd.p.dm": "-0",
1212
"component": "laminas",
1313
"http.method": "GET",
14-
"http.route": "/simple_view[/:key][/:pwd]",
1514
"laminas.route.name": "simpleView",
1615
"http.status_code": "200",
1716
"http.url": "http://localhost/simple_view?key=value&<redacted>",

tests/snapshots/tests.integrations.laminas.mvc.v3_3.common_scenarios_test.test_scenario_get_return_string.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"_dd.p.tid": "6790b6e900000000",
1313
"component": "laminas",
1414
"http.method": "GET",
15-
"http.route": "/simple[/:key][/:pwd]",
1615
"http.status_code": "200",
1716
"http.url": "http://localhost/simple?key=value&<redacted>",
1817
"http.version": "1.1",

tests/snapshots/tests.integrations.laminas.mvc.v3_3.common_scenarios_test.test_scenario_get_with_exception.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"error.stack": "#0 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-mvc/src/Controller/AbstractActionController.php(71): Application\\Controller\\CommonSpecsController->errorAction()\n#1 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\\Mvc\\Controller\\AbstractActionController->onDispatch()\n#2 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-eventmanager/src/EventManager.php(179): Laminas\\EventManager\\EventManager->triggerListeners()\n#3 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-mvc/src/Controller/AbstractController.php(97): Laminas\\EventManager\\EventManager->triggerEventUntil()\n#4 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-mvc/src/DispatchListener.php(132): Laminas\\Mvc\\Controller\\AbstractController->dispatch()\n#5 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-eventmanager/src/EventManager.php(319): Laminas\\Mvc\\DispatchListener->onDispatch()\n#6 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-eventmanager/src/EventManager.php(179): Laminas\\EventManager\\EventManager->triggerListeners()\n#7 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/vendor/laminas/laminas-mvc/src/Application.php(325): Laminas\\EventManager\\EventManager->triggerEventUntil()\n#8 {path}/tests/Frameworks/Laminas/Mvc/Version_3_3/public/index.php(37): Laminas\\Mvc\\Application->run()\n#9 {main}",
1717
"error.type": "Exception",
1818
"http.method": "GET",
19-
"http.route": "/error[/:key][/:pwd]",
2019
"http.status_code": "500",
2120
"http.url": "http://localhost/error?key=value&<redacted>",
2221
"http.version": "1.1",

0 commit comments

Comments
 (0)