@segment/action-destinations 3.442.0 → 3.443.0
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/destinations/aws-kinesis/__test__/index.test.d.ts +1 -0
- package/dist/destinations/aws-kinesis/__test__/index.test.js +63 -0
- package/dist/destinations/aws-kinesis/__test__/index.test.js.map +1 -0
- package/dist/destinations/aws-kinesis/__test__/utils.test.d.ts +1 -0
- package/dist/destinations/aws-kinesis/__test__/utils.test.js +49 -0
- package/dist/destinations/aws-kinesis/__test__/utils.test.js.map +1 -0
- package/dist/destinations/aws-kinesis/generated-types.d.ts +2 -0
- package/dist/destinations/aws-kinesis/index.js +24 -4
- package/dist/destinations/aws-kinesis/index.js.map +1 -1
- package/dist/destinations/aws-kinesis/utils.d.ts +1 -0
- package/dist/destinations/aws-kinesis/utils.js +9 -0
- package/dist/destinations/aws-kinesis/utils.js.map +1 -0
- package/dist/destinations/cordial/cordial-client.d.ts +8 -8
- package/dist/destinations/dotdigital/api/dd-api.d.ts +4 -4
- package/dist/destinations/dotdigital/api/resources/dd-email-api.d.ts +1 -1
- package/dist/destinations/engage-messaging-twilio/sendMobilePush/PushSender.d.ts +1 -1
- package/dist/destinations/facebook-custom-audiences/fbca-operations.d.ts +2 -2
- package/dist/destinations/first-party-dv360/addToAudContactInfo/_tests_/index.test.d.ts +1 -1
- package/dist/destinations/first-party-dv360/addToAudMobileDeviceId/_tests_/index.test.d.ts +1 -1
- package/dist/destinations/first-party-dv360/removeFromAudContactInfo/_tests_/index.test.d.ts +1 -1
- package/dist/destinations/gameball/util.d.ts +1 -1
- package/dist/destinations/google-analytics-4/ga4-functions.d.ts +1 -1
- package/dist/destinations/google-campaign-manager-360/common-fields.js +8 -0
- package/dist/destinations/google-campaign-manager-360/common-fields.js.map +1 -1
- package/dist/destinations/google-campaign-manager-360/conversionAdjustmentUpload/generated-types.d.ts +1 -0
- package/dist/destinations/google-campaign-manager-360/conversionUpload/generated-types.d.ts +1 -0
- package/dist/destinations/google-campaign-manager-360/utils.d.ts +1 -1
- package/dist/destinations/google-sheets/postSheet/operations.d.ts +1 -1
- package/dist/destinations/google-sheets/postSheet2/operations2.d.ts +1 -1
- package/dist/destinations/hubspot/upsertObject/client.d.ts +8 -8
- package/dist/destinations/index.js +1 -0
- package/dist/destinations/index.js.map +1 -1
- package/dist/destinations/klaviyo/functions.d.ts +3 -3
- package/dist/destinations/launchdarkly-audiences/syncAudience/custom-audience-operations.d.ts +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/functions.d.ts +1 -1
- package/dist/destinations/liveramp-audiences/index.js +18 -1
- package/dist/destinations/liveramp-audiences/index.js.map +1 -1
- package/dist/destinations/salesforce/sf-properties.js +4 -4
- package/dist/destinations/stackadapt-audiences/forwardAudienceEvent/constants.js +0 -7
- package/dist/destinations/stackadapt-audiences/forwardAudienceEvent/constants.js.map +1 -1
- package/dist/destinations/taguchi/syncUserProfile/types.d.ts +1 -0
- package/dist/destinations/taguchi/syncUserProfile/utils.js +5 -2
- package/dist/destinations/taguchi/syncUserProfile/utils.js.map +1 -1
- package/dist/destinations/webhook-audiences/__test__/index.test.js +254 -34
- package/dist/destinations/webhook-audiences/__test__/index.test.js.map +1 -1
- package/dist/destinations/webhook-audiences/index.js +16 -8
- package/dist/destinations/webhook-audiences/index.js.map +1 -1
- package/dist/lib/AWS/__test__/index.test.d.ts +1 -0
- package/dist/lib/AWS/__test__/index.test.js +91 -0
- package/dist/lib/AWS/__test__/index.test.js.map +1 -0
- package/dist/lib/AWS/sts.d.ts +1 -0
- package/dist/lib/AWS/sts.js +33 -0
- package/dist/lib/AWS/sts.js.map +1 -1
- package/dist/lib/AWS/utils.d.ts +1 -0
- package/dist/lib/AWS/utils.js +5 -0
- package/dist/lib/AWS/utils.js.map +1 -0
- package/package.json +4 -4
|
@@ -125,7 +125,7 @@ exports.traits = {
|
|
|
125
125
|
label: 'Record Matchers',
|
|
126
126
|
description: `The fields used to find Salesforce records for updates. **This is required if the operation is Delete, Update or Upsert.**
|
|
127
127
|
|
|
128
|
-
Any field can function as a matcher, including Record ID, External IDs, standard fields and custom fields. On the left-hand side,
|
|
128
|
+
Any field can function as a matcher, including Record ID, External IDs, standard fields and custom fields. On the left-hand side, map the Segment field that contains the value. On the right-hand side, input the Salesforce field API name.
|
|
129
129
|
|
|
130
130
|
If multiple records are found, no changes will be made. **Please use fields that result in unique records.**
|
|
131
131
|
|
|
@@ -147,7 +147,7 @@ exports.traits = {
|
|
|
147
147
|
exports.customFields = {
|
|
148
148
|
label: 'Other Fields',
|
|
149
149
|
description: `
|
|
150
|
-
Additional fields to send to Salesforce. On the left-hand side,
|
|
150
|
+
Additional fields to send to Salesforce. On the left-hand side, map the Segment field that contains the value. On the right-hand side, input the Salesforce field API name.
|
|
151
151
|
|
|
152
152
|
This can include standard or custom fields. Custom fields must be predefined in your Salesforce account and the API field name should have __c appended.
|
|
153
153
|
|
|
@@ -170,7 +170,7 @@ exports.traits2 = {
|
|
|
170
170
|
label: 'Record Matchers',
|
|
171
171
|
description: `The fields used to find Salesforce records for updates. **This is required if the operation is Delete, Update or Upsert.**
|
|
172
172
|
|
|
173
|
-
Any field can function as a matcher, including Record ID, External IDs, standard fields and custom fields. On the left-hand side,
|
|
173
|
+
Any field can function as a matcher, including Record ID, External IDs, standard fields and custom fields. On the left-hand side, map the Segment field that contains the value. On the right-hand side, input the Salesforce field API name.
|
|
174
174
|
|
|
175
175
|
If multiple records are found, no changes will be made. **Please use fields that result in unique records.**
|
|
176
176
|
|
|
@@ -313,7 +313,7 @@ exports.bulkUpdateRecordId2 = {
|
|
|
313
313
|
exports.customFields2 = {
|
|
314
314
|
label: 'Other Fields',
|
|
315
315
|
description: `
|
|
316
|
-
Additional fields to send to Salesforce. On the left-hand side,
|
|
316
|
+
Additional fields to send to Salesforce. On the left-hand side, map the Segment field that contains the value. On the right-hand side, input the Salesforce field API name.
|
|
317
317
|
|
|
318
318
|
This can include standard or custom fields. Custom fields must be predefined in your Salesforce account and the API field name should have __c appended.
|
|
319
319
|
|
|
@@ -4,13 +4,6 @@ exports.MarketingStatus = exports.MAPPING_SCHEMA = exports.PROFILE_DEFAULT_FIELD
|
|
|
4
4
|
exports.EXTERNAL_PROVIDER = 'segment_io';
|
|
5
5
|
exports.GQL_ENDPOINT = 'https://api.stackadapt.com/graphql';
|
|
6
6
|
exports.PROFILE_DEFAULT_FIELDS = [
|
|
7
|
-
{
|
|
8
|
-
key: 'user_id',
|
|
9
|
-
label: 'User ID',
|
|
10
|
-
type: 'string',
|
|
11
|
-
description: 'The unique identifier for the user',
|
|
12
|
-
isPii: false
|
|
13
|
-
},
|
|
14
7
|
{
|
|
15
8
|
key: 'email',
|
|
16
9
|
label: 'Email',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/destinations/stackadapt-audiences/forwardAudienceEvent/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,YAAY,CAAA;AAEhC,QAAA,YAAY,GAAG,oCAAoC,CAAA;AAInD,QAAA,sBAAsB,GAAyB;IAC1D;QACE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/destinations/stackadapt-audiences/forwardAudienceEvent/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,YAAY,CAAA;AAEhC,QAAA,YAAY,GAAG,oCAAoC,CAAA;AAInD,QAAA,sBAAsB,GAAyB;IAC1D;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+BAA+B;QAC5C,KAAK,EAAE,IAAI;KACZ;IACD;QACE,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,IAAI;KACZ;IACD;QACE,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,IAAI;KACZ;IACD;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,KAAK,EAAE,IAAI;KACZ;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yBAAyB;QACtC,KAAK,EAAE,IAAI;KACZ;IACD;QACE,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,KAAK;KACb;IACD;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,KAAK;KACb;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yBAAyB;QACtC,KAAK,EAAE,KAAK;KACb;IACD;QACE,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6BAA6B;QAC1C,KAAK,EAAE,KAAK;KACb;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,KAAK;KACb;IACD;QACE,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,IAAI;KACZ;CACF,CAAA;AAEY,QAAA,cAAc,GAAG;IAC5B;QACE,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,aAAa;QAC7B,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,KAAK;KACb;IACD;QACE,WAAW,EAAE,cAAc;QAC3B,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,KAAK;KACb;CACF,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,UAAU;IAClB,aAAa,EAAE,eAAe;CACtB,CAAA"}
|
|
@@ -13,7 +13,9 @@ function validate(payloads) {
|
|
|
13
13
|
return payloads;
|
|
14
14
|
}
|
|
15
15
|
async function send(request, payloads, settings, isBatch) {
|
|
16
|
-
|
|
16
|
+
if (!isBatch) {
|
|
17
|
+
validate(payloads);
|
|
18
|
+
}
|
|
17
19
|
const json = payloads.map((payload) => buildJSON(payload, settings.organizationId));
|
|
18
20
|
const response = await request(`${settings.integrationURL}/subscriber`, {
|
|
19
21
|
method: 'POST',
|
|
@@ -47,7 +49,7 @@ async function send(request, payloads, settings, isBatch) {
|
|
|
47
49
|
return response;
|
|
48
50
|
}
|
|
49
51
|
function buildJSON(payload, organizationId) {
|
|
50
|
-
const { identifiers, traits: { title, firstname, lastname, dob, address, address2, address3, suburb, state, country, postcode, gender, ...customTraits } = {} } = payload;
|
|
52
|
+
const { identifiers, traits: { title, firstname, lastname, dob, address, address2, address3, suburb, state, country, postcode, phone, gender, ...customTraits } = {} } = payload;
|
|
51
53
|
const json = {
|
|
52
54
|
profile: {
|
|
53
55
|
organizationId: Number(organizationId),
|
|
@@ -63,6 +65,7 @@ function buildJSON(payload, organizationId) {
|
|
|
63
65
|
...(state && { state }),
|
|
64
66
|
...(country && { country }),
|
|
65
67
|
...(postcode && { postcode }),
|
|
68
|
+
...(phone && { phone }),
|
|
66
69
|
...(gender && { gender }),
|
|
67
70
|
...buildCustom(customTraits),
|
|
68
71
|
...buildLists(payload)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/destinations/taguchi/syncUserProfile/utils.ts"],"names":[],"mappings":";;AAKA,4BAQC;AAED,oBAsCC;AApDD,wDAAkH;AAIlH,SAAgB,QAAQ,CAAC,QAAmB;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,qCAAsB,CAAC,sCAAsC,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,OAAsB,EAAE,QAAmB,EAAE,QAAkB,EAAE,OAAgB;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/destinations/taguchi/syncUserProfile/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,43 +10,217 @@ const actions_core_1 = require("@segment/actions-core");
|
|
|
10
10
|
(0, webhook_test_1.baseWebhookTests)(index_1.default);
|
|
11
11
|
const testDestination = (0, actions_core_1.createTestIntegration)(index_1.default);
|
|
12
12
|
describe('Webhook Audience Tests', () => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
};
|
|
22
|
-
(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
13
|
+
describe('createAudience', () => {
|
|
14
|
+
it('should fail if no audience name is set', async () => {
|
|
15
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
16
|
+
await expect(testDestination.createAudience({
|
|
17
|
+
audienceName: '',
|
|
18
|
+
audienceSettings: {},
|
|
19
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
20
|
+
})).rejects.toThrowError(actions_core_1.IntegrationError);
|
|
21
|
+
});
|
|
22
|
+
it('should fail if no createAudienceUrl is set', async () => {
|
|
23
|
+
await expect(testDestination.createAudience({
|
|
24
|
+
audienceName: 'My Cool Audience',
|
|
25
|
+
audienceSettings: {},
|
|
26
|
+
settings: {}
|
|
27
|
+
})).rejects.toThrowError(actions_core_1.IntegrationError);
|
|
28
|
+
});
|
|
29
|
+
it('creates an audience', async () => {
|
|
30
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
31
|
+
const exampleRequest = {
|
|
32
|
+
audienceName: 'My Cool Audience',
|
|
33
|
+
nice: 'ok'
|
|
34
|
+
};
|
|
35
|
+
const exampleResponse = {
|
|
36
|
+
externalId: 'abc123xyz'
|
|
37
|
+
};
|
|
38
|
+
(0, nock_1.default)(fakeUrl).post('/', exampleRequest).reply(200, exampleResponse);
|
|
39
|
+
const expectedResponse = await testDestination.createAudience({
|
|
40
|
+
audienceName: 'My Cool Audience',
|
|
41
|
+
audienceSettings: {
|
|
42
|
+
extras: JSON.stringify({ nice: 'ok' })
|
|
43
|
+
},
|
|
44
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
45
|
+
});
|
|
46
|
+
expect(expectedResponse).toStrictEqual(exampleResponse);
|
|
47
|
+
});
|
|
48
|
+
it('should fail when response is missing externalId', async () => {
|
|
49
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
50
|
+
const exampleRequest = {
|
|
51
|
+
audienceName: 'My Cool Audience',
|
|
52
|
+
nice: 'ok'
|
|
53
|
+
};
|
|
54
|
+
const exampleResponse = {
|
|
55
|
+
someOtherField: 'abc123xyz'
|
|
56
|
+
};
|
|
57
|
+
(0, nock_1.default)(fakeUrl).post('/', exampleRequest).reply(200, exampleResponse);
|
|
58
|
+
await expect(testDestination.createAudience({
|
|
59
|
+
audienceName: 'My Cool Audience',
|
|
60
|
+
audienceSettings: {
|
|
61
|
+
extras: JSON.stringify({ nice: 'ok' })
|
|
62
|
+
},
|
|
63
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
64
|
+
})).rejects.toThrowError(actions_core_1.IntegrationError);
|
|
65
|
+
});
|
|
66
|
+
it('should fail with error message including status code when response is invalid JSON', async () => {
|
|
67
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
68
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, 'Not valid JSON');
|
|
69
|
+
await expect(testDestination.createAudience({
|
|
70
|
+
audienceName: 'My Cool Audience',
|
|
71
|
+
audienceSettings: {},
|
|
72
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
73
|
+
})).rejects.toThrow(/status: 200/);
|
|
74
|
+
});
|
|
75
|
+
it('should fail on server error', async () => {
|
|
76
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
77
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(500, { error: 'Internal Server Error' });
|
|
78
|
+
await expect(testDestination.createAudience({
|
|
79
|
+
audienceName: 'My Cool Audience',
|
|
80
|
+
audienceSettings: {},
|
|
81
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
82
|
+
})).rejects.toThrow();
|
|
83
|
+
});
|
|
84
|
+
it('should fail when extras contains invalid JSON', async () => {
|
|
85
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
86
|
+
await expect(testDestination.createAudience({
|
|
87
|
+
audienceName: 'My Cool Audience',
|
|
88
|
+
audienceSettings: {
|
|
89
|
+
extras: 'not valid json{'
|
|
90
|
+
},
|
|
91
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
92
|
+
})).rejects.toThrow(/Invalid extraSettings JSON/);
|
|
93
|
+
});
|
|
94
|
+
it('should handle missing externalId with proper error wrapping', async () => {
|
|
95
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
96
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, { someOtherField: 'value' });
|
|
97
|
+
await expect(testDestination.createAudience({
|
|
98
|
+
audienceName: 'My Cool Audience',
|
|
99
|
+
audienceSettings: {},
|
|
100
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
101
|
+
})).rejects.toThrow(/Invalid response from create audience request/);
|
|
102
|
+
});
|
|
103
|
+
it('should work when audienceSettings is undefined', async () => {
|
|
104
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
105
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, { externalId: 'abc123' });
|
|
106
|
+
const result = await testDestination.createAudience({
|
|
107
|
+
audienceName: 'My Cool Audience',
|
|
108
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
109
|
+
});
|
|
110
|
+
expect(result).toEqual({ externalId: 'abc123' });
|
|
111
|
+
});
|
|
112
|
+
it('should work when extras is empty string', async () => {
|
|
113
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
114
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, { externalId: 'abc123' });
|
|
115
|
+
const result = await testDestination.createAudience({
|
|
116
|
+
audienceName: 'My Cool Audience',
|
|
117
|
+
audienceSettings: { extras: '' },
|
|
118
|
+
settings: { createAudienceUrl: fakeUrl }
|
|
119
|
+
});
|
|
120
|
+
expect(result).toEqual({ externalId: 'abc123' });
|
|
29
121
|
});
|
|
30
|
-
expect(expectedResponse).toStrictEqual(exampleResponse);
|
|
31
122
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
123
|
+
describe('getAudience', () => {
|
|
124
|
+
it('should fail if no getAudienceUrl is set', async () => {
|
|
125
|
+
await expect(testDestination.getAudience({
|
|
126
|
+
externalId: 'abc123xyz',
|
|
127
|
+
settings: {},
|
|
128
|
+
audienceSettings: {}
|
|
129
|
+
})).rejects.toThrowError(actions_core_1.IntegrationError);
|
|
130
|
+
});
|
|
131
|
+
it('gets an audience', async () => {
|
|
132
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
133
|
+
const exampleRequest = {
|
|
134
|
+
externalId: 'abc123xyz',
|
|
135
|
+
nice: 'ok'
|
|
136
|
+
};
|
|
137
|
+
const exampleResponse = {
|
|
138
|
+
externalId: 'abc123xyz'
|
|
139
|
+
};
|
|
140
|
+
(0, nock_1.default)(fakeUrl).post('/', exampleRequest).reply(200, exampleResponse);
|
|
141
|
+
const expectedResponse = await testDestination.getAudience({
|
|
142
|
+
externalId: 'abc123xyz',
|
|
143
|
+
settings: { getAudienceUrl: fakeUrl },
|
|
144
|
+
audienceSettings: {
|
|
145
|
+
extras: JSON.stringify({ nice: 'ok' })
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
expect(expectedResponse).toStrictEqual(exampleResponse);
|
|
149
|
+
});
|
|
150
|
+
it('should fail when response is missing externalId', async () => {
|
|
151
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
152
|
+
const exampleRequest = {
|
|
153
|
+
externalId: 'abc123xyz',
|
|
154
|
+
nice: 'ok'
|
|
155
|
+
};
|
|
156
|
+
const exampleResponse = {
|
|
157
|
+
someOtherField: 'data'
|
|
158
|
+
};
|
|
159
|
+
(0, nock_1.default)(fakeUrl).post('/', exampleRequest).reply(200, exampleResponse);
|
|
160
|
+
await expect(testDestination.getAudience({
|
|
161
|
+
externalId: 'abc123xyz',
|
|
162
|
+
settings: { getAudienceUrl: fakeUrl },
|
|
163
|
+
audienceSettings: {
|
|
164
|
+
extras: JSON.stringify({ nice: 'ok' })
|
|
165
|
+
}
|
|
166
|
+
})).rejects.toThrowError(actions_core_1.IntegrationError);
|
|
167
|
+
});
|
|
168
|
+
it('should fail with error message including status code when response is invalid JSON', async () => {
|
|
169
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
170
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, 'Not valid JSON');
|
|
171
|
+
await expect(testDestination.getAudience({
|
|
172
|
+
externalId: 'abc123xyz',
|
|
173
|
+
settings: { getAudienceUrl: fakeUrl },
|
|
174
|
+
audienceSettings: {}
|
|
175
|
+
})).rejects.toThrow(/status: 200/);
|
|
176
|
+
});
|
|
177
|
+
it('should fail on server error', async () => {
|
|
178
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
179
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(404, { error: 'Not Found' });
|
|
180
|
+
await expect(testDestination.getAudience({
|
|
181
|
+
externalId: 'abc123xyz',
|
|
182
|
+
settings: { getAudienceUrl: fakeUrl },
|
|
183
|
+
audienceSettings: {}
|
|
184
|
+
})).rejects.toThrow();
|
|
185
|
+
});
|
|
186
|
+
it('should fail when extras contains invalid JSON', async () => {
|
|
187
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
188
|
+
await expect(testDestination.getAudience({
|
|
189
|
+
externalId: 'abc123xyz',
|
|
190
|
+
settings: { getAudienceUrl: fakeUrl },
|
|
191
|
+
audienceSettings: {
|
|
192
|
+
extras: 'not valid json{'
|
|
193
|
+
}
|
|
194
|
+
})).rejects.toThrow(/Invalid extraSettings JSON/);
|
|
195
|
+
});
|
|
196
|
+
it('should handle missing externalId with proper error wrapping', async () => {
|
|
197
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
198
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, { someOtherField: 'value' });
|
|
199
|
+
await expect(testDestination.getAudience({
|
|
200
|
+
externalId: 'abc123xyz',
|
|
201
|
+
settings: { getAudienceUrl: fakeUrl },
|
|
202
|
+
audienceSettings: {}
|
|
203
|
+
})).rejects.toThrow(/Invalid response from get audience request/);
|
|
204
|
+
});
|
|
205
|
+
it('should work when audienceSettings is undefined', async () => {
|
|
206
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
207
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, { externalId: 'abc123' });
|
|
208
|
+
const result = await testDestination.getAudience({
|
|
209
|
+
externalId: 'abc123',
|
|
210
|
+
settings: { getAudienceUrl: fakeUrl }
|
|
211
|
+
});
|
|
212
|
+
expect(result).toEqual({ externalId: 'abc123' });
|
|
213
|
+
});
|
|
214
|
+
it('should work when extras is empty string', async () => {
|
|
215
|
+
const fakeUrl = 'http://segmentfake.xyz';
|
|
216
|
+
(0, nock_1.default)(fakeUrl).post('/').reply(200, { externalId: 'abc123' });
|
|
217
|
+
const result = await testDestination.getAudience({
|
|
218
|
+
externalId: 'abc123',
|
|
219
|
+
audienceSettings: { extras: '' },
|
|
220
|
+
settings: { getAudienceUrl: fakeUrl }
|
|
221
|
+
});
|
|
222
|
+
expect(result).toEqual({ externalId: 'abc123' });
|
|
48
223
|
});
|
|
49
|
-
expect(expectedResponse).toStrictEqual(exampleResponse);
|
|
50
224
|
});
|
|
51
225
|
it('send through audience extra settings', async () => {
|
|
52
226
|
const url = 'https://example.com';
|
|
@@ -74,5 +248,51 @@ describe('Webhook Audience Tests', () => {
|
|
|
74
248
|
const json = await response.json();
|
|
75
249
|
expect(json['nice']).toBe('ok');
|
|
76
250
|
});
|
|
251
|
+
describe('extendRequest', () => {
|
|
252
|
+
it('should return empty object when payload is undefined', () => {
|
|
253
|
+
const result = testDestination.extendRequest?.({
|
|
254
|
+
settings: { sharedSecret: 'secret' },
|
|
255
|
+
payload: undefined
|
|
256
|
+
});
|
|
257
|
+
expect(result).toEqual({});
|
|
258
|
+
});
|
|
259
|
+
it('should return empty object when no sharedSecret is provided', () => {
|
|
260
|
+
const result = testDestination.extendRequest?.({
|
|
261
|
+
settings: {},
|
|
262
|
+
payload: { data: { test: 'value' } }
|
|
263
|
+
});
|
|
264
|
+
expect(result).toEqual({});
|
|
265
|
+
});
|
|
266
|
+
it('should generate X-Signature header with sharedSecret and single payload', () => {
|
|
267
|
+
const payload = { data: { test: 'value' } };
|
|
268
|
+
const result = testDestination.extendRequest?.({
|
|
269
|
+
settings: { sharedSecret: 'secret' },
|
|
270
|
+
payload
|
|
271
|
+
});
|
|
272
|
+
expect(result).toBeDefined();
|
|
273
|
+
expect(result).toHaveProperty('headers');
|
|
274
|
+
expect(result?.headers).toHaveProperty('X-Signature');
|
|
275
|
+
expect(typeof result?.headers?.['X-Signature']).toBe('string');
|
|
276
|
+
});
|
|
277
|
+
it('should generate X-Signature header with sharedSecret and array payload', () => {
|
|
278
|
+
const payload = [{ data: { test: 'value' } }];
|
|
279
|
+
const result = testDestination.extendRequest?.({
|
|
280
|
+
settings: { sharedSecret: 'secret' },
|
|
281
|
+
payload
|
|
282
|
+
});
|
|
283
|
+
expect(result).toBeDefined();
|
|
284
|
+
expect(result).toHaveProperty('headers');
|
|
285
|
+
expect(result?.headers).toHaveProperty('X-Signature');
|
|
286
|
+
expect(typeof result?.headers?.['X-Signature']).toBe('string');
|
|
287
|
+
});
|
|
288
|
+
it('should return empty object when payload has no data field', () => {
|
|
289
|
+
const payload = { something: 'else' };
|
|
290
|
+
const result = testDestination.extendRequest?.({
|
|
291
|
+
settings: { sharedSecret: 'secret' },
|
|
292
|
+
payload
|
|
293
|
+
});
|
|
294
|
+
expect(result).toEqual({});
|
|
295
|
+
});
|
|
296
|
+
});
|
|
77
297
|
});
|
|
78
298
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/destinations/webhook-audiences/__test__/index.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/destinations/webhook-audiences/__test__/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,8 +35,8 @@ const destination = {
|
|
|
35
35
|
audienceFields: {
|
|
36
36
|
extras: {
|
|
37
37
|
type: 'string',
|
|
38
|
-
label: `Extra
|
|
39
|
-
description: `Extra
|
|
38
|
+
label: `Extra JSON fields to pass on to every request (as a JSON string)`,
|
|
39
|
+
description: `Extra JSON fields to pass on to every request. This must be a valid JSON string (e.g., "{\\"hello\\": \\"world\\", \\"foo\\": \\"bar\\"}"). The JSON will be parsed and merged into each request payload. Note: "${externalIdKey}" and "${audienceNameKey}" are reserved keys and cannot be used.`
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
audienceConfig: {
|
|
@@ -61,11 +61,12 @@ const destination = {
|
|
|
61
61
|
try {
|
|
62
62
|
jsonOutput = await response.json();
|
|
63
63
|
if (!jsonOutput[externalIdKey]) {
|
|
64
|
-
throw new actions_core_1.IntegrationError(`Missing ${externalIdKey} in response`, 'INVALID_RESPONSE', 400);
|
|
64
|
+
throw new actions_core_1.IntegrationError(`Missing ${externalIdKey} in response (status: ${response.status})`, 'INVALID_RESPONSE', 400);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
catch {
|
|
68
|
-
|
|
67
|
+
catch (error) {
|
|
68
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
69
|
+
throw new actions_core_1.IntegrationError(`Invalid response from get audience request (status: ${response.status}): ${errorMessage}`, 'INVALID_RESPONSE', 400);
|
|
69
70
|
}
|
|
70
71
|
return {
|
|
71
72
|
externalId: jsonOutput[externalIdKey]
|
|
@@ -88,9 +89,16 @@ const destination = {
|
|
|
88
89
|
audienceName
|
|
89
90
|
}
|
|
90
91
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
let jsonOutput;
|
|
93
|
+
try {
|
|
94
|
+
jsonOutput = await response.json();
|
|
95
|
+
if (!jsonOutput[externalIdKey]) {
|
|
96
|
+
throw new actions_core_1.IntegrationError(`Missing ${externalIdKey} in response (status: ${response.status})`, 'INVALID_RESPONSE', 400);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
101
|
+
throw new actions_core_1.IntegrationError(`Invalid response from create audience request (status: ${response.status}): ${errorMessage}`, 'INVALID_RESPONSE', 400);
|
|
94
102
|
}
|
|
95
103
|
return {
|
|
96
104
|
externalId: jsonOutput[externalIdKey]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/webhook-audiences/index.ts"],"names":[],"mappings":";;;;;AAGA,2DAAkC;AAClC,wDAAuE;AACvE,mCAAmC;AAEnC,MAAM,aAAa,GAAG,YAAY,CAAA;AAClC,MAAM,eAAe,GAAG,cAAc,CAAA;AAEtC,MAAM,WAAW,GAA8D;IAC7E,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,OAAO;IACb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,eAAe;gBACtB,WAAW,EACT,mLAAmL;aACtL;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,4CAA4C;gBACnD,WAAW,EAAE,qDAAqD,eAAe,kGAAkG,aAAa,IAAI;aACrM;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,yCAAyC;gBAChD,WAAW,EAAE,qDAAqD,aAAa,+FAA+F,aAAa,IAAI;aAChM;SACF;KACF;IACD,cAAc,EAAE;QACd,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/webhook-audiences/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
4
|
+
const sts_1 = require("../sts");
|
|
5
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
6
|
+
jest.mock('@aws-sdk/client-sts');
|
|
7
|
+
jest.mock('uuid', () => ({ v4: jest.fn(() => 'mocked-session-id') }));
|
|
8
|
+
jest.mock('@segment/actions-core', () => ({
|
|
9
|
+
IntegrationError: jest.fn().mockImplementation((message, code, status) => ({
|
|
10
|
+
name: 'IntegrationError',
|
|
11
|
+
message,
|
|
12
|
+
code,
|
|
13
|
+
status
|
|
14
|
+
})),
|
|
15
|
+
ErrorCodes: { INVALID_AUTHENTICATION: 'INVALID_AUTHENTICATION' }
|
|
16
|
+
}));
|
|
17
|
+
describe('assumeRole', () => {
|
|
18
|
+
const mockSend = jest.fn();
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
jest.clearAllMocks();
|
|
21
|
+
client_sts_1.STSClient.mockImplementation(() => ({
|
|
22
|
+
send: mockSend
|
|
23
|
+
}));
|
|
24
|
+
process.env.AMAZON_S3_ACTIONS_ROLE_ADDRESS = 'arn:aws:iam::111111111111:role/IntermediaryRole';
|
|
25
|
+
process.env.AMAZON_S3_ACTIONS_EXTERNAL_ID = 'intermediary-external-id';
|
|
26
|
+
});
|
|
27
|
+
it('should successfully assume both intermediary and target roles', async () => {
|
|
28
|
+
mockSend
|
|
29
|
+
.mockResolvedValueOnce({
|
|
30
|
+
Credentials: {
|
|
31
|
+
AccessKeyId: 'AKIA_INTERMEDIARY',
|
|
32
|
+
SecretAccessKey: 'SECRET_INTERMEDIARY',
|
|
33
|
+
SessionToken: 'TOKEN_INTERMEDIARY'
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
.mockResolvedValueOnce({
|
|
37
|
+
Credentials: {
|
|
38
|
+
AccessKeyId: 'AKIA_FINAL',
|
|
39
|
+
SecretAccessKey: 'SECRET_FINAL',
|
|
40
|
+
SessionToken: 'TOKEN_FINAL'
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const creds = await (0, sts_1.assumeRole)('arn:aws:iam::222222222222:role/TargetRole', 'external-id-final', 'us-east-1');
|
|
44
|
+
expect(client_sts_1.STSClient).toHaveBeenCalledTimes(2);
|
|
45
|
+
expect(client_sts_1.AssumeRoleCommand).toHaveBeenCalledTimes(2);
|
|
46
|
+
expect(creds).toEqual({
|
|
47
|
+
accessKeyId: 'AKIA_FINAL',
|
|
48
|
+
secretAccessKey: 'SECRET_FINAL',
|
|
49
|
+
sessionToken: 'TOKEN_FINAL'
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('should throw IntegrationError if STS returns missing credentials', async () => {
|
|
53
|
+
mockSend.mockResolvedValueOnce({
|
|
54
|
+
Credentials: { AccessKeyId: 'X' }
|
|
55
|
+
});
|
|
56
|
+
const promise = (0, sts_1.assumeRole)('arn:aws:iam::222222222222:role/TargetRole', 'external-id-final', 'us-east-1');
|
|
57
|
+
await expect(promise).rejects.toMatchObject({
|
|
58
|
+
name: 'IntegrationError',
|
|
59
|
+
message: 'Failed to assume role',
|
|
60
|
+
code: actions_core_1.ErrorCodes.INVALID_AUTHENTICATION,
|
|
61
|
+
status: 403
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
it('should pass intermediary credentials to second STS call', async () => {
|
|
65
|
+
mockSend
|
|
66
|
+
.mockResolvedValueOnce({
|
|
67
|
+
Credentials: {
|
|
68
|
+
AccessKeyId: 'AKIA_INTER',
|
|
69
|
+
SecretAccessKey: 'SECRET_INTER',
|
|
70
|
+
SessionToken: 'TOKEN_INTER'
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
.mockResolvedValueOnce({
|
|
74
|
+
Credentials: {
|
|
75
|
+
AccessKeyId: 'AKIA_FINAL',
|
|
76
|
+
SecretAccessKey: 'SECRET_FINAL',
|
|
77
|
+
SessionToken: 'TOKEN_FINAL'
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
await (0, sts_1.assumeRole)('arn:aws:iam::333333333333:role/TargetRole', 'external-id-final', 'us-west-2');
|
|
81
|
+
expect(client_sts_1.STSClient).toHaveBeenNthCalledWith(2, expect.objectContaining({
|
|
82
|
+
credentials: {
|
|
83
|
+
accessKeyId: 'AKIA_INTER',
|
|
84
|
+
secretAccessKey: 'SECRET_INTER',
|
|
85
|
+
sessionToken: 'TOKEN_INTER'
|
|
86
|
+
},
|
|
87
|
+
region: 'us-west-2'
|
|
88
|
+
}));
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/lib/AWS/__test__/index.test.ts"],"names":[],"mappings":"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"}
|