From 8528c4c39e60652bfcad19f9c0a12b82cc0a6e58 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 3 Mar 2025 16:36:38 -0600 Subject: [PATCH] Add more permission group tests --- .../pleromaAdminPermissionGroupsRoute.test.ts | 33 +++++++++++++++++++ .../pleromaAdminPermissionGroupsRoute.ts | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.test.ts b/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.test.ts index 1c1fcd18..84ad2e02 100644 --- a/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.test.ts +++ b/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.test.ts @@ -33,3 +33,36 @@ Deno.test('POST /admin promotes to admin', async () => { assertEquals(event.tags, [['d', pubkey], ['n', 'admin']]); }); + +Deno.test('POST /moderator promotes to moderator', async () => { + await using app = new TestApp(route); + const { conf, relay } = app.var; + + await app.admin(); + + const pawn = app.createUser(); + const pubkey = await pawn.signer.getPublicKey(); + + const response = await app.api.post('/moderator', { nicknames: [nip19.npubEncode(pubkey)] }); + const json = await response.json(); + + assertEquals(response.status, 200); + assertEquals(json, { is_moderator: true }); + + const [event] = await relay.query([{ kinds: [30382], authors: [await conf.signer.getPublicKey()], '#d': [pubkey] }]); + + assertEquals(event.tags, [['d', pubkey], ['n', 'moderator']]); +}); + +Deno.test('POST /:group with an invalid group returns 422', async () => { + await using app = new TestApp(route); + + await app.admin(); + + const pawn = app.createUser(); + const pubkey = await pawn.signer.getPublicKey(); + + const response = await app.api.post('/yolo', { nicknames: [nip19.npubEncode(pubkey)] }); + + assertEquals(response.status, 422); +}); diff --git a/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.ts b/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.ts index d2a0bb4f..1e7665d0 100644 --- a/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.ts +++ b/packages/ditto/routes/pleromaAdminPermissionGroupsRoute.ts @@ -34,7 +34,7 @@ route.post('/:group', userMiddleware({ role: 'admin' }), async (c) => { } } - return c.json({ is_admin: true }, 200); + return c.json({ [`is_${group}`]: true }, 200); }); export default route;