@muench-dev/n8n-nodes-bluesky 2.8.3 → 2.10.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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const BlueskyV2_node_1 = require("./BlueskyV2.node");
4
+ const mockLoginInstance = jest.fn();
5
+ const mockPostInstance = jest.fn();
6
+ const mockDeletePostInstance = jest.fn();
7
+ const mockLikeInstance = jest.fn();
8
+ const mockDeleteLikeInstance = jest.fn();
9
+ const mockRepostInstance = jest.fn();
10
+ const mockDeleteRepostInstance = jest.fn();
11
+ const mockGetAuthorFeedInstance = jest.fn();
12
+ const mockGetTimelineInstance = jest.fn();
13
+ const mockGetProfileInstance = jest.fn();
14
+ const mockMuteInstance = jest.fn();
15
+ const mockUnmuteInstance = jest.fn();
16
+ const mockGraphBlockCreateInstance = jest.fn();
17
+ const mockGraphBlockDeleteInstance = jest.fn();
18
+ jest.mock('@atproto/api', () => {
19
+ const actualAtprotoApi = jest.requireActual('@atproto/api');
20
+ return {
21
+ ...actualAtprotoApi,
22
+ AtpAgent: jest.fn().mockImplementation(() => ({
23
+ session: { did: 'test-did' },
24
+ login: mockLoginInstance,
25
+ post: mockPostInstance,
26
+ deletePost: mockDeletePostInstance,
27
+ like: mockLikeInstance,
28
+ deleteLike: mockDeleteLikeInstance,
29
+ repost: mockRepostInstance,
30
+ deleteRepost: mockDeleteRepostInstance,
31
+ getAuthorFeed: mockGetAuthorFeedInstance,
32
+ getTimeline: mockGetTimelineInstance,
33
+ getProfile: mockGetProfileInstance,
34
+ mute: mockMuteInstance,
35
+ unmute: mockUnmuteInstance,
36
+ app: {
37
+ bsky: {
38
+ graph: {
39
+ block: {
40
+ create: mockGraphBlockCreateInstance,
41
+ delete: mockGraphBlockDeleteInstance,
42
+ },
43
+ },
44
+ },
45
+ },
46
+ })),
47
+ };
48
+ });
49
+ const mockBaseDescription = {
50
+ displayName: 'Bluesky Test Node',
51
+ name: 'blueskyTestNode',
52
+ group: ['social'],
53
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
54
+ description: 'Interact with Bluesky API (v2)',
55
+ };
56
+ describe('BlueskyV2', () => {
57
+ let node;
58
+ let executeFunctions;
59
+ beforeEach(() => {
60
+ mockLoginInstance.mockReset().mockResolvedValue({ data: { did: 'test-did' } });
61
+ mockPostInstance.mockReset();
62
+ mockDeletePostInstance.mockReset();
63
+ mockLikeInstance.mockReset();
64
+ mockDeleteLikeInstance.mockReset();
65
+ mockRepostInstance.mockReset();
66
+ mockDeleteRepostInstance.mockReset();
67
+ mockGetAuthorFeedInstance.mockReset();
68
+ mockGetTimelineInstance.mockReset();
69
+ mockGetProfileInstance.mockReset();
70
+ mockMuteInstance.mockReset();
71
+ mockUnmuteInstance.mockReset();
72
+ mockGraphBlockCreateInstance.mockReset();
73
+ mockGraphBlockDeleteInstance.mockReset();
74
+ node = new BlueskyV2_node_1.BlueskyV2(mockBaseDescription);
75
+ executeFunctions = {
76
+ getCredentials: jest.fn().mockResolvedValue({
77
+ identifier: 'test-identifier',
78
+ appPassword: 'test-password',
79
+ serviceUrl: 'https://bsky.social',
80
+ }),
81
+ getNodeParameter: jest.fn(),
82
+ getInputData: jest.fn().mockReturnValue([{ json: {} }]),
83
+ getHelpers: jest.fn().mockReturnValue({
84
+ getBinaryDataBuffer: jest.fn(),
85
+ }),
86
+ continueOnFail: jest.fn().mockReturnValue(false),
87
+ };
88
+ });
89
+ afterEach(() => {
90
+ jest.clearAllMocks();
91
+ });
92
+ it('should be defined', () => {
93
+ expect(node).toBeDefined();
94
+ });
95
+ describe('post operation', () => {
96
+ it('should create a post successfully', async () => {
97
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
98
+ if (name === 'operation')
99
+ return 'post';
100
+ if (name === 'postText')
101
+ return 'This is a test post';
102
+ if (name === 'langs')
103
+ return ['en'];
104
+ if (name === 'websiteCard')
105
+ return { details: { uri: 'https://example.com', title: 'Example', description: 'An example website.', fetchOpenGraphTags: true } };
106
+ return null;
107
+ });
108
+ const mockPostApiResponse = { uri: 'at://did:plc:test/app.bsky.feed.post/123', cid: 'bafy...' };
109
+ mockPostInstance.mockResolvedValue(mockPostApiResponse);
110
+ const result = (await node.execute.call(executeFunctions));
111
+ expect(result[0][0].json.uri).toBe(mockPostApiResponse.uri);
112
+ expect(result[0][0].json.cid).toBe(mockPostApiResponse.cid);
113
+ expect(mockLoginInstance).toHaveBeenCalledWith({ identifier: 'test-identifier', password: 'test-password' });
114
+ expect(mockPostInstance).toHaveBeenCalled();
115
+ });
116
+ it('should handle errors when creating a post', async () => {
117
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
118
+ if (name === 'operation')
119
+ return 'post';
120
+ if (name === 'postText')
121
+ return 'This is a test post';
122
+ if (name === 'websiteCard')
123
+ return {};
124
+ return null;
125
+ });
126
+ const errorMessage = 'Failed to create post';
127
+ mockPostInstance.mockRejectedValue(new Error(errorMessage));
128
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
129
+ expect(mockLoginInstance).toHaveBeenCalledWith({ identifier: 'test-identifier', password: 'test-password' });
130
+ expect(mockPostInstance).toHaveBeenCalled();
131
+ });
132
+ });
133
+ describe('deletePost operation', () => {
134
+ it('should delete a post successfully', async () => {
135
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
136
+ if (name === 'operation')
137
+ return 'deletePost';
138
+ if (name === 'uri')
139
+ return 'at://did:plc:test-repo/app.bsky.feed.post/123';
140
+ return null;
141
+ });
142
+ mockDeletePostInstance.mockResolvedValue(undefined);
143
+ await node.execute.call(executeFunctions);
144
+ expect(mockLoginInstance).toHaveBeenCalled();
145
+ expect(mockDeletePostInstance).toHaveBeenCalledWith('at://did:plc:test-repo/app.bsky.feed.post/123');
146
+ });
147
+ it('should handle errors when deleting a post', async () => {
148
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
149
+ if (name === 'operation')
150
+ return 'deletePost';
151
+ if (name === 'uri')
152
+ return 'at://did:plc:test-repo/app.bsky.feed.post/123';
153
+ return null;
154
+ });
155
+ const errorMessage = 'Failed to delete post';
156
+ mockDeletePostInstance.mockRejectedValue(new Error(errorMessage));
157
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
158
+ expect(mockDeletePostInstance).toHaveBeenCalledWith('at://did:plc:test-repo/app.bsky.feed.post/123');
159
+ });
160
+ });
161
+ describe('like operation', () => {
162
+ it('should like a post successfully', async () => {
163
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
164
+ if (name === 'operation')
165
+ return 'like';
166
+ if (name === 'uri')
167
+ return 'at://did:plc:test/app.bsky.feed.post/123';
168
+ if (name === 'cid')
169
+ return 'bafy...';
170
+ return null;
171
+ });
172
+ const mockLikeApiResponse = { uri: 'at://did:plc:test/app.bsky.feed.like/456', cid: 'bafy-like-cid' };
173
+ mockLikeInstance.mockResolvedValue(mockLikeApiResponse);
174
+ const result = (await node.execute.call(executeFunctions));
175
+ expect(result[0][0].json.uri).toBe(mockLikeApiResponse.uri);
176
+ expect(mockLoginInstance).toHaveBeenCalled();
177
+ expect(mockLikeInstance).toHaveBeenCalledWith('at://did:plc:test/app.bsky.feed.post/123', 'bafy...');
178
+ });
179
+ it('should handle errors when liking a post', async () => {
180
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
181
+ if (name === 'operation')
182
+ return 'like';
183
+ if (name === 'uri')
184
+ return 'at://did:plc:test/app.bsky.feed.post/123';
185
+ if (name === 'cid')
186
+ return 'bafy...';
187
+ return null;
188
+ });
189
+ const errorMessage = 'Failed to like post';
190
+ mockLikeInstance.mockRejectedValue(new Error(errorMessage));
191
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
192
+ });
193
+ });
194
+ describe('deleteLike operation', () => {
195
+ it('should delete a like successfully', async () => {
196
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
197
+ if (name === 'operation')
198
+ return 'deleteLike';
199
+ if (name === 'uri')
200
+ return 'at://did:plc:test-user-did/app.bsky.feed.like/selfLikeRkey';
201
+ return null;
202
+ });
203
+ mockDeleteLikeInstance.mockResolvedValue(undefined);
204
+ await node.execute.call(executeFunctions);
205
+ expect(mockDeleteLikeInstance).toHaveBeenCalledWith('at://did:plc:test-user-did/app.bsky.feed.like/selfLikeRkey');
206
+ });
207
+ it('should handle errors when deleting a like', async () => {
208
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
209
+ if (name === 'operation')
210
+ return 'deleteLike';
211
+ if (name === 'uri')
212
+ return 'at://did:plc:test-user-did/app.bsky.feed.like/selfLikeRkey';
213
+ return null;
214
+ });
215
+ const errorMessage = 'Failed to delete like';
216
+ mockDeleteLikeInstance.mockRejectedValue(new Error(errorMessage));
217
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
218
+ });
219
+ });
220
+ describe('repost operation', () => {
221
+ it('should repost a post successfully', async () => {
222
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
223
+ if (name === 'operation')
224
+ return 'repost';
225
+ if (name === 'uri')
226
+ return 'at://did:plc:original-author/app.bsky.feed.post/originalPostRkey';
227
+ if (name === 'cid')
228
+ return 'bafy-original-post-cid';
229
+ return null;
230
+ });
231
+ const mockRepostApiResponse = { uri: 'at://did:plc:test-did/app.bsky.feed.repost/myRepostRkey', cid: 'bafy-repost-cid' };
232
+ mockRepostInstance.mockResolvedValue(mockRepostApiResponse);
233
+ const result = (await node.execute.call(executeFunctions));
234
+ expect(result[0][0].json.uri).toBe(mockRepostApiResponse.uri);
235
+ expect(mockRepostInstance).toHaveBeenCalledWith('at://did:plc:original-author/app.bsky.feed.post/originalPostRkey', 'bafy-original-post-cid');
236
+ });
237
+ it('should handle errors when reposting a post', async () => {
238
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
239
+ if (name === 'operation')
240
+ return 'repost';
241
+ if (name === 'uri')
242
+ return 'at://did:plc:original-author/app.bsky.feed.post/originalPostRkey';
243
+ if (name === 'cid')
244
+ return 'bafy-original-post-cid';
245
+ return null;
246
+ });
247
+ const errorMessage = 'Failed to repost post';
248
+ mockRepostInstance.mockRejectedValue(new Error(errorMessage));
249
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
250
+ });
251
+ });
252
+ describe('deleteRepost operation', () => {
253
+ it('should delete a repost successfully', async () => {
254
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
255
+ if (name === 'operation')
256
+ return 'deleteRepost';
257
+ if (name === 'uri')
258
+ return 'at://did:plc:test-did/app.bsky.feed.repost/myRepostRkey';
259
+ return null;
260
+ });
261
+ mockDeleteRepostInstance.mockResolvedValue(undefined);
262
+ await node.execute.call(executeFunctions);
263
+ expect(mockDeleteRepostInstance).toHaveBeenCalledWith('at://did:plc:test-did/app.bsky.feed.repost/myRepostRkey');
264
+ });
265
+ it('should handle errors when deleting a repost', async () => {
266
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
267
+ if (name === 'operation')
268
+ return 'deleteRepost';
269
+ if (name === 'uri')
270
+ return 'at://did:plc:test-did/app.bsky.feed.repost/myRepostRkey';
271
+ return null;
272
+ });
273
+ const errorMessage = 'Failed to delete repost';
274
+ mockDeleteRepostInstance.mockRejectedValue(new Error(errorMessage));
275
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
276
+ });
277
+ });
278
+ describe('getAuthorFeed operation', () => {
279
+ it('should get author feed successfully', async () => {
280
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
281
+ if (name === 'operation')
282
+ return 'getAuthorFeed';
283
+ if (name === 'actor')
284
+ return 'did:plc:target-author';
285
+ if (name === 'limit')
286
+ return 10;
287
+ return null;
288
+ });
289
+ const mockFeedData = { data: { feed: [{ post: { text: 'Post 1' } }], cursor: 'cursor-123' } };
290
+ mockGetAuthorFeedInstance.mockResolvedValue(mockFeedData);
291
+ await node.execute.call(executeFunctions);
292
+ expect(mockGetAuthorFeedInstance).toHaveBeenCalledWith({ actor: 'did:plc:target-author', limit: 10, cursor: undefined });
293
+ });
294
+ it('should handle errors when getting author feed', async () => {
295
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
296
+ if (name === 'operation')
297
+ return 'getAuthorFeed';
298
+ if (name === 'actor')
299
+ return 'did:plc:target-author';
300
+ if (name === 'limit')
301
+ return 50;
302
+ return null;
303
+ });
304
+ const errorMessage = 'Failed to get author feed';
305
+ mockGetAuthorFeedInstance.mockRejectedValue(new Error(errorMessage));
306
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
307
+ });
308
+ });
309
+ describe('getTimeline operation', () => {
310
+ it('should get timeline successfully', async () => {
311
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
312
+ if (name === 'operation')
313
+ return 'getTimeline';
314
+ if (name === 'algorithm')
315
+ return 'reverse-chronological';
316
+ if (name === 'limit')
317
+ return 20;
318
+ return null;
319
+ });
320
+ const mockTimelineData = { data: { feed: [{ post: { text: 'Timeline Post 1' } }], cursor: 'cursor-456' } };
321
+ mockGetTimelineInstance.mockResolvedValue(mockTimelineData);
322
+ await node.execute.call(executeFunctions);
323
+ expect(mockGetTimelineInstance).toHaveBeenCalledWith({ limit: 20 });
324
+ });
325
+ it('should handle errors when getting timeline', async () => {
326
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
327
+ if (name === 'operation')
328
+ return 'getTimeline';
329
+ if (name === 'limit')
330
+ return 50;
331
+ return null;
332
+ });
333
+ const errorMessage = 'Failed to get timeline';
334
+ mockGetTimelineInstance.mockRejectedValue(new Error(errorMessage));
335
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
336
+ });
337
+ });
338
+ describe('getProfile operation', () => {
339
+ it('should get profile successfully', async () => {
340
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
341
+ if (name === 'operation')
342
+ return 'getProfile';
343
+ if (name === 'actor')
344
+ return 'did:plc:target-actor';
345
+ return null;
346
+ });
347
+ const mockProfileData = { data: { did: 'did:plc:target-actor', handle: 'target.bsky.social' } };
348
+ mockGetProfileInstance.mockResolvedValue(mockProfileData);
349
+ const result = (await node.execute.call(executeFunctions));
350
+ expect(result[0][0].json).toEqual(mockProfileData.data);
351
+ expect(mockGetProfileInstance).toHaveBeenCalledWith({ actor: 'did:plc:target-actor' });
352
+ });
353
+ it('should handle errors when getting profile', async () => {
354
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
355
+ if (name === 'operation')
356
+ return 'getProfile';
357
+ if (name === 'actor')
358
+ return 'did:plc:target-actor';
359
+ return null;
360
+ });
361
+ const errorMessage = 'Failed to get profile';
362
+ mockGetProfileInstance.mockRejectedValue(new Error(errorMessage));
363
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
364
+ });
365
+ });
366
+ describe('mute operation', () => {
367
+ it('should mute an actor successfully', async () => {
368
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
369
+ if (name === 'operation')
370
+ return 'mute';
371
+ if (name === 'did')
372
+ return 'did:plc:target-to-mute';
373
+ return null;
374
+ });
375
+ mockMuteInstance.mockResolvedValue({ success: true });
376
+ const result = (await node.execute.call(executeFunctions));
377
+ expect(result[0][0].json.success).toBe(true);
378
+ expect(mockMuteInstance).toHaveBeenCalledWith('did:plc:target-to-mute');
379
+ });
380
+ it('should handle errors when muting an actor', async () => {
381
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
382
+ if (name === 'operation')
383
+ return 'mute';
384
+ if (name === 'did')
385
+ return 'did:plc:target-to-mute';
386
+ return null;
387
+ });
388
+ const errorMessage = 'Failed to mute actor';
389
+ mockMuteInstance.mockRejectedValue(new Error(errorMessage));
390
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
391
+ });
392
+ });
393
+ describe('unmute operation', () => {
394
+ it('should unmute an actor successfully', async () => {
395
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
396
+ if (name === 'operation')
397
+ return 'unmute';
398
+ if (name === 'did')
399
+ return 'did:plc:target-to-unmute';
400
+ return null;
401
+ });
402
+ mockUnmuteInstance.mockResolvedValue({ success: true });
403
+ const result = (await node.execute.call(executeFunctions));
404
+ expect(result[0][0].json.success).toBe(true);
405
+ expect(mockUnmuteInstance).toHaveBeenCalledWith('did:plc:target-to-unmute');
406
+ });
407
+ it('should handle errors when unmuting an actor', async () => {
408
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
409
+ if (name === 'operation')
410
+ return 'unmute';
411
+ if (name === 'did')
412
+ return 'did:plc:target-to-unmute';
413
+ return null;
414
+ });
415
+ const errorMessage = 'Failed to unmute actor';
416
+ mockUnmuteInstance.mockRejectedValue(new Error(errorMessage));
417
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
418
+ });
419
+ });
420
+ describe('block operation', () => {
421
+ it('should block an actor successfully', async () => {
422
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
423
+ if (name === 'operation')
424
+ return 'block';
425
+ if (name === 'did')
426
+ return 'did:plc:target-to-block';
427
+ return null;
428
+ });
429
+ const mockBlockApiResponse = { uri: 'at://did:plc:test-did/app.bsky.graph.block/blockRkey' };
430
+ mockGraphBlockCreateInstance.mockResolvedValue(mockBlockApiResponse);
431
+ const result = (await node.execute.call(executeFunctions));
432
+ expect(result[0][0].json.uri).toBe(mockBlockApiResponse.uri);
433
+ expect(mockGraphBlockCreateInstance).toHaveBeenCalledWith({ repo: 'test-did' }, {
434
+ subject: 'did:plc:target-to-block',
435
+ createdAt: expect.any(String),
436
+ });
437
+ });
438
+ it('should handle errors when blocking an actor', async () => {
439
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
440
+ if (name === 'operation')
441
+ return 'block';
442
+ if (name === 'did')
443
+ return 'did:plc:target-to-block';
444
+ return null;
445
+ });
446
+ const errorMessage = 'Failed to block actor';
447
+ mockGraphBlockCreateInstance.mockRejectedValue(new Error(errorMessage));
448
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
449
+ });
450
+ });
451
+ describe('unblock operation', () => {
452
+ it('should unblock an actor successfully', async () => {
453
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
454
+ if (name === 'operation')
455
+ return 'unblock';
456
+ if (name === 'uri')
457
+ return 'at://did:plc:test-did/app.bsky.graph.block/blockRkey';
458
+ return null;
459
+ });
460
+ mockGraphBlockDeleteInstance.mockResolvedValue(undefined);
461
+ await node.execute.call(executeFunctions);
462
+ expect(mockGraphBlockDeleteInstance).toHaveBeenCalledWith({
463
+ repo: 'test-did',
464
+ rkey: 'blockRkey',
465
+ });
466
+ });
467
+ it('should handle errors when unblocking an actor', async () => {
468
+ executeFunctions.getNodeParameter.mockImplementation((name) => {
469
+ if (name === 'operation')
470
+ return 'unblock';
471
+ if (name === 'uri')
472
+ return 'at://did:plc:test-did/app.bsky.graph.block/blockRkey';
473
+ return null;
474
+ });
475
+ const errorMessage = 'Failed to unblock actor';
476
+ mockGraphBlockDeleteInstance.mockRejectedValue(new Error(errorMessage));
477
+ await expect(node.execute.call(executeFunctions)).rejects.toThrow(errorMessage);
478
+ });
479
+ });
480
+ });
481
+ //# sourceMappingURL=BlueskyTestNode.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlueskyTestNode.node.js","sourceRoot":"","sources":["../../../../nodes/Bluesky/V2/BlueskyTestNode.node.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { INodeExecutionData, IExecuteFunctions, INodeType, INodeTypeDescription, INodeTypeBaseDescription } from 'n8n-workflow';
1
+ import { INodeExecutionData, IExecuteFunctions, INodeType, INodeTypeDescription, INodeTypeBaseDescription } from 'n8n-workflow';
2
2
  export declare class BlueskyV2 implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  constructor(baseDescription: INodeTypeBaseDescription);