From a8288649f1367f3782d8a22dd81c6b2b438aa67e Mon Sep 17 00:00:00 2001 From: Alan Storm Date: Wed, 25 Aug 2021 16:38:42 -0700 Subject: [PATCH] feat: allow for ignoring specific phone numbers --- lib/instrumentation/modules/aws-sdk/sns.js | 10 ++++-- .../modules/aws-sdk/sns.test.js | 31 ++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/lib/instrumentation/modules/aws-sdk/sns.js b/lib/instrumentation/modules/aws-sdk/sns.js index 3babebb3c7d..2f48d80dc6d 100644 --- a/lib/instrumentation/modules/aws-sdk/sns.js +++ b/lib/instrumentation/modules/aws-sdk/sns.js @@ -5,11 +5,14 @@ const SUBTYPE = 'sns' const ACTION = 'publish' const PHONE_NUMBER = '' -function getArnFromRequest (request) { +function getArnOrPhoneNumberFromRequest (request) { let arn = request && request.params && request.params.TopicArn if (!arn) { arn = request && request.params && request.params.TargetArn } + if (!arn) { + arn = request && request.params && request.params.PhoneNumber + } return arn } @@ -90,7 +93,7 @@ function shouldIgnoreRequest (request, agent) { // is the named topic on our ignore list? if (agent._conf && agent._conf.ignoreMessageQueuesRegExp) { - const queueName = getArnFromRequest(request) + const queueName = getArnOrPhoneNumberFromRequest(request) for (const rule of agent._conf.ignoreMessageQueuesRegExp) { if (rule.test(queueName)) { return true @@ -143,5 +146,6 @@ module.exports = { // exported for testing getSpanNameFromRequest, getDestinationNameFromRequest, - getMessageDestinationContextFromRequest + getMessageDestinationContextFromRequest, + getArnOrPhoneNumberFromRequest } diff --git a/test/instrumentation/modules/aws-sdk/sns.test.js b/test/instrumentation/modules/aws-sdk/sns.test.js index 8dbb513a267..c42fd802cc6 100644 --- a/test/instrumentation/modules/aws-sdk/sns.test.js +++ b/test/instrumentation/modules/aws-sdk/sns.test.js @@ -17,7 +17,8 @@ const bodyParser = require('body-parser') const AWS = require('aws-sdk') const { - getSpanNameFromRequest, getDestinationNameFromRequest, getMessageDestinationContextFromRequest + getSpanNameFromRequest, getDestinationNameFromRequest, + getArnOrPhoneNumberFromRequest, getMessageDestinationContextFromRequest } = require('../../../../lib/instrumentation/modules/aws-sdk/sns') const fixtures = require('./fixtures/sns') const mockClient = require('../../../_mock_http_client') @@ -51,6 +52,34 @@ function resetAgent (cb) { } tape.test('AWS SNS: Unit Test Functions', function (test) { + test.test('getArnOrPhoneNumberFromRequest tests', function (t) { + t.equals(getArnOrPhoneNumberFromRequest({ + operation: 'publish', + params: { + Message: 'this is my test, there are many like it but this one is mine', + TopicArn: 'foo' + } + }), 'foo') + + t.equals(getArnOrPhoneNumberFromRequest({ + operation: 'publish', + params: { + Message: 'this is my test, there are many like it but this one is mine', + TargetArn: 'bar' + } + }), 'bar') + + t.equals(getArnOrPhoneNumberFromRequest({ + operation: 'publish', + params: { + Message: 'this is my test, there are many like it but this one is mine', + PhoneNumber: '1-555-555-5555' + } + }), '1-555-555-5555') + + t.end() + }) + test.test('getDestinationNameFromRequest tests', function (t) { t.equals(getDestinationNameFromRequest({ operation: 'publish',