From e57841396ad666d716e195fbd4e9b74a63bf5191 Mon Sep 17 00:00:00 2001 From: Dilip Kola <33080863+koladilip@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:50:51 +0530 Subject: [PATCH] fix: heap userId extraction (#3801) --- .../v2/destinations/heap/procWorkflow.yaml | 4 +- .../destinations/heap/processor/data.ts | 118 ++++++++++++++++++ 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/src/cdk/v2/destinations/heap/procWorkflow.yaml b/src/cdk/v2/destinations/heap/procWorkflow.yaml index ac12e7e02a..6e038bc66d 100644 --- a/src/cdk/v2/destinations/heap/procWorkflow.yaml +++ b/src/cdk/v2/destinations/heap/procWorkflow.yaml @@ -22,7 +22,7 @@ steps: $.assert(.message.traits ?? .message.context.traits, "traits are required"); $.context.endpoint = 'https://heapanalytics.com/api/add_user_properties'; $.context.payload = .message.({ - identity: {{{{$.getGenericPaths("userId")}}}}, + identity: {{{{$.getGenericPaths("userId", "||")}}}}, properties: $.flattenJson(.traits ?? .context.traits){~["idempotencyKey"]}, app_id: ^.destination.Config.appId }) @@ -32,7 +32,7 @@ steps: $.assert(.message.event, "event is required"); $.context.endpoint = 'https://heapanalytics.com/api/track'; $.context.payload = .message.({ - identity: {{{{$.getGenericPaths("userId")}}}}, + identity: {{{{$.getGenericPaths("userId", "||")}}}}, properties: $.flattenJson(.properties){~["idempotencyKey"]}, app_id: ^.destination.Config.appId, event: .event, diff --git a/test/integrations/destinations/heap/processor/data.ts b/test/integrations/destinations/heap/processor/data.ts index f503134148..cb1aeb7563 100644 --- a/test/integrations/destinations/heap/processor/data.ts +++ b/test/integrations/destinations/heap/processor/data.ts @@ -117,6 +117,124 @@ export const data = [ }, }, }, + { + name: 'heap', + description: 'Blank user id', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + Config: { + appId: '', + }, + DestinationDefinition: { + Config: { + cdkV2Enabled: true, + }, + DisplayName: 'Heap.io', + ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV', + Name: 'HEAP', + }, + Enabled: true, + ID: '1WTcDSEOE437e4ePH10BJNELXmE', + Name: 'heap test', + Transformations: [], + }, + metadata: { + destinationId: 'destId', + workspaceId: 'wspId', + }, + message: { + userId: '', + anonymousId: 'sampath', + channel: 'web', + context: { + app: { + build: '1.0.0', + name: 'RudderLabs JavaScript SDK', + namespace: 'com.rudderlabs.javascript', + version: '1.0.0', + }, + ip: '0.0.0.0', + library: { + name: 'RudderLabs JavaScript SDK', + version: '1.0.0', + }, + locale: 'en-US', + os: { + name: '', + version: '', + }, + screen: { + density: 2, + }, + userAgent: + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', + }, + integrations: { + All: true, + }, + traits: { + anonymousId: 'sampath', + email: 'sampath@gmail.com', + }, + messageId: 'fca2e71a-5d30-48e1-ba45-761c16e3820f', + originalTimestamp: '2020-01-16T13:21:59.076Z', + receivedAt: '2020-01-16T18:52:03.871+05:30', + request_ip: '[::1]:62312', + sentAt: '2020-01-16T13:22:03.85Z', + timestamp: '2020-01-16T18:51:59.097+05:30', + type: 'identify', + }, + }, + ], + }, + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://heapanalytics.com/api/add_user_properties', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + params: {}, + body: { + JSON: { + identity: 'sampath', + properties: { + anonymousId: 'sampath', + email: 'sampath@gmail.com', + }, + app_id: '', + }, + XML: {}, + JSON_ARRAY: {}, + FORM: {}, + }, + files: {}, + userId: 'sampath', + }, + statusCode: 200, + metadata: { + destinationId: 'destId', + workspaceId: 'wspId', + }, + }, + ], + }, + }, + }, { name: 'heap', description: 'Test 1',