diff options
| author | dakkar <dakkar@thenautilus.net> | 2024-11-22 12:29:04 +0000 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2024-11-22 12:29:04 +0000 |
| commit | bc816cb166d907d38eb096a02c5f4f57d9a2f1a0 (patch) | |
| tree | a0e6b1dfeed8aa2b0543846eb65b8aae0ce631ad /packages/backend/src/core/WebhookTestService.ts | |
| parent | better wording for moderator inactivity messages (diff) | |
| parent | Release: 2024.11.0 (diff) | |
| download | sharkey-bc816cb166d907d38eb096a02c5f4f57d9a2f1a0.tar.gz sharkey-bc816cb166d907d38eb096a02c5f4f57d9a2f1a0.tar.bz2 sharkey-bc816cb166d907d38eb096a02c5f4f57d9a2f1a0.zip | |
Merge tag '2024.11.0' into feature/2024.10
Diffstat (limited to 'packages/backend/src/core/WebhookTestService.ts')
| -rw-r--r-- | packages/backend/src/core/WebhookTestService.ts | 68 |
1 files changed, 39 insertions, 29 deletions
diff --git a/packages/backend/src/core/WebhookTestService.ts b/packages/backend/src/core/WebhookTestService.ts index 0304cae355..746f289311 100644 --- a/packages/backend/src/core/WebhookTestService.ts +++ b/packages/backend/src/core/WebhookTestService.ts @@ -7,22 +7,16 @@ import { Injectable } from '@nestjs/common'; import { MiAbuseUserReport, MiNote, MiUser, MiWebhook } from '@/models/_.js'; import { bindThis } from '@/decorators.js'; import { MiSystemWebhook, type SystemWebhookEventType } from '@/models/SystemWebhook.js'; -import { SystemWebhookService } from '@/core/SystemWebhookService.js'; +import { AbuseReportPayload, SystemWebhookPayload, SystemWebhookService } from '@/core/SystemWebhookService.js'; import { Packed } from '@/misc/json-schema.js'; import { type WebhookEventTypes } from '@/models/Webhook.js'; -import { UserWebhookService } from '@/core/UserWebhookService.js'; +import { type UserWebhookPayload, UserWebhookService } from '@/core/UserWebhookService.js'; import { QueueService } from '@/core/QueueService.js'; import { ModeratorInactivityRemainingTime } from '@/queue/processors/CheckModeratorsActivityProcessorService.js'; const oneDayMillis = 24 * 60 * 60 * 1000; -type AbuseUserReportDto = Omit<MiAbuseUserReport, 'targetUser' | 'reporter' | 'assignee'> & { - targetUser: Packed<'UserLite'> | null, - reporter: Packed<'UserLite'> | null, - assignee: Packed<'UserLite'> | null, -}; - -function generateAbuseReport(override?: Partial<MiAbuseUserReport>): AbuseUserReportDto { +function generateAbuseReport(override?: Partial<MiAbuseUserReport>): AbuseReportPayload { const result: MiAbuseUserReport = { id: 'dummy-abuse-report1', targetUserId: 'dummy-target-user', @@ -89,6 +83,9 @@ function generateDummyUser(override?: Partial<MiUser>): MiUser { isExplorable: true, isHibernated: false, isDeleted: false, + requireSigninToViewContents: false, + makeNotesFollowersOnlyBefore: null, + makeNotesHiddenBefore: null, emojis: [], score: 0, host: null, @@ -322,10 +319,10 @@ export class WebhookTestService { * - 送信対象イベント(on)に関する設定 */ @bindThis - public async testUserWebhook( + public async testUserWebhook<T extends WebhookEventTypes>( params: { webhookId: MiWebhook['id'], - type: WebhookEventTypes, + type: T, override?: Partial<Omit<MiWebhook, 'id'>>, }, sender: MiUser | null, @@ -337,7 +334,7 @@ export class WebhookTestService { } const webhook = webhooks[0]; - const send = (contents: unknown) => { + const send = <U extends WebhookEventTypes>(type: U, contents: UserWebhookPayload<U>) => { const merged = { ...webhook, ...params.override, @@ -345,7 +342,7 @@ export class WebhookTestService { // テスト目的なのでUserWebhookServiceの機能を経由せず直接キューに追加する(チェック処理などをスキップする意図). // また、Jobの試行回数も1回だけ. - this.queueService.userWebhookDeliver(merged, params.type, contents, { attempts: 1 }); + this.queueService.userWebhookDeliver(merged, type, contents, { attempts: 1 }); }; const dummyNote1 = generateDummyNote({ @@ -377,33 +374,41 @@ export class WebhookTestService { switch (params.type) { case 'note': { - send(toPackedNote(dummyNote1)); + send('note', { note: toPackedNote(dummyNote1) }); break; } case 'reply': { - send(toPackedNote(dummyReply1)); + send('reply', { note: toPackedNote(dummyReply1) }); break; } case 'renote': { - send(toPackedNote(dummyRenote1)); + send('renote', { note: toPackedNote(dummyRenote1) }); break; } case 'mention': { - send(toPackedNote(dummyMention1)); + send('mention', { note: toPackedNote(dummyMention1) }); break; } case 'follow': { - send(toPackedUserDetailedNotMe(dummyUser1)); + send('follow', { user: toPackedUserDetailedNotMe(dummyUser1) }); break; } case 'followed': { - send(toPackedUserLite(dummyUser2)); + send('followed', { user: toPackedUserLite(dummyUser2) }); break; } case 'unfollow': { - send(toPackedUserDetailedNotMe(dummyUser3)); + send('unfollow', { user: toPackedUserDetailedNotMe(dummyUser3) }); break; } + // まだ実装されていない (#9485) + case 'reaction': + return; + default: { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const _exhaustiveAssertion: never = params.type; + return; + } } } @@ -416,10 +421,10 @@ export class WebhookTestService { * - 送信対象イベント(on)に関する設定 */ @bindThis - public async testSystemWebhook( + public async testSystemWebhook<T extends SystemWebhookEventType>( params: { webhookId: MiSystemWebhook['id'], - type: SystemWebhookEventType, + type: T, override?: Partial<Omit<MiSystemWebhook, 'id'>>, }, ) { @@ -429,7 +434,7 @@ export class WebhookTestService { } const webhook = webhooks[0]; - const send = (contents: unknown) => { + const send = <U extends SystemWebhookEventType>(type: U, contents: SystemWebhookPayload<U>) => { const merged = { ...webhook, ...params.override, @@ -437,12 +442,12 @@ export class WebhookTestService { // テスト目的なのでSystemWebhookServiceの機能を経由せず直接キューに追加する(チェック処理などをスキップする意図). // また、Jobの試行回数も1回だけ. - this.queueService.systemWebhookDeliver(merged, params.type, contents, { attempts: 1 }); + this.queueService.systemWebhookDeliver(merged, type, contents, { attempts: 1 }); }; switch (params.type) { case 'abuseReport': { - send(generateAbuseReport({ + send('abuseReport', generateAbuseReport({ targetUserId: dummyUser1.id, targetUser: dummyUser1, reporterId: dummyUser2.id, @@ -451,7 +456,7 @@ export class WebhookTestService { break; } case 'abuseReportResolved': { - send(generateAbuseReport({ + send('abuseReportResolved', generateAbuseReport({ targetUserId: dummyUser1.id, targetUser: dummyUser1, reporterId: dummyUser2.id, @@ -463,7 +468,7 @@ export class WebhookTestService { break; } case 'userCreated': { - send(toPackedUserLite(dummyUser1)); + send('userCreated', toPackedUserLite(dummyUser1)); break; } case 'inactiveModeratorsWarning': { @@ -473,15 +478,20 @@ export class WebhookTestService { asHours: 24, }; - send({ + send('inactiveModeratorsWarning', { remainingTime: dummyTime, }); break; } case 'inactiveModeratorsInvitationOnlyChanged': { - send({}); + send('inactiveModeratorsInvitationOnlyChanged', {}); break; } + default: { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const _exhaustiveAssertion: never = params.type; + return; + } } } } |