From b354d1ad5f665e7a5863c86a4ac1ee192ad5f894 Mon Sep 17 00:00:00 2001 From: Sander Bruens Date: Tue, 2 Jan 2024 14:02:13 -0500 Subject: [PATCH 1/2] fix(sentry_webhook): convert OS values to allowed picklist values --- .../post_sentry_event_to_salesforce.spec.ts | 4 +-- .../post_sentry_event_to_salesforce.ts | 29 ++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/sentry_webhook/post_sentry_event_to_salesforce.spec.ts b/src/sentry_webhook/post_sentry_event_to_salesforce.spec.ts index d9cc3cb8e..008ae0311 100644 --- a/src/sentry_webhook/post_sentry_event_to_salesforce.spec.ts +++ b/src/sentry_webhook/post_sentry_event_to_salesforce.spec.ts @@ -92,7 +92,7 @@ describe('postSentryEventToSalesforce', () => { message: 'my message', tags: [ ['category', 'test category'], - ['os.name', 'test os'], + ['os.name', 'Mac OS X'], ['sentry:release', 'test version'], ['unknown:tag', 'foo'], ], @@ -109,7 +109,7 @@ describe('postSentryEventToSalesforce', () => { '&description=my%20message' + '&type=Outline%20client' + '&00N0b00000BqOA2=test%20category' + - '&00N0b00000BqOfW=test%20os' + + '&00N0b00000BqOfW=macOs' + '&00N0b00000BqOfR=test%20version' ); expect(mockRequest.end).toHaveBeenCalled(); diff --git a/src/sentry_webhook/post_sentry_event_to_salesforce.ts b/src/sentry_webhook/post_sentry_event_to_salesforce.ts index c8056e996..fa007856d 100644 --- a/src/sentry_webhook/post_sentry_event_to_salesforce.ts +++ b/src/sentry_webhook/post_sentry_event_to_salesforce.ts @@ -142,7 +142,7 @@ function getSalesforceFormData( if (event.tags) { const tags = new Map(event.tags); form.push(encodeFormData(formFields.category, tags.get('category'))); - form.push(encodeFormData(formFields.os, tags.get('os.name'))); + form.push(encodeFormData(formFields.os, toOSPicklistValue(tags.get('os.name')))); form.push(encodeFormData(formFields.version, tags.get('sentry:release'))); if (!isClient) { form.push(encodeFormData(formFields.cloudProvider, tags.get('cloudProvider'))); @@ -151,6 +151,33 @@ function getSalesforceFormData( return form.join('&'); } +// Returns a picklist value that is allowed by SalesForce for the OS record. +function toOSPicklistValue(value: string | undefined): string | undefined { + if (!value) { + console.warn('No OS found'); + return undefined; + } + + const normalizedValue = value.toLowerCase(); + if (normalizedValue.includes('linux') || normalizedValue.includes('fedora')) { + return 'Linux'; + } + if (normalizedValue.includes('android')) { + return 'Android'; + } + if (normalizedValue.includes('ios')) { + return 'iOS'; + } + if (normalizedValue.includes('windows')) { + return 'Windows'; + } + if (normalizedValue.includes('mac')) { + return 'macOs'; + } + console.warn('Unexpected OS:', value); + return value; +} + function encodeFormData(field: string, value?: string) { return `${encodeURIComponent(field)}=${encodeURIComponent(value || '')}`; } From 6059f5ef2b8e5f497e0bd3099f9395a68b7d475c Mon Sep 17 00:00:00 2001 From: Sander Bruens Date: Wed, 3 Jan 2024 12:23:52 -0500 Subject: [PATCH 2/2] Make `Linux` the fallback. --- src/sentry_webhook/post_sentry_event_to_salesforce.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/sentry_webhook/post_sentry_event_to_salesforce.ts b/src/sentry_webhook/post_sentry_event_to_salesforce.ts index fa007856d..45883043c 100644 --- a/src/sentry_webhook/post_sentry_event_to_salesforce.ts +++ b/src/sentry_webhook/post_sentry_event_to_salesforce.ts @@ -159,9 +159,6 @@ function toOSPicklistValue(value: string | undefined): string | undefined { } const normalizedValue = value.toLowerCase(); - if (normalizedValue.includes('linux') || normalizedValue.includes('fedora')) { - return 'Linux'; - } if (normalizedValue.includes('android')) { return 'Android'; } @@ -174,8 +171,7 @@ function toOSPicklistValue(value: string | undefined): string | undefined { if (normalizedValue.includes('mac')) { return 'macOs'; } - console.warn('Unexpected OS:', value); - return value; + return 'Linux'; } function encodeFormData(field: string, value?: string) {