summaryrefslogtreecommitdiff
path: root/packages/backend/test/unit/UserWebhookService.ts
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-02-16 21:42:35 +0000
committerHazelnoot <acomputerdog@gmail.com>2025-02-16 21:42:35 +0000
commit2d7918a9b74a1c049c2e520b0331ba6f161c1a16 (patch)
treec2e30ecca540b187eee0659afa249bad51b45fe3 /packages/backend/test/unit/UserWebhookService.ts
parentmerge: fill `myReaction` in more cases - may fix #944 (!907) (diff)
parentMerge branch 'develop' into merge/2024-02-03 (diff)
downloadsharkey-2d7918a9b74a1c049c2e520b0331ba6f161c1a16.tar.gz
sharkey-2d7918a9b74a1c049c2e520b0331ba6f161c1a16.tar.bz2
sharkey-2d7918a9b74a1c049c2e520b0331ba6f161c1a16.zip
merge: Merge upstream 2025.2.0 (!886)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/886 Approved-by: Marie <github@yuugi.dev> Approved-by: Amber Null <puppygirlhornyposting@gmail.com>
Diffstat (limited to 'packages/backend/test/unit/UserWebhookService.ts')
-rw-r--r--packages/backend/test/unit/UserWebhookService.ts91
1 files changed, 89 insertions, 2 deletions
diff --git a/packages/backend/test/unit/UserWebhookService.ts b/packages/backend/test/unit/UserWebhookService.ts
index 0e88835a02..db8f96df28 100644
--- a/packages/backend/test/unit/UserWebhookService.ts
+++ b/packages/backend/test/unit/UserWebhookService.ts
@@ -1,4 +1,3 @@
-
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
@@ -71,7 +70,7 @@ describe('UserWebhookService', () => {
LoggerService,
GlobalEventService,
{
- provide: QueueService, useFactory: () => ({ systemWebhookDeliver: jest.fn() }),
+ provide: QueueService, useFactory: () => ({ userWebhookDeliver: jest.fn() }),
},
],
})
@@ -242,4 +241,92 @@ describe('UserWebhookService', () => {
});
});
});
+
+ describe('アプリを毎回作り直す必要があるグループ', () => {
+ beforeEach(async () => {
+ await beforeAllImpl();
+ await beforeEachImpl();
+ });
+
+ afterEach(async () => {
+ await afterEachImpl();
+ await afterAllImpl();
+ });
+
+ describe('enqueueUserWebhook', () => {
+ test('キューに追加成功', async () => {
+ const webhook = await createWebhook({
+ active: true,
+ on: ['note'],
+ });
+ await service.enqueueUserWebhook(webhook.userId, 'note', { foo: 'bar' } as any);
+
+ expect(queueService.userWebhookDeliver).toHaveBeenCalledTimes(1);
+ expect(queueService.userWebhookDeliver.mock.calls[0][0] as MiWebhook).toEqual(webhook);
+ });
+
+ test('非アクティブなWebhookはキューに追加されない', async () => {
+ const webhook = await createWebhook({
+ active: false,
+ on: ['note'],
+ });
+ await service.enqueueUserWebhook(webhook.userId, 'note', { foo: 'bar' } as any);
+
+ expect(queueService.userWebhookDeliver).not.toHaveBeenCalled();
+ });
+
+ test('未許可のイベント種別が渡された場合はWebhookはキューに追加されない', async () => {
+ const webhook1 = await createWebhook({
+ active: true,
+ on: [],
+ });
+ const webhook2 = await createWebhook({
+ active: true,
+ on: ['note'],
+ });
+ await service.enqueueUserWebhook(webhook1.userId, 'renote', { foo: 'bar' } as any);
+ await service.enqueueUserWebhook(webhook2.userId, 'renote', { foo: 'bar' } as any);
+
+ expect(queueService.userWebhookDeliver).not.toHaveBeenCalled();
+ });
+
+ test('ユーザIDが異なるWebhookはキューに追加されない', async () => {
+ const webhook = await createWebhook({
+ active: true,
+ on: ['note'],
+ });
+ await service.enqueueUserWebhook(idService.gen(), 'note', { foo: 'bar' } as any);
+
+ expect(queueService.userWebhookDeliver).not.toHaveBeenCalled();
+ });
+
+ test('混在した時、有効かつ許可されたイベント種別のみ', async () => {
+ const userId = root.id;
+ const webhook1 = await createWebhook({
+ userId,
+ active: true,
+ on: ['note'],
+ });
+ const webhook2 = await createWebhook({
+ userId,
+ active: true,
+ on: ['renote'],
+ });
+ const webhook3 = await createWebhook({
+ userId,
+ active: false,
+ on: ['note'],
+ });
+ const webhook4 = await createWebhook({
+ userId,
+ active: false,
+ on: ['renote'],
+ });
+ await service.enqueueUserWebhook(userId, 'note', { foo: 'bar' } as any);
+
+ expect(queueService.userWebhookDeliver).toHaveBeenCalledTimes(1);
+ expect(queueService.userWebhookDeliver.mock.calls[0][0] as MiWebhook).toEqual(webhook1);
+ });
+ });
+ });
});