n8n-nodes-sendzen 1.0.5 → 1.0.7
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/README.md +2 -2
- package/dist/assets/Session_Message.png +0 -0
- package/dist/assets/Template_Message.png +0 -0
- package/dist/credentials/SendZenApi.credentials.d.ts +3 -2
- package/dist/credentials/SendZenApi.credentials.js +3 -5
- package/dist/credentials/SendZenApi.credentials.js.map +1 -0
- package/dist/credentials/SendZenWebhookApi.credentials.d.ts +3 -2
- package/dist/credentials/SendZenWebhookApi.credentials.js +6 -8
- package/dist/credentials/SendZenWebhookApi.credentials.js.map +1 -0
- package/dist/nodes/SendZen/SendZen.node.js +4 -10
- package/dist/nodes/SendZen/SendZen.node.js.map +1 -0
- package/dist/nodes/SendZen/SendZenTrigger.node.js +2 -0
- package/dist/nodes/SendZen/SendZenTrigger.node.js.map +1 -0
- package/dist/package.json +72 -0
- package/dist/shared/constants.js +1 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/nodeProperties.d.ts +1 -0
- package/dist/shared/nodeProperties.js +29 -1
- package/dist/shared/nodeProperties.js.map +1 -0
- package/dist/shared/template/template.api.types.js +1 -0
- package/dist/shared/template/template.api.types.js.map +1 -0
- package/dist/shared/template/template.builder.js +3 -13
- package/dist/shared/template/template.builder.js.map +1 -0
- package/dist/shared/type.js +1 -0
- package/dist/shared/type.js.map +1 -0
- package/dist/shared/utils.js +1 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/tests/credentials/sendZenApi.test.d.ts +1 -0
- package/dist/tests/credentials/sendZenApi.test.js +51 -0
- package/dist/tests/credentials/sendZenApi.test.js.map +1 -0
- package/dist/tests/credentials/sendZenWebhookApi.test.d.ts +1 -0
- package/dist/tests/credentials/sendZenWebhookApi.test.js +40 -0
- package/dist/tests/credentials/sendZenWebhookApi.test.js.map +1 -0
- package/dist/tests/nodes/sendZenNode.test.d.ts +1 -0
- package/dist/tests/nodes/sendZenNode.test.js +252 -0
- package/dist/tests/nodes/sendZenNode.test.js.map +1 -0
- package/dist/tests/nodes/sendZenTrigger.test.d.ts +1 -0
- package/dist/tests/nodes/sendZenTrigger.test.js +92 -0
- package/dist/tests/nodes/sendZenTrigger.test.js.map +1 -0
- package/dist/tests/templates/templates.builder.test.d.ts +1 -0
- package/dist/tests/templates/templates.builder.test.js +447 -0
- package/dist/tests/templates/templates.builder.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +72 -83
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendZenWebhookApi.test.js","sourceRoot":"","sources":["../../../tests/credentials/sendZenWebhookApi.test.ts"],"names":[],"mappings":";;AAAA,mGAAoF;AAEpF,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC9C,IAAI,WAA8B,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,IAAI,iDAAiB,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACjD,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACpD,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpF,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const SendZen_node_1 = require("../../nodes/SendZen/SendZen.node");
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const nodeProperties_1 = require("../../shared/nodeProperties");
|
|
6
|
+
describe('SendZen Node', () => {
|
|
7
|
+
let node;
|
|
8
|
+
let description;
|
|
9
|
+
let methods;
|
|
10
|
+
let properties;
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
node = new SendZen_node_1.SendZen();
|
|
13
|
+
description = node.description;
|
|
14
|
+
properties = description.properties;
|
|
15
|
+
methods = node.methods;
|
|
16
|
+
});
|
|
17
|
+
test('should have the correct Description', () => {
|
|
18
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
19
|
+
expect(description.name).toBe('sendZen');
|
|
20
|
+
expect(description.displayName).toBe('SendZen for WhatsApp API');
|
|
21
|
+
expect(description.icon).toBe('file:sendzen.svg');
|
|
22
|
+
expect(description.group).toHaveLength(1);
|
|
23
|
+
expect((_a = description.group) === null || _a === void 0 ? void 0 : _a[0]).toBe('output');
|
|
24
|
+
expect(description.version).toBe(1);
|
|
25
|
+
expect(description.subtitle).toBe('={{ $parameter.operation === "sendSessionMessage" ? "Send Session Message" : $parameter.operation === "sendTemplateMessage" ? "Send Template Message" : $parameter.operation === "markAsRead" ? "Mark as Read" : $parameter.operation === "showTyping" ? "Show Typing Indicator" : "SendZen" }}');
|
|
26
|
+
expect(description.description).toBe('Build WhatsApp chatbots & automations: send messages, media, and notifications via the WhatsApp Cloud API.');
|
|
27
|
+
expect(description.defaults).toBeInstanceOf(Object);
|
|
28
|
+
expect((_b = description.defaults) === null || _b === void 0 ? void 0 : _b.name).toBe('SendZen');
|
|
29
|
+
expect(description.inputs).toHaveLength(1);
|
|
30
|
+
expect((_c = description.inputs) === null || _c === void 0 ? void 0 : _c[0]).toBe('main');
|
|
31
|
+
expect(description.outputs).toHaveLength(1);
|
|
32
|
+
expect((_d = description.outputs) === null || _d === void 0 ? void 0 : _d[0]).toBe('main');
|
|
33
|
+
expect(description.credentials).toHaveLength(1);
|
|
34
|
+
expect((_e = description.credentials) === null || _e === void 0 ? void 0 : _e[0]).toBeInstanceOf(Object);
|
|
35
|
+
expect((_g = (_f = description.credentials) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.name).toBe('sendZenApi');
|
|
36
|
+
expect((_j = (_h = description.credentials) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.required).toBe(true);
|
|
37
|
+
expect(description.properties).toBeInstanceOf(Array);
|
|
38
|
+
});
|
|
39
|
+
test('should have the correct Properties and length', () => {
|
|
40
|
+
expect(properties).toHaveLength(10);
|
|
41
|
+
expect(properties[0]).toBe(nodeProperties_1.ResourseProperties);
|
|
42
|
+
expect(properties[1]).toBe(nodeProperties_1.OperationProperties);
|
|
43
|
+
expect(properties[2]).toBe(nodeProperties_1.WabaAccountProperties);
|
|
44
|
+
expect(properties[3]).toBe(nodeProperties_1.PhoneNumberIdProperties);
|
|
45
|
+
expect(properties[4]).toBe(nodeProperties_1.MessageIdProperties);
|
|
46
|
+
expect(properties[5]).toBe(nodeProperties_1.RecipientPhoneNumberProperties);
|
|
47
|
+
expect(properties[6]).toBe(nodeProperties_1.TemplateProperties);
|
|
48
|
+
expect(properties[7]).toBe(nodeProperties_1.ReplyMessageProperties);
|
|
49
|
+
expect(properties[8]).toBe(nodeProperties_1.EnableUrlPreviewProperties);
|
|
50
|
+
expect(properties[9]).toBe(nodeProperties_1.TemplateNameOrIdProperties);
|
|
51
|
+
});
|
|
52
|
+
test('should have the correct Methods', () => {
|
|
53
|
+
expect(methods).toBeDefined();
|
|
54
|
+
expect(methods === null || methods === void 0 ? void 0 : methods.loadOptions).toBeDefined();
|
|
55
|
+
expect(methods === null || methods === void 0 ? void 0 : methods.resourceMapping).toBeDefined();
|
|
56
|
+
const loadOptions = methods === null || methods === void 0 ? void 0 : methods.loadOptions;
|
|
57
|
+
if (loadOptions) {
|
|
58
|
+
const loadOptionsKeys = Object.keys(loadOptions);
|
|
59
|
+
expect(loadOptionsKeys).toHaveLength(2);
|
|
60
|
+
expect(loadOptionsKeys[0]).toBe('getTemplates');
|
|
61
|
+
expect(loadOptionsKeys[1]).toBe('getWabaAccounts');
|
|
62
|
+
}
|
|
63
|
+
const resourceMapping = methods === null || methods === void 0 ? void 0 : methods.resourceMapping;
|
|
64
|
+
if (resourceMapping) {
|
|
65
|
+
const resourceMappingKeys = Object.keys(resourceMapping);
|
|
66
|
+
expect(resourceMappingKeys).toHaveLength(1);
|
|
67
|
+
expect(resourceMappingKeys[0]).toBe('getTemplateVariables');
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
test('should have the correct values in Operation property', () => {
|
|
71
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
72
|
+
expect(nodeProperties_1.OperationProperties.name).toBe('operation');
|
|
73
|
+
expect(nodeProperties_1.OperationProperties.displayName).toBe('Operation');
|
|
74
|
+
expect(nodeProperties_1.OperationProperties.type).toBe('options');
|
|
75
|
+
expect(nodeProperties_1.OperationProperties.noDataExpression).toBe(true);
|
|
76
|
+
expect(nodeProperties_1.OperationProperties.options).toHaveLength(4);
|
|
77
|
+
expect((_b = (_a = nodeProperties_1.OperationProperties.options) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.name).toBe('Send Session Message');
|
|
78
|
+
expect((_d = (_c = nodeProperties_1.OperationProperties.options) === null || _c === void 0 ? void 0 : _c[1]) === null || _d === void 0 ? void 0 : _d.name).toBe('Send Template Message');
|
|
79
|
+
expect((_f = (_e = nodeProperties_1.OperationProperties.options) === null || _e === void 0 ? void 0 : _e[2]) === null || _f === void 0 ? void 0 : _f.name).toBe('Mark as Read');
|
|
80
|
+
expect((_h = (_g = nodeProperties_1.OperationProperties.options) === null || _g === void 0 ? void 0 : _g[3]) === null || _h === void 0 ? void 0 : _h.name).toBe('Show Typing Indicator');
|
|
81
|
+
});
|
|
82
|
+
describe('execute', () => {
|
|
83
|
+
let mockExecuteFunctions;
|
|
84
|
+
let mockHttpRequest;
|
|
85
|
+
beforeEach(() => {
|
|
86
|
+
mockHttpRequest = jest.fn();
|
|
87
|
+
mockExecuteFunctions = {
|
|
88
|
+
getInputData: jest.fn(),
|
|
89
|
+
getNodeParameter: jest.fn(),
|
|
90
|
+
getCredentials: jest.fn().mockResolvedValue({ returnFullResponse: false }),
|
|
91
|
+
helpers: {
|
|
92
|
+
httpRequestWithAuthentication: mockHttpRequest,
|
|
93
|
+
},
|
|
94
|
+
getNode: jest.fn().mockReturnValue({ name: 'SendZen' }),
|
|
95
|
+
continueOnFail: jest.fn().mockReturnValue(false),
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
const setupGetNodeParameter = (params) => {
|
|
99
|
+
mockExecuteFunctions.getNodeParameter.mockImplementation((paramName) => {
|
|
100
|
+
return params[paramName];
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
test('should execute "sendSessionMessage" successfully', async () => {
|
|
104
|
+
mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]);
|
|
105
|
+
setupGetNodeParameter({
|
|
106
|
+
operation: 'sendSessionMessage',
|
|
107
|
+
wabaAccount: JSON.stringify({
|
|
108
|
+
wabaId: 'waba_123',
|
|
109
|
+
phoneNumber: '1555000000',
|
|
110
|
+
phoneNumberId: 'phone_id_123',
|
|
111
|
+
}),
|
|
112
|
+
recipient: '+1234567890',
|
|
113
|
+
replyMessage: 'Hello World',
|
|
114
|
+
enableUrlPreview: true,
|
|
115
|
+
});
|
|
116
|
+
mockHttpRequest.mockResolvedValue({ success: true, messageId: 'msg_123' });
|
|
117
|
+
const result = await node.execute.call(mockExecuteFunctions);
|
|
118
|
+
expect(mockHttpRequest).toHaveBeenCalledTimes(1);
|
|
119
|
+
expect(mockHttpRequest).toHaveBeenCalledWith('sendZenApi', expect.objectContaining({
|
|
120
|
+
method: 'POST',
|
|
121
|
+
url: '/v1/messages',
|
|
122
|
+
body: {
|
|
123
|
+
from: '1555000000',
|
|
124
|
+
to: '+1234567890',
|
|
125
|
+
type: 'text',
|
|
126
|
+
text: {
|
|
127
|
+
body: 'Hello World',
|
|
128
|
+
preview_url: true,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
}));
|
|
132
|
+
expect(result).toEqual([[{ json: { success: true, messageId: 'msg_123' } }]]);
|
|
133
|
+
});
|
|
134
|
+
test('should throw error for invalid recipient number in sendSessionMessage', async () => {
|
|
135
|
+
mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]);
|
|
136
|
+
setupGetNodeParameter({
|
|
137
|
+
operation: 'sendSessionMessage',
|
|
138
|
+
wabaAccount: JSON.stringify({ phoneNumber: '123' }),
|
|
139
|
+
recipient: 'INVALID_NUMBER',
|
|
140
|
+
});
|
|
141
|
+
await expect(node.execute.call(mockExecuteFunctions)).rejects.toThrow(n8n_workflow_1.NodeOperationError);
|
|
142
|
+
});
|
|
143
|
+
test('should execute "sendTemplateMessage" successfully', async () => {
|
|
144
|
+
mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]);
|
|
145
|
+
const mockTemplate = {
|
|
146
|
+
name: 'hello_world',
|
|
147
|
+
language: { code: 'en_US' },
|
|
148
|
+
components: [],
|
|
149
|
+
};
|
|
150
|
+
setupGetNodeParameter({
|
|
151
|
+
operation: 'sendTemplateMessage',
|
|
152
|
+
wabaAccount: JSON.stringify({ phoneNumber: '1555000000' }),
|
|
153
|
+
recipient: '+1234567890',
|
|
154
|
+
template: JSON.stringify(mockTemplate),
|
|
155
|
+
templateVariables: { value: {} },
|
|
156
|
+
});
|
|
157
|
+
mockHttpRequest.mockResolvedValue({ messages: [{ id: 'msg_123' }] });
|
|
158
|
+
const result = await node.execute.call(mockExecuteFunctions);
|
|
159
|
+
expect(mockHttpRequest).toHaveBeenCalledWith('sendZenApi', expect.objectContaining({
|
|
160
|
+
method: 'POST',
|
|
161
|
+
url: '/v1/messages',
|
|
162
|
+
body: expect.objectContaining({
|
|
163
|
+
type: 'template',
|
|
164
|
+
template: expect.objectContaining({
|
|
165
|
+
name: 'hello_world',
|
|
166
|
+
}),
|
|
167
|
+
}),
|
|
168
|
+
}));
|
|
169
|
+
expect(result[0][0].json).toEqual({ response: { messages: [{ id: 'msg_123' }] } });
|
|
170
|
+
});
|
|
171
|
+
test('should execute "markAsRead" successfully using Manual Parameters', async () => {
|
|
172
|
+
mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]);
|
|
173
|
+
setupGetNodeParameter({
|
|
174
|
+
operation: 'markAsRead',
|
|
175
|
+
phoneNumberId: 'pid_manual_123',
|
|
176
|
+
messageId: 'mid_manual_123',
|
|
177
|
+
});
|
|
178
|
+
mockHttpRequest.mockResolvedValue({ success: true });
|
|
179
|
+
await node.execute.call(mockExecuteFunctions);
|
|
180
|
+
expect(mockHttpRequest).toHaveBeenCalledWith('sendZenApi', expect.objectContaining({
|
|
181
|
+
method: 'POST',
|
|
182
|
+
url: '/v1/pid_manual_123/messages',
|
|
183
|
+
body: {
|
|
184
|
+
messaging_product: 'whatsapp',
|
|
185
|
+
status: 'read',
|
|
186
|
+
message_id: 'mid_manual_123',
|
|
187
|
+
},
|
|
188
|
+
}));
|
|
189
|
+
});
|
|
190
|
+
test('should execute "markAsRead" successfully using Input JSON (Auto-resolve)', async () => {
|
|
191
|
+
const inputItem = {
|
|
192
|
+
json: {
|
|
193
|
+
entry: [{
|
|
194
|
+
changes: [{
|
|
195
|
+
value: {
|
|
196
|
+
metadata: { phone_number_id: 'pid_from_json' },
|
|
197
|
+
messages: [{ id: 'mid_from_json' }]
|
|
198
|
+
}
|
|
199
|
+
}]
|
|
200
|
+
}]
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
mockExecuteFunctions.getInputData.mockReturnValue([inputItem]);
|
|
204
|
+
mockExecuteFunctions.getNodeParameter.mockImplementation((paramName) => {
|
|
205
|
+
if (paramName === 'operation')
|
|
206
|
+
return 'markAsRead';
|
|
207
|
+
return '';
|
|
208
|
+
});
|
|
209
|
+
mockHttpRequest.mockResolvedValue({ success: true });
|
|
210
|
+
await node.execute.call(mockExecuteFunctions);
|
|
211
|
+
expect(mockHttpRequest).toHaveBeenCalledWith('sendZenApi', expect.objectContaining({
|
|
212
|
+
url: '/v1/pid_from_json/messages',
|
|
213
|
+
body: expect.objectContaining({
|
|
214
|
+
message_id: 'mid_from_json',
|
|
215
|
+
}),
|
|
216
|
+
}));
|
|
217
|
+
});
|
|
218
|
+
test('should execute "showTyping" successfully', async () => {
|
|
219
|
+
mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]);
|
|
220
|
+
setupGetNodeParameter({
|
|
221
|
+
operation: 'showTyping',
|
|
222
|
+
phoneNumberId: 'pid_123',
|
|
223
|
+
messageId: 'mid_123',
|
|
224
|
+
});
|
|
225
|
+
mockHttpRequest.mockResolvedValue({ success: true });
|
|
226
|
+
await node.execute.call(mockExecuteFunctions);
|
|
227
|
+
expect(mockHttpRequest).toHaveBeenCalledWith('sendZenApi', expect.objectContaining({
|
|
228
|
+
body: {
|
|
229
|
+
messaging_product: 'whatsapp',
|
|
230
|
+
status: 'read',
|
|
231
|
+
message_id: 'mid_123',
|
|
232
|
+
typing_indicator: {
|
|
233
|
+
type: 'text',
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
}));
|
|
237
|
+
});
|
|
238
|
+
test('should handle HTTP Errors correctly', async () => {
|
|
239
|
+
mockExecuteFunctions.getInputData.mockReturnValue([{ json: {} }]);
|
|
240
|
+
setupGetNodeParameter({
|
|
241
|
+
operation: 'sendSessionMessage',
|
|
242
|
+
wabaAccount: JSON.stringify({ phoneNumber: '1555000000' }),
|
|
243
|
+
recipient: '+1234567890',
|
|
244
|
+
replyMessage: 'Hi',
|
|
245
|
+
});
|
|
246
|
+
const error = new Error('API Error');
|
|
247
|
+
mockHttpRequest.mockRejectedValue(error);
|
|
248
|
+
await expect(node.execute.call(mockExecuteFunctions)).rejects.toThrow(n8n_workflow_1.NodeOperationError);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
//# sourceMappingURL=sendZenNode.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendZenNode.test.js","sourceRoot":"","sources":["../../../tests/nodes/sendZenNode.test.ts"],"names":[],"mappings":";;AAAA,mEAA2D;AAC3D,+CAAsG;AACtG,gEAWqC;AAErC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,IAAI,IAAa,CAAC;IAClB,IAAI,WAAiC,CAAC;IACtC,IAAI,OAA6B,CAAC;IAClC,IAAI,UAA8C,CAAC;IAEnD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,GAAG,IAAI,sBAAO,EAAE,CAAC;QACrB,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;;QAChD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAA,WAAW,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAChC,iSAAiS,CACjS,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CACnC,4GAA4G,CAC5G,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,MAAA,WAAW,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAA,WAAW,CAAC,MAAM,0CAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAA,WAAW,CAAC,OAAO,0CAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,MAAA,WAAW,CAAC,WAAW,0CAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAA,MAAA,WAAW,CAAC,WAAW,0CAAG,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAA,MAAA,WAAW,CAAC,WAAW,0CAAG,CAAC,CAAC,0CAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAkB,CAAC,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oCAAmB,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sCAAqB,CAAC,CAAC;QAClD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wCAAuB,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oCAAmB,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,+CAA8B,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAkB,CAAC,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uCAAsB,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2CAA0B,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2CAA0B,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC;QACzC,IAAG,WAAW,EAAC,CAAC;YACf,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,eAAe,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC;QACjD,IAAG,eAAe,EAAC,CAAC;YACnB,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzD,MAAM,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;;QACjE,MAAM,CAAC,oCAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,oCAAmB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,oCAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,oCAAmB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,oCAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAA,MAAA,oCAAmB,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAA,MAAA,oCAAmB,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAA,MAAA,oCAAmB,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,CAAC,MAAA,MAAA,oCAAmB,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,IAAI,oBAAyB,CAAC;QAC9B,IAAI,eAA0B,CAAC;QAE/B,UAAU,CAAC,GAAG,EAAE;YAEf,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE5B,oBAAoB,GAAG;gBACtB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;gBACvB,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC3B,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;gBAC1E,OAAO,EAAE;oBACR,6BAA6B,EAAE,eAAe;iBAC9C;gBACD,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACvD,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;aAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAGH,MAAM,qBAAqB,GAAG,CAAC,MAA2B,EAAE,EAAE;YAC7D,oBAAoB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,SAAiB,EAAE,EAAE;gBAC9E,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAEnE,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAElE,qBAAqB,CAAC;gBACrB,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;oBAC3B,MAAM,EAAE,UAAU;oBAClB,WAAW,EAAE,YAAY;oBACzB,aAAa,EAAE,cAAc;iBAC7B,CAAC;gBACF,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,aAAa;gBAC3B,gBAAgB,EAAE,IAAI;aACtB,CAAC,CAAC;YAEH,eAAe,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAG3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CAAC;YAG7F,MAAM,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAC3C,YAAY,EACZ,MAAM,CAAC,gBAAgB,CAAC;gBACvB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE;oBACL,IAAI,EAAE,YAAY;oBAClB,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,WAAW,EAAE,IAAI;qBACjB;iBACD;aACD,CAAC,CACF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;YACxF,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAClE,qBAAqB,CAAC;gBACrB,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;gBACnD,SAAS,EAAE,gBAAgB;aAC3B,CAAC,CAAC;YAEH,MAAM,MAAM,CACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CACvE,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAkB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACpE,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAElE,MAAM,YAAY,GAAG;gBACpB,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC3B,UAAU,EAAE,EAAE;aACd,CAAC;YAEF,qBAAqB,CAAC;gBACrB,SAAS,EAAE,qBAAqB;gBAChC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;gBAC1D,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBACtC,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;aAChC,CAAC,CAAC;YAEH,eAAe,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CAAC;YAE7F,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAC3C,YAAY,EACZ,MAAM,CAAC,gBAAgB,CAAC;gBACvB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC7B,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBACjC,IAAI,EAAE,aAAa;qBACnB,CAAC;iBACF,CAAC;aACF,CAAC,CACF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YACnF,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAElE,qBAAqB,CAAC;gBACrB,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,gBAAgB;gBAC/B,SAAS,EAAE,gBAAgB;aAC3B,CAAC,CAAC;YAEH,eAAe,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CAAC;YAE9E,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAC3C,YAAY,EACZ,MAAM,CAAC,gBAAgB,CAAC;gBACvB,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,6BAA6B;gBAClC,IAAI,EAAE;oBACL,iBAAiB,EAAE,UAAU;oBAC7B,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,gBAAgB;iBAC5B;aACD,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YAE3F,MAAM,SAAS,GAAG;gBACjB,IAAI,EAAE;oBACL,KAAK,EAAE,CAAC;4BACP,OAAO,EAAE,CAAC;oCACT,KAAK,EAAE;wCACN,QAAQ,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE;wCAC9C,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;qCACnC;iCACD,CAAC;yBACF,CAAC;iBACF;aACD,CAAC;YACF,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAG/D,oBAAoB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,SAAiB,EAAE,EAAE;gBAC9E,IAAI,SAAS,KAAK,WAAW;oBAAE,OAAO,YAAY,CAAC;gBACnD,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;YAEH,eAAe,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CAAC;YAE9E,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAC3C,YAAY,EACZ,MAAM,CAAC,gBAAgB,CAAC;gBACvB,GAAG,EAAE,4BAA4B;gBACjC,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC7B,UAAU,EAAE,eAAe;iBAC3B,CAAC;aACF,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YAC3D,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAElE,qBAAqB,CAAC;gBACrB,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,SAAS;gBACxB,SAAS,EAAE,SAAS;aACpB,CAAC,CAAC;YAEH,eAAe,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CAAC;YAE9E,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAC3C,YAAY,EACZ,MAAM,CAAC,gBAAgB,CAAC;gBACvB,IAAI,EAAE;oBACL,iBAAiB,EAAE,UAAU;oBAC7B,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,SAAS;oBACrB,gBAAgB,EAAE;wBACjB,IAAI,EAAE,MAAM;qBACZ;iBACD;aACD,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACtD,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAClE,qBAAqB,CAAC;gBACrB,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;gBAC1D,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,IAAI;aAClB,CAAC,CAAC;YAGH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YACrC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,MAAM,CACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoD,CAAC,CACvE,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAkB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const SendZenTrigger_node_1 = require("../../nodes/SendZen/SendZenTrigger.node");
|
|
4
|
+
describe('SendZenTrigger', () => {
|
|
5
|
+
let node;
|
|
6
|
+
let description;
|
|
7
|
+
beforeAll(() => {
|
|
8
|
+
node = new SendZenTrigger_node_1.SendZenTrigger();
|
|
9
|
+
description = node.description;
|
|
10
|
+
});
|
|
11
|
+
describe('description', () => {
|
|
12
|
+
it('should have the correct static properties', () => {
|
|
13
|
+
expect(description.name).toBe('sendZenTrigger');
|
|
14
|
+
expect(description.displayName).toBe('SendZen Trigger');
|
|
15
|
+
expect(description.group).toEqual(['trigger']);
|
|
16
|
+
expect(description.version).toBe(1);
|
|
17
|
+
expect(description.subtitle).toBe('On Message Received');
|
|
18
|
+
expect(description.description).toBe('Trigger when a WhatsApp incoming message is received via SendZen Services');
|
|
19
|
+
expect(description.defaults).toEqual({ name: 'Message Received Trigger' });
|
|
20
|
+
expect(description.inputs).toEqual([]);
|
|
21
|
+
expect(description.outputs).toEqual(['main']);
|
|
22
|
+
});
|
|
23
|
+
it('should have optional webhook credentials for signature verification', () => {
|
|
24
|
+
expect(description.credentials).toEqual([
|
|
25
|
+
{
|
|
26
|
+
name: 'sendZenWebhookApi',
|
|
27
|
+
required: false,
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
});
|
|
31
|
+
it('should have the correct webhook definition', () => {
|
|
32
|
+
var _a, _b, _c, _d, _e;
|
|
33
|
+
expect(description.webhooks).toBeInstanceOf(Array);
|
|
34
|
+
expect((_a = description.webhooks) === null || _a === void 0 ? void 0 : _a[0]).toBeDefined();
|
|
35
|
+
expect((_b = description.webhooks) === null || _b === void 0 ? void 0 : _b[0].name).toBe('default');
|
|
36
|
+
expect((_c = description.webhooks) === null || _c === void 0 ? void 0 : _c[0].httpMethod).toBe('={{$parameter["httpMethod"]}}');
|
|
37
|
+
expect((_d = description.webhooks) === null || _d === void 0 ? void 0 : _d[0].path).toBe('sendzen-webhook');
|
|
38
|
+
expect((_e = description.webhooks) === null || _e === void 0 ? void 0 : _e[0].isFullPath).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
it('should have the correct properties for the UI', () => {
|
|
41
|
+
const properties = description.properties;
|
|
42
|
+
expect(properties).toBeInstanceOf(Array);
|
|
43
|
+
expect(properties).toHaveLength(1);
|
|
44
|
+
const httpMethodProperty = properties === null || properties === void 0 ? void 0 : properties[0];
|
|
45
|
+
expect(httpMethodProperty === null || httpMethodProperty === void 0 ? void 0 : httpMethodProperty.name).toBe('httpMethod');
|
|
46
|
+
expect(httpMethodProperty === null || httpMethodProperty === void 0 ? void 0 : httpMethodProperty.displayName).toBe('HTTP Method');
|
|
47
|
+
expect(httpMethodProperty === null || httpMethodProperty === void 0 ? void 0 : httpMethodProperty.type).toBe('options');
|
|
48
|
+
expect(httpMethodProperty === null || httpMethodProperty === void 0 ? void 0 : httpMethodProperty.default).toBe('POST');
|
|
49
|
+
expect(httpMethodProperty === null || httpMethodProperty === void 0 ? void 0 : httpMethodProperty.options).toEqual([{ name: 'POST', value: 'POST' }]);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('webhook', () => {
|
|
53
|
+
it('should process the incoming request body and return it as workflowData', async () => {
|
|
54
|
+
var _a;
|
|
55
|
+
const mockWebhookData = {
|
|
56
|
+
contact: {
|
|
57
|
+
name: 'John Doe',
|
|
58
|
+
wa_id: '15551234567',
|
|
59
|
+
},
|
|
60
|
+
message: {
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: {
|
|
63
|
+
body: 'Hello from SendZen!',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
const mockContext = {
|
|
68
|
+
getRequestObject: jest.fn().mockReturnValue({
|
|
69
|
+
body: mockWebhookData,
|
|
70
|
+
headers: {},
|
|
71
|
+
params: {},
|
|
72
|
+
query: {},
|
|
73
|
+
}),
|
|
74
|
+
getResponseObject: jest.fn().mockReturnValue({
|
|
75
|
+
status: jest.fn().mockReturnThis(),
|
|
76
|
+
send: jest.fn(),
|
|
77
|
+
json: jest.fn(),
|
|
78
|
+
}),
|
|
79
|
+
helpers: {
|
|
80
|
+
returnJsonArray: jest.fn((data) => {
|
|
81
|
+
return data;
|
|
82
|
+
}),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
const result = await node.webhook.call(mockContext);
|
|
86
|
+
expect((_a = mockContext.helpers) === null || _a === void 0 ? void 0 : _a.returnJsonArray).toHaveBeenCalledWith(mockWebhookData);
|
|
87
|
+
expect(result).toBeDefined();
|
|
88
|
+
expect(result.workflowData).toEqual([mockWebhookData]);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=sendZenTrigger.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendZenTrigger.test.js","sourceRoot":"","sources":["../../../tests/nodes/sendZenTrigger.test.ts"],"names":[],"mappings":";;AAkHA,iFAAyE;AAEzE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,IAAI,IAAoB,CAAC;IACzB,IAAI,WAAiC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,GAAG,IAAI,oCAAc,EAAE,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAChC,CAAC,CAAC,CAAC;IAGH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,CACnC,2EAA2E,CAC3E,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC9E,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;gBACvC;oBACC,IAAI,EAAE,mBAAmB;oBACzB,QAAQ,EAAE,KAAK;iBACf;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;;YACrD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,MAAA,WAAW,CAAC,QAAQ,0CAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAChD,MAAM,CAAC,MAAA,WAAW,CAAC,QAAQ,0CAAG,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAA,WAAW,CAAC,QAAQ,0CAAG,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACnF,MAAM,CAAC,MAAA,WAAW,CAAC,QAAQ,0CAAG,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAA,WAAW,CAAC,QAAQ,0CAAG,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACxD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEnC,MAAM,kBAAkB,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5D,MAAM,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAGH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;;YAEvF,MAAM,eAAe,GAAG;gBACvB,OAAO,EAAE;oBACR,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,aAAa;iBACpB;gBACD,OAAO,EAAE;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACL,IAAI,EAAE,qBAAqB;qBAC3B;iBACD;aACD,CAAC;YAIF,MAAM,WAAW,GAA+B;gBAE/C,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;oBAC3C,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,EAAE;iBACT,CAAC;gBAEF,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;oBAC5C,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;oBAClC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;oBACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;iBACf,CAAC;gBAEF,OAAO,EAAE;oBAER,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;wBAEjC,OAAO,IAAI,CAAC;oBACb,CAAC,CAAC;iBACK;aACR,CAAC;YAIF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAgC,CAAC,CAAC;YAIzE,MAAM,CAAC,MAAA,WAAW,CAAC,OAAO,0CAAE,eAAe,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAGnF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|