新增只读 Hermes 插件页 (#592)

* feat: add read-only plugins page

* fix: align plugins page i18n and header
This commit is contained in:
Zhicheng Han
2026-05-10 13:50:39 +02:00
committed by GitHub
parent 7cf3c70c92
commit 89f0127da6
17 changed files with 1349 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
const listMock = vi.fn(async (ctx: any) => {
ctx.body = { plugins: [], warnings: [], metadata: {} }
})
vi.mock('../../packages/server/src/controllers/hermes/plugins', () => ({
list: listMock,
}))
describe('plugin routes', () => {
beforeEach(() => {
vi.resetModules()
listMock.mockClear()
})
it('registers the plugins inventory route', async () => {
const { pluginRoutes } = await import('../../packages/server/src/routes/hermes/plugins')
const paths = pluginRoutes.stack.map((entry: any) => entry.path)
expect(paths).toEqual(expect.arrayContaining(['/api/hermes/plugins']))
})
it('delegates plugin listing to the controller', async () => {
const { pluginRoutes } = await import('../../packages/server/src/routes/hermes/plugins')
const layer = pluginRoutes.stack.find((entry: any) => entry.path === '/api/hermes/plugins')
const ctx: any = { body: null, params: {}, query: {} }
await layer.stack[0](ctx)
expect(listMock).toHaveBeenCalledWith(ctx)
expect(ctx.body).toEqual({ plugins: [], warnings: [], metadata: {} })
})
})