diff --git a/CHANGELOG.md b/CHANGELOG.md index bc9a32f4cd..59f270b984 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [1.52.2](https://github.com/rudderlabs/rudder-transformer/compare/v1.52.1...v1.52.2) (2023-12-15) + + +### Bug Fixes + +* braze dedup for adding non-billable attributes ([#2921](https://github.com/rudderlabs/rudder-transformer/issues/2921)) ([4196b1b](https://github.com/rudderlabs/rudder-transformer/commit/4196b1bfec2fc3f7c2c5d0b305853b39033e894c)) +* inclusion of right status-code & error details in proxy response ([#2916](https://github.com/rudderlabs/rudder-transformer/issues/2916)) ([5d295c2](https://github.com/rudderlabs/rudder-transformer/commit/5d295c232ff91bfb8564d4d6fcce49dc1e07958b)) +* supportTransformerProxyV1 set to false ([#2920](https://github.com/rudderlabs/rudder-transformer/issues/2920)) ([90ee7ad](https://github.com/rudderlabs/rudder-transformer/commit/90ee7ad13921830c920ee60361adb0e0c5dc1d43)) + ### [1.52.1](https://github.com/rudderlabs/rudder-transformer/compare/v1.52.0...v1.52.1) (2023-12-14) diff --git a/package-lock.json b/package-lock.json index 8b14350448..b34388460a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rudder-transformer", - "version": "1.52.1", + "version": "1.52.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rudder-transformer", - "version": "1.52.1", + "version": "1.52.2", "license": "ISC", "dependencies": { "@amplitude/ua-parser-js": "^0.7.24", diff --git a/package.json b/package.json index 6e5ce2f9a6..0b9877ffd3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rudder-transformer", - "version": "1.52.1", + "version": "1.52.2", "description": "", "homepage": "https://github.com/rudderlabs/rudder-transformer#readme", "bugs": { diff --git a/src/controllers/delivery.ts b/src/controllers/delivery.ts index 0cc5e12d78..eba24ccf58 100644 --- a/src/controllers/delivery.ts +++ b/src/controllers/delivery.ts @@ -84,7 +84,7 @@ export class DeliveryController { ); } ctx.body = { output: deliveryResponse }; - ControllerUtility.deliveryPostProcess(ctx); + ControllerUtility.deliveryPostProcess(ctx, deliveryResponse.status); logger.debug('Native(Delivery):: Response from transformer::', JSON.stringify(ctx.body)); return ctx; diff --git a/src/features.json b/src/features.json index e0745c2246..a3d29bb325 100644 --- a/src/features.json +++ b/src/features.json @@ -66,5 +66,5 @@ "REDDIT": true }, "supportSourceTransformV1": true, - "supportTransformerProxyV1": true + "supportTransformerProxyV1": false } diff --git a/src/services/destination/nativeIntegration.ts b/src/services/destination/nativeIntegration.ts index c3b0237cdc..6b680e3f4a 100644 --- a/src/services/destination/nativeIntegration.ts +++ b/src/services/destination/nativeIntegration.ts @@ -218,6 +218,9 @@ export class NativeIntegrationDestinationService implements DestinationService { ); responseProxy = { response: jobStates, + status: v0Response.status, + message: v0Response.message, + authErrorCategory: v0Response.authErrorCategory, } as DeliveriesResponse; } return responseProxy; diff --git a/src/services/destination/postTransformation.ts b/src/services/destination/postTransformation.ts index 3cec459f8b..eef4152b2b 100644 --- a/src/services/destination/postTransformation.ts +++ b/src/services/destination/postTransformation.ts @@ -188,6 +188,7 @@ export class DestinationPostTransformationService { statTags: errObj.statTags, authErrorCategory: errObj.authErrorCategory, message: errObj.message.toString(), + status: errObj.status, } as DeliveriesResponse; ErrorReportingService.reportError(error, metaTo.errorContext, resp); diff --git a/src/v0/destinations/braze/braze.util.test.js b/src/v0/destinations/braze/braze.util.test.js index 9859e16152..9e82a235f1 100644 --- a/src/v0/destinations/braze/braze.util.test.js +++ b/src/v0/destinations/braze/braze.util.test.js @@ -660,9 +660,58 @@ describe('dedup utility tests', () => { color: 'green', age: 30, gender: 'male', + country: 'US', + language: 'en', + email_subscribe: true, + push_subscribe: false, + subscription_groups: ['group1', 'group2'], + }; + const storeData = { + external_id: '123', + country: 'US', + language: 'en', + email_subscribe: true, + push_subscribe: false, + subscription_groups: ['group1', 'group2'], + custom_attributes: { + color: 'blue', + age: 25, + }, + }; + store.set('123', storeData); + const result = BrazeDedupUtility.deduplicate(userData, store); + expect(store.size).toBe(1); + expect(result).toEqual({ + external_id: '123', + color: 'green', + age: 30, + gender: 'male', + country: 'US', + language: 'en', + email_subscribe: true, + push_subscribe: false, + subscription_groups: ['group1', 'group2'], + }); + }); + + test('deduplicates user data correctly 2', () => { + const userData = { + external_id: '123', + color: 'green', + age: 30, + gender: 'male', + language: 'en', + email_subscribe: true, + push_subscribe: false, + subscription_groups: ['group1', 'group2'], }; const storeData = { external_id: '123', + country: 'US', + language: 'en', + email_subscribe: true, + push_subscribe: false, + subscription_groups: ['group1', 'group2'], custom_attributes: { color: 'blue', age: 25, @@ -676,6 +725,10 @@ describe('dedup utility tests', () => { color: 'green', age: 30, gender: 'male', + language: 'en', + email_subscribe: true, + push_subscribe: false, + subscription_groups: ['group1', 'group2'], }); }); diff --git a/src/v0/destinations/braze/util.js b/src/v0/destinations/braze/util.js index 3b0855b338..40b9a7eada 100644 --- a/src/v0/destinations/braze/util.js +++ b/src/v0/destinations/braze/util.js @@ -301,6 +301,14 @@ const BrazeDedupUtility = { }; const identifier = external_id || user_alias?.alias_name; store.set(identifier, { ...storedUserData, ...deduplicatedUserData }); + + // add non billable attributes back to the deduplicated user object + BRAZE_NON_BILLABLE_ATTRIBUTES.forEach((key) => { + if (isDefinedAndNotNull(userData[key])) { + deduplicatedUserData[key] = userData[key]; + } + }); + return removeUndefinedValues(deduplicatedUserData); }, }; diff --git a/test/integrations/destinations/braze/dataDelivery/data.ts b/test/integrations/destinations/braze/dataDelivery/data.ts index 49a6d607e5..8162e75720 100644 --- a/test/integrations/destinations/braze/dataDelivery/data.ts +++ b/test/integrations/destinations/braze/dataDelivery/data.ts @@ -544,6 +544,7 @@ export const data = [ status: 200, body: { output: { + message: 'Request for braze Processed Successfully', response: [ { error: '{"aliases_processed":1,"message":"success"}', @@ -563,6 +564,7 @@ export const data = [ }, }, ], + status: 201, }, }, }, @@ -627,9 +629,10 @@ export const data = [ }, output: { response: { - status: 200, + status: 401, body: { output: { + status: 401, response: [ { error: '{"code":400,"message":"Bad Req","status":"Fail Case"}', @@ -767,9 +770,10 @@ export const data = [ }, output: { response: { - status: 200, + status: 401, body: { output: { + status: 401, response: [ { error: