@adtrackify/at-service-common 3.19.19 → 3.19.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +349 -2
- package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
- package/dist/cjs/clients/generic/dynamodb-client.js +10 -4
- package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service.js +12 -10
- package/dist/cjs/services/db/identity-cache-dynamodb-service.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +349 -2
- package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
- package/dist/esm/clients/generic/dynamodb-client.js +7 -1
- package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service.js +12 -10
- package/dist/esm/services/db/identity-cache-dynamodb-service.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamodb-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/dynamodb-client.ts"],"names":[],"mappings":";;;AAcA,8DAAuE;AACvE,wDAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"dynamodb-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/dynamodb-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -153,16 +153,18 @@ class IdentityCacheDynamoDbService {
|
|
|
153
153
|
identityId: response.identityId,
|
|
154
154
|
gsi1pk: response.identityId,
|
|
155
155
|
});
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
156
|
+
const emails = response.traits?.emails ?? [];
|
|
157
|
+
for (const email of emails) {
|
|
158
|
+
if (email) {
|
|
159
|
+
const pointerRecord = {
|
|
160
|
+
pk: (0, at_tracking_event_types_1.buildEmailPk)(pixelId, email),
|
|
161
|
+
updatedAt: now,
|
|
162
|
+
pixelId,
|
|
163
|
+
identityId: response.identityId,
|
|
164
|
+
gsi1pk: response.identityId,
|
|
165
|
+
};
|
|
166
|
+
items.push(pointerRecord);
|
|
167
|
+
}
|
|
166
168
|
}
|
|
167
169
|
await index_js_1.DynamoDbClient.safeBatchWrite(TABLE_NAME, items);
|
|
168
170
|
index_js_2.Logger.debug('updated identity cache', { pixelId, identityId: response.identityId, itemCount: items.length });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-cache-dynamodb-service.js","sourceRoot":"","sources":["../../../../src/services/db/identity-cache-dynamodb-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"identity-cache-dynamodb-service.js","sourceRoot":"","sources":["../../../../src/services/db/identity-cache-dynamodb-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -429,13 +429,13 @@ describe('IdentityCacheDynamoDbService', () => {
|
|
|
429
429
|
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
430
430
|
expect(mockedDynamoDbClient.safeBatchWrite).toHaveBeenCalledTimes(1);
|
|
431
431
|
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
432
|
-
expect(writtenItems).toHaveLength(
|
|
432
|
+
expect(writtenItems).toHaveLength(3);
|
|
433
433
|
const pks = writtenItems.map((item) => item.pk);
|
|
434
434
|
expect(pks).toContain(`identity#${pixelId}#identity456`);
|
|
435
435
|
expect(pks).toContain(`email#${pixelId}#test@email.com`);
|
|
436
|
+
expect(pks).toContain(`email#${pixelId}#other@email.com`);
|
|
436
437
|
expect(pks).not.toContain(`user_id#${pixelId}#user1`);
|
|
437
438
|
expect(pks).not.toContain(`user_id#${pixelId}#user2`);
|
|
438
|
-
expect(pks).not.toContain(`email#${pixelId}#other@email.com`);
|
|
439
439
|
const identityItem = writtenItems.find((item) => item.pk.startsWith('identity#'));
|
|
440
440
|
expect(identityItem).toBeDefined();
|
|
441
441
|
expect(identityItem.response).toBeDefined();
|
|
@@ -788,5 +788,352 @@ describe('IdentityCacheDynamoDbService', () => {
|
|
|
788
788
|
expect(result.isCacheStale).toBe(false);
|
|
789
789
|
});
|
|
790
790
|
});
|
|
791
|
+
describe('multiple emails pointer writes', () => {
|
|
792
|
+
const pixelId = 'pixel123';
|
|
793
|
+
it('should write ALL emails as pointer records (not just first)', async () => {
|
|
794
|
+
const identity = {
|
|
795
|
+
identityId: 'identity456',
|
|
796
|
+
traits: {
|
|
797
|
+
emails: ['first@email.com', 'second@email.com', 'third@email.com', 'fourth@email.com'],
|
|
798
|
+
},
|
|
799
|
+
};
|
|
800
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
801
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
802
|
+
expect(writtenItems).toHaveLength(5);
|
|
803
|
+
const emailPks = writtenItems
|
|
804
|
+
.filter((item) => item.pk.startsWith('email#'))
|
|
805
|
+
.map((item) => item.pk);
|
|
806
|
+
expect(emailPks).toContain(`email#${pixelId}#first@email.com`);
|
|
807
|
+
expect(emailPks).toContain(`email#${pixelId}#second@email.com`);
|
|
808
|
+
expect(emailPks).toContain(`email#${pixelId}#third@email.com`);
|
|
809
|
+
expect(emailPks).toContain(`email#${pixelId}#fourth@email.com`);
|
|
810
|
+
});
|
|
811
|
+
it('should skip null/undefined emails in array', async () => {
|
|
812
|
+
const identity = {
|
|
813
|
+
identityId: 'identity456',
|
|
814
|
+
traits: {
|
|
815
|
+
emails: ['valid@email.com', null, undefined, '', 'another@email.com'],
|
|
816
|
+
},
|
|
817
|
+
};
|
|
818
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
819
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
820
|
+
const emailItems = writtenItems.filter((item) => item.pk.startsWith('email#'));
|
|
821
|
+
expect(emailItems).toHaveLength(2);
|
|
822
|
+
expect(emailItems.map((e) => e.pk)).toContain(`email#${pixelId}#valid@email.com`);
|
|
823
|
+
expect(emailItems.map((e) => e.pk)).toContain(`email#${pixelId}#another@email.com`);
|
|
824
|
+
});
|
|
825
|
+
it('should handle empty emails array', async () => {
|
|
826
|
+
const identity = {
|
|
827
|
+
identityId: 'identity456',
|
|
828
|
+
traits: { emails: [] },
|
|
829
|
+
};
|
|
830
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
831
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
832
|
+
expect(writtenItems).toHaveLength(1);
|
|
833
|
+
expect(writtenItems[0].pk).toBe(`identity#${pixelId}#identity456`);
|
|
834
|
+
});
|
|
835
|
+
it('should handle email normalization (lowercase)', async () => {
|
|
836
|
+
const identity = {
|
|
837
|
+
identityId: 'identity456',
|
|
838
|
+
traits: {
|
|
839
|
+
emails: ['UPPERCASE@EMAIL.COM', 'MixedCase@Email.Com'],
|
|
840
|
+
},
|
|
841
|
+
};
|
|
842
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
843
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
844
|
+
const emailPks = writtenItems
|
|
845
|
+
.filter((item) => item.pk.startsWith('email#'))
|
|
846
|
+
.map((item) => item.pk);
|
|
847
|
+
expect(emailPks).toContain(`email#${pixelId}#uppercase@email.com`);
|
|
848
|
+
expect(emailPks).toContain(`email#${pixelId}#mixedcase@email.com`);
|
|
849
|
+
});
|
|
850
|
+
});
|
|
851
|
+
describe('null/undefined traits edge cases', () => {
|
|
852
|
+
const pixelId = 'pixel123';
|
|
853
|
+
it('should handle null traits object', async () => {
|
|
854
|
+
const identity = {
|
|
855
|
+
identityId: 'identity456',
|
|
856
|
+
traits: null,
|
|
857
|
+
};
|
|
858
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
859
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
860
|
+
expect(writtenItems).toHaveLength(1);
|
|
861
|
+
});
|
|
862
|
+
it('should handle undefined traits object', async () => {
|
|
863
|
+
const identity = {
|
|
864
|
+
identityId: 'identity456',
|
|
865
|
+
traits: undefined,
|
|
866
|
+
};
|
|
867
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
868
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
869
|
+
expect(writtenItems).toHaveLength(1);
|
|
870
|
+
});
|
|
871
|
+
it('should return cache miss for identity with null traits in lookup', async () => {
|
|
872
|
+
const result = await IdentityCacheDynamoDbService.getIdentityFromCache(pixelId, {
|
|
873
|
+
traits: null,
|
|
874
|
+
});
|
|
875
|
+
expect(result.resolvedIdentity).toBeUndefined();
|
|
876
|
+
expect(result.isCacheStale).toBe(true);
|
|
877
|
+
expect(mockedDynamoDbClient.safeGet).not.toHaveBeenCalled();
|
|
878
|
+
});
|
|
879
|
+
it('should handle identity with undefined emails in traits', async () => {
|
|
880
|
+
const result = await IdentityCacheDynamoDbService.getIdentityFromCache(pixelId, {
|
|
881
|
+
traits: { userIds: ['user123'] },
|
|
882
|
+
});
|
|
883
|
+
expect(result.resolvedIdentity).toBeUndefined();
|
|
884
|
+
expect(result.isCacheStale).toBe(true);
|
|
885
|
+
});
|
|
886
|
+
});
|
|
887
|
+
describe('backward compatibility (old full-blob format)', () => {
|
|
888
|
+
const pixelId = 'pixel123';
|
|
889
|
+
it('should read old format email record with full response blob', async () => {
|
|
890
|
+
const oldFormatEmailRecord = {
|
|
891
|
+
pk: `email#${pixelId}#test@email.com`,
|
|
892
|
+
pixelId,
|
|
893
|
+
identityId: 'discovered-id',
|
|
894
|
+
gsi1pk: 'discovered-id',
|
|
895
|
+
response: {
|
|
896
|
+
identityId: 'discovered-id',
|
|
897
|
+
traits: { emails: ['test@email.com', 'other@email.com'] },
|
|
898
|
+
},
|
|
899
|
+
updatedAt: new Date().toISOString(),
|
|
900
|
+
};
|
|
901
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(oldFormatEmailRecord);
|
|
902
|
+
const result = await IdentityCacheDynamoDbService.getIdentityFromCache(pixelId, {
|
|
903
|
+
traits: { emails: ['test@email.com'] },
|
|
904
|
+
});
|
|
905
|
+
expect(result.resolvedIdentity).toBeDefined();
|
|
906
|
+
expect(result.resolvedIdentity?.identityId).toBe('discovered-id');
|
|
907
|
+
expect(result.isCacheStale).toBe(true);
|
|
908
|
+
});
|
|
909
|
+
it('should read new format pointer record (no response blob)', async () => {
|
|
910
|
+
const newFormatPointerRecord = {
|
|
911
|
+
pk: `email#${pixelId}#test@email.com`,
|
|
912
|
+
pixelId,
|
|
913
|
+
identityId: 'discovered-id',
|
|
914
|
+
gsi1pk: 'discovered-id',
|
|
915
|
+
updatedAt: new Date().toISOString(),
|
|
916
|
+
};
|
|
917
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(newFormatPointerRecord);
|
|
918
|
+
const result = await IdentityCacheDynamoDbService.getIdentityFromCache(pixelId, {
|
|
919
|
+
traits: { emails: ['test@email.com'] },
|
|
920
|
+
});
|
|
921
|
+
expect(result.resolvedIdentity).toBeDefined();
|
|
922
|
+
expect(result.resolvedIdentity?.identityId).toBe('discovered-id');
|
|
923
|
+
expect(result.isCacheStale).toBe(true);
|
|
924
|
+
});
|
|
925
|
+
it('should trigger Neptune resolution after finding pointer record', async () => {
|
|
926
|
+
const lambdaArn = 'arn:aws:lambda:us-east-1:123456789:function:identity-private';
|
|
927
|
+
const pointerRecord = {
|
|
928
|
+
pk: `email#${pixelId}#test@email.com`,
|
|
929
|
+
pixelId,
|
|
930
|
+
identityId: 'discovered-id',
|
|
931
|
+
gsi1pk: 'discovered-id',
|
|
932
|
+
updatedAt: new Date().toISOString(),
|
|
933
|
+
};
|
|
934
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(pointerRecord);
|
|
935
|
+
mockInvokeFunction.mockResolvedValueOnce({
|
|
936
|
+
statusCode: 200,
|
|
937
|
+
body: JSON.stringify({
|
|
938
|
+
identity: {
|
|
939
|
+
identityId: 'discovered-id',
|
|
940
|
+
traits: { emails: ['test@email.com', 'resolved@email.com'] },
|
|
941
|
+
},
|
|
942
|
+
}),
|
|
943
|
+
});
|
|
944
|
+
const result = await IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, { traits: { emails: ['test@email.com'] } }, lambdaArn);
|
|
945
|
+
expect(mockInvokeFunction).toHaveBeenCalledWith(lambdaArn, expect.objectContaining({
|
|
946
|
+
pixelId,
|
|
947
|
+
context: {
|
|
948
|
+
identity: expect.objectContaining({
|
|
949
|
+
identityId: 'discovered-id',
|
|
950
|
+
}),
|
|
951
|
+
},
|
|
952
|
+
}));
|
|
953
|
+
expect(result?.identityId).toBe('discovered-id');
|
|
954
|
+
});
|
|
955
|
+
});
|
|
956
|
+
describe('deleteIdentityCache with multiple email pointers', () => {
|
|
957
|
+
const pixelId = 'pixel123';
|
|
958
|
+
it('should delete all email pointers from both incoming and resolved identities', async () => {
|
|
959
|
+
mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([
|
|
960
|
+
{ pk: `identity#${pixelId}#identity456`, pixelId },
|
|
961
|
+
]);
|
|
962
|
+
mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
|
|
963
|
+
const incomingIdentity = {
|
|
964
|
+
identityId: 'identity456',
|
|
965
|
+
traits: { emails: ['incoming1@email.com', 'incoming2@email.com'] },
|
|
966
|
+
};
|
|
967
|
+
const resolvedIdentity = {
|
|
968
|
+
identityId: 'identity456',
|
|
969
|
+
traits: { emails: ['resolved1@email.com', 'resolved2@email.com', 'resolved3@email.com'] },
|
|
970
|
+
};
|
|
971
|
+
await IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, incomingIdentity, resolvedIdentity);
|
|
972
|
+
expect(mockedDynamoDbClient.batchWrite).toHaveBeenCalled();
|
|
973
|
+
const batchWriteCall = mockedDynamoDbClient.batchWrite.mock.calls[0][0];
|
|
974
|
+
const deleteRequests = batchWriteCall.RequestItems[Object.keys(batchWriteCall.RequestItems)[0]];
|
|
975
|
+
const deletedPks = deleteRequests.map((req) => req.DeleteRequest.Key.pk);
|
|
976
|
+
expect(deletedPks).toContain(`identity#${pixelId}#identity456`);
|
|
977
|
+
expect(deletedPks).toContain(`email#${pixelId}#incoming1@email.com`);
|
|
978
|
+
expect(deletedPks).toContain(`email#${pixelId}#incoming2@email.com`);
|
|
979
|
+
expect(deletedPks).toContain(`email#${pixelId}#resolved1@email.com`);
|
|
980
|
+
expect(deletedPks).toContain(`email#${pixelId}#resolved2@email.com`);
|
|
981
|
+
expect(deletedPks).toContain(`email#${pixelId}#resolved3@email.com`);
|
|
982
|
+
});
|
|
983
|
+
it('should handle empty emails in delete', async () => {
|
|
984
|
+
mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([
|
|
985
|
+
{ pk: `identity#${pixelId}#identity456`, pixelId },
|
|
986
|
+
]);
|
|
987
|
+
mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
|
|
988
|
+
await IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'identity456', traits: { emails: [] } }, { identityId: 'identity456' });
|
|
989
|
+
expect(mockedDynamoDbClient.batchWrite).toHaveBeenCalled();
|
|
990
|
+
});
|
|
991
|
+
it('should handle missing traits in delete', async () => {
|
|
992
|
+
mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([
|
|
993
|
+
{ pk: `identity#${pixelId}#identity456`, pixelId },
|
|
994
|
+
]);
|
|
995
|
+
mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
|
|
996
|
+
await IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'identity456' }, { identityId: 'identity456' });
|
|
997
|
+
expect(mockedDynamoDbClient.batchWrite).toHaveBeenCalled();
|
|
998
|
+
});
|
|
999
|
+
it('should not delete items from other pixelIds', async () => {
|
|
1000
|
+
const otherPixelId = 'other-pixel';
|
|
1001
|
+
mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([
|
|
1002
|
+
{ pk: `identity#${pixelId}#identity456`, pixelId },
|
|
1003
|
+
{ pk: `identity#${otherPixelId}#identity456`, pixelId: otherPixelId },
|
|
1004
|
+
]);
|
|
1005
|
+
mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
|
|
1006
|
+
await IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'identity456' }, { identityId: 'identity456' });
|
|
1007
|
+
const batchWriteCall = mockedDynamoDbClient.batchWrite.mock.calls[0][0];
|
|
1008
|
+
const deleteRequests = batchWriteCall.RequestItems[Object.keys(batchWriteCall.RequestItems)[0]];
|
|
1009
|
+
const deletedPks = deleteRequests.map((req) => req.DeleteRequest.Key.pk);
|
|
1010
|
+
expect(deletedPks).toContain(`identity#${pixelId}#identity456`);
|
|
1011
|
+
expect(deletedPks).not.toContain(`identity#${otherPixelId}#identity456`);
|
|
1012
|
+
});
|
|
1013
|
+
});
|
|
1014
|
+
describe('GSI1 query for reverse lookups', () => {
|
|
1015
|
+
const pixelId = 'pixel123';
|
|
1016
|
+
it('should find all records by identityId via GSI1', async () => {
|
|
1017
|
+
const identityId = 'identity456';
|
|
1018
|
+
const mockResults = [
|
|
1019
|
+
{ pk: `identity#${pixelId}#${identityId}`, pixelId, identityId },
|
|
1020
|
+
{ pk: `email#${pixelId}#email1@test.com`, pixelId, identityId },
|
|
1021
|
+
{ pk: `email#${pixelId}#email2@test.com`, pixelId, identityId },
|
|
1022
|
+
];
|
|
1023
|
+
mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue(mockResults);
|
|
1024
|
+
mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
|
|
1025
|
+
await IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId }, { identityId });
|
|
1026
|
+
expect(mockedDynamoDbClient.safeQueryByGSI).toHaveBeenCalledWith(expect.any(String), expect.any(String), 'gsi1pk', identityId);
|
|
1027
|
+
});
|
|
1028
|
+
it('should handle GSI1 query returning empty results', async () => {
|
|
1029
|
+
mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([]);
|
|
1030
|
+
await IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'unknown-id' }, { identityId: 'unknown-id' });
|
|
1031
|
+
expect(mockedDynamoDbClient.batchWrite).not.toHaveBeenCalled();
|
|
1032
|
+
});
|
|
1033
|
+
it('should handle GSI1 query error gracefully (fail-open)', async () => {
|
|
1034
|
+
mockedDynamoDbClient.safeQueryByGSI.mockRejectedValueOnce(new Error('GSI query failed'));
|
|
1035
|
+
await expect(IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'identity456' }, { identityId: 'identity456' })).resolves.toBeUndefined();
|
|
1036
|
+
});
|
|
1037
|
+
});
|
|
1038
|
+
describe('email pointer lookups', () => {
|
|
1039
|
+
const pixelId = 'pixel123';
|
|
1040
|
+
it('should only lookup first email (optimization)', async () => {
|
|
1041
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
|
|
1042
|
+
await IdentityCacheDynamoDbService.getIdentityFromCache(pixelId, {
|
|
1043
|
+
traits: { emails: ['first@email.com', 'second@email.com', 'third@email.com'] },
|
|
1044
|
+
});
|
|
1045
|
+
expect(mockedDynamoDbClient.safeGet).toHaveBeenCalledTimes(1);
|
|
1046
|
+
expect(mockedDynamoDbClient.safeGet).toHaveBeenCalledWith(expect.any(String), 'pk', `email#${pixelId}#first@email.com`);
|
|
1047
|
+
});
|
|
1048
|
+
it('should handle whitespace in email during lookup', async () => {
|
|
1049
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
|
|
1050
|
+
await IdentityCacheDynamoDbService.getIdentityFromCache(pixelId, {
|
|
1051
|
+
traits: { emails: [' test@email.com '] },
|
|
1052
|
+
});
|
|
1053
|
+
expect(mockedDynamoDbClient.safeGet).toHaveBeenCalled();
|
|
1054
|
+
});
|
|
1055
|
+
});
|
|
1056
|
+
describe('fail-open behavior comprehensive', () => {
|
|
1057
|
+
const pixelId = 'pixel123';
|
|
1058
|
+
const lambdaArn = 'arn:aws:lambda:us-east-1:123456789:function:identity-private';
|
|
1059
|
+
it('should return incoming identity when Neptune throws (fail-open fallback)', async () => {
|
|
1060
|
+
const incomingIdentity = {
|
|
1061
|
+
identityId: 'identity456',
|
|
1062
|
+
traits: { emails: ['test@email.com'] },
|
|
1063
|
+
};
|
|
1064
|
+
mockedDynamoDbClient.safeGet.mockRejectedValueOnce(new Error('DynamoDB down'));
|
|
1065
|
+
mockInvokeFunction.mockRejectedValueOnce(new Error('Lambda down'));
|
|
1066
|
+
const result = await IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
|
|
1067
|
+
expect(result).toEqual(incomingIdentity);
|
|
1068
|
+
});
|
|
1069
|
+
it('should continue when cache write fails after Neptune success', async () => {
|
|
1070
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
|
|
1071
|
+
mockInvokeFunction.mockResolvedValueOnce({
|
|
1072
|
+
statusCode: 200,
|
|
1073
|
+
body: JSON.stringify({
|
|
1074
|
+
identity: { identityId: 'resolved-id', traits: { emails: ['test@email.com'] } },
|
|
1075
|
+
}),
|
|
1076
|
+
});
|
|
1077
|
+
mockedDynamoDbClient.safeBatchWrite.mockRejectedValueOnce(new Error('Write failed'));
|
|
1078
|
+
const result = await IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, { traits: { emails: ['test@email.com'] } }, lambdaArn);
|
|
1079
|
+
expect(result?.identityId).toBe('resolved-id');
|
|
1080
|
+
});
|
|
1081
|
+
it('should return incoming identity when Neptune returns non-200', async () => {
|
|
1082
|
+
const incomingIdentity = {
|
|
1083
|
+
identityId: 'incoming-id',
|
|
1084
|
+
traits: { emails: ['test@email.com'] },
|
|
1085
|
+
};
|
|
1086
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
|
|
1087
|
+
mockInvokeFunction.mockResolvedValueOnce({
|
|
1088
|
+
statusCode: 500,
|
|
1089
|
+
body: 'Internal Server Error',
|
|
1090
|
+
});
|
|
1091
|
+
const result = await IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
|
|
1092
|
+
expect(result).toEqual(incomingIdentity);
|
|
1093
|
+
});
|
|
1094
|
+
it('should return incoming identity when Neptune returns malformed JSON (fail-open)', async () => {
|
|
1095
|
+
const incomingIdentity = {
|
|
1096
|
+
identityId: 'test-id',
|
|
1097
|
+
traits: { emails: ['test@email.com'] },
|
|
1098
|
+
};
|
|
1099
|
+
mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
|
|
1100
|
+
mockInvokeFunction.mockResolvedValueOnce({
|
|
1101
|
+
statusCode: 200,
|
|
1102
|
+
body: 'not valid json',
|
|
1103
|
+
});
|
|
1104
|
+
const result = await IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
|
|
1105
|
+
expect(result).toEqual(incomingIdentity);
|
|
1106
|
+
});
|
|
1107
|
+
it('should return undefined only when both inputs are invalid', async () => {
|
|
1108
|
+
const result = await IdentityCacheDynamoDbService.getIdentityWithCaching(null, null, lambdaArn);
|
|
1109
|
+
expect(result).toBeUndefined();
|
|
1110
|
+
});
|
|
1111
|
+
});
|
|
1112
|
+
describe('gsi1pk attribute on all records', () => {
|
|
1113
|
+
const pixelId = 'pixel123';
|
|
1114
|
+
it('should include gsi1pk on identity record', async () => {
|
|
1115
|
+
const identity = {
|
|
1116
|
+
identityId: 'identity456',
|
|
1117
|
+
traits: { emails: ['test@email.com'] },
|
|
1118
|
+
};
|
|
1119
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
1120
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
1121
|
+
const identityItem = writtenItems.find((item) => item.pk.startsWith('identity#'));
|
|
1122
|
+
expect(identityItem).toBeDefined();
|
|
1123
|
+
expect(identityItem.gsi1pk).toBe('identity456');
|
|
1124
|
+
});
|
|
1125
|
+
it('should include gsi1pk on all email pointer records', async () => {
|
|
1126
|
+
const identity = {
|
|
1127
|
+
identityId: 'identity456',
|
|
1128
|
+
traits: { emails: ['email1@test.com', 'email2@test.com'] },
|
|
1129
|
+
};
|
|
1130
|
+
await IdentityCacheDynamoDbService.updateIdentityCache(pixelId, identity);
|
|
1131
|
+
const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
|
|
1132
|
+
const emailItems = writtenItems.filter((item) => item.pk.startsWith('email#'));
|
|
1133
|
+
for (const emailItem of emailItems) {
|
|
1134
|
+
expect(emailItem.gsi1pk).toBe('identity456');
|
|
1135
|
+
}
|
|
1136
|
+
});
|
|
1137
|
+
});
|
|
791
1138
|
});
|
|
792
1139
|
//# sourceMappingURL=identity-cache-dynamodb-service.spec.js.map
|