Files
hermes-desktop/tests/server/model-run-prompt.test.ts
T
toor 01d9e301fc
Build / build (push) Canceled after 0s
Playwright / browser (push) Canceled after 0s
initialize Electron desktop app and remove unused files
2026-10-25 01:09:01 +08:00

44 lines
1.9 KiB
TypeScript

import { existsSync, mkdtempSync, readFileSync, rmSync } from 'fs'
import { tmpdir } from 'os'
import { join } from 'path'
import { afterEach, describe, expect, it, vi } from 'vitest'
const issueModelRunJwtMock = vi.hoisted(() => vi.fn(async () => 'model-run-token'))
const homes: string[] = []
vi.mock('../../packages/server/src/middleware/user-auth', () => ({
issueModelRunJwt: issueModelRunJwtMock,
}))
describe('model run prompt', () => {
afterEach(() => {
delete process.env.HERMES_WEB_UI_HOME
for (const home of homes.splice(0)) rmSync(home, { recursive: true, force: true })
})
it('stores the model-run token under the profile and keeps the token out of the prompt', async () => {
const home = mkdtempSync(join(tmpdir(), 'hermes-model-run-prompt-'))
homes.push(home)
process.env.HERMES_WEB_UI_HOME = home
const { writeModelRunProfileToken, modelRunProfileTokenPath } = await import('../../packages/server/src/services/hermes/run-chat/model-run-prompt')
await writeModelRunProfileToken({ id: 1, username: 'admin', role: 'super_admin' }, 'default')
const tokenPath = modelRunProfileTokenPath('default')
expect(issueModelRunJwtMock).toHaveBeenCalledWith({ id: 1, username: 'admin', role: 'super_admin' })
expect(tokenPath).toBe(join(home, 'profiles', 'default', '.model-run-token'))
expect(readFileSync(tokenPath, 'utf-8').trim()).toBe('model-run-token')
})
it('returns profile instructions without writing a token for anonymous runs', async () => {
const home = mkdtempSync(join(tmpdir(), 'hermes-model-run-prompt-'))
homes.push(home)
process.env.HERMES_WEB_UI_HOME = home
const { writeModelRunProfileToken, modelRunProfileTokenPath } = await import('../../packages/server/src/services/hermes/run-chat/model-run-prompt')
await writeModelRunProfileToken(undefined, 'research')
expect(existsSync(modelRunProfileTokenPath('research'))).toBe(false)
})
})