Skip to content

Commit 0c3ed07

Browse files
authored
Merge pull request #4966 from DataDog/appsec-endpoint-collection-telemetry-guard
Add a guard for missing `AppSec.telemetry` in Endpoint Collection
2 parents 1cad9b2 + c6d96f7 commit 0c3ed07

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

.github/workflows/system-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ jobs:
8181
include:
8282
- weblogs: "" # All of them
8383
scenarios: DEFAULT,EVERYTHING_DISABLED,APPSEC_BLOCKING_FULL_DENYLIST,APPSEC_BLOCKING,GRAPHQL_APPSEC,PARAMETRIC
84-
- weblogs: rack,rails70
84+
- weblogs: rack,rails72
8585
scenarios: |
8686
APPSEC_API_SECURITY,
8787
APPSEC_API_SECURITY_RC,

lib/datadog/appsec/contrib/rails/patcher.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,16 +149,16 @@ def report_routes_via_telemetry(routes)
149149
# We do not support Rails 4.x for Endpoint Collection,
150150
# mainly because the Route#verb was a Regexp before Rails 5.0
151151
return if target_version < Gem::Version.new('5.0')
152-
153152
return unless Datadog.configuration.appsec.api_security.endpoint_collection.enabled
153+
return unless AppSec.telemetry
154154

155155
GUARD_ROUTES_REPORTING_ONCE_PER_APP[::Rails.application].run do
156156
AppSec.telemetry.app_endpoints_loaded(
157157
APISecurity::EndpointCollection::RailsCollector.new(routes).to_enum
158158
)
159159
end
160160
rescue => e
161-
AppSec.telemetry.report(e, description: 'failed to report application endpoints')
161+
AppSec.telemetry&.report(e, description: 'failed to report application endpoints')
162162
end
163163

164164
def setup_security

spec/datadog/appsec/integration/contrib/rails/endpoint_collection_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,14 @@ def initialize(files, dirs = {}, &block)
200200
ActiveSupport.run_load_hooks(:after_routes_loaded, Rails.application)
201201
end
202202

203+
it 'does not raise an error when AppSec.telemetry is nil' do
204+
allow(Datadog::AppSec).to receive(:telemetry).and_return(nil)
205+
206+
expect do
207+
ActiveSupport.run_load_hooks(:after_routes_loaded, Rails.application)
208+
end.not_to raise_error
209+
end
210+
203211
it 'reports routes via telemetry' do
204212
ActiveSupport.run_load_hooks(:after_routes_loaded, Rails.application)
205213

0 commit comments

Comments
 (0)