mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-27 15:24:56 +00:00
87 lines
2.4 KiB
TypeScript
87 lines
2.4 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { createInMemoryStore } from '../../../src/core/store/in-memory-store'
|
|
import { createUser } from '../../../src/core/entities/user'
|
|
import { createLuaScript, deleteLuaScript, listLuaScripts, updateLuaScript } from '../../../src/core/entities/lua-script'
|
|
|
|
describe('lua script in-memory operations', () => {
|
|
it('creates, lists, updates, and deletes scripts', async () => {
|
|
const store = createInMemoryStore()
|
|
|
|
const userResult = await createUser(store, {
|
|
username: 'lua_owner',
|
|
email: 'lua_owner@example.com'
|
|
})
|
|
|
|
expect(userResult.success).toBe(true)
|
|
if (!userResult.success) return
|
|
|
|
const createResult = await createLuaScript(store, {
|
|
name: 'health_check',
|
|
description: 'Health check',
|
|
code: 'return true',
|
|
allowedGlobals: ['math'],
|
|
timeoutMs: 1000,
|
|
createdBy: userResult.data.id
|
|
})
|
|
|
|
expect(createResult.success).toBe(true)
|
|
if (!createResult.success) return
|
|
|
|
const listResult = await listLuaScripts(store, {
|
|
filter: { isSandboxed: true }
|
|
})
|
|
|
|
expect(listResult.success).toBe(true)
|
|
if (listResult.success) {
|
|
expect(listResult.data).toHaveLength(1)
|
|
}
|
|
|
|
const updateResult = await updateLuaScript(store, createResult.data.id, {
|
|
timeoutMs: 2000
|
|
})
|
|
|
|
expect(updateResult.success).toBe(true)
|
|
if (updateResult.success) {
|
|
expect(updateResult.data.timeoutMs).toBe(2000)
|
|
}
|
|
|
|
const deleteResult = await deleteLuaScript(store, createResult.data.id)
|
|
expect(deleteResult.success).toBe(true)
|
|
})
|
|
|
|
it('rejects duplicate script names', async () => {
|
|
const store = createInMemoryStore()
|
|
|
|
const userResult = await createUser(store, {
|
|
username: 'lua_owner',
|
|
email: 'lua_owner@example.com'
|
|
})
|
|
|
|
expect(userResult.success).toBe(true)
|
|
if (!userResult.success) return
|
|
|
|
const first = await createLuaScript(store, {
|
|
name: 'dupe',
|
|
code: 'return true',
|
|
allowedGlobals: ['math'],
|
|
timeoutMs: 1000,
|
|
createdBy: userResult.data.id
|
|
})
|
|
|
|
expect(first.success).toBe(true)
|
|
|
|
const second = await createLuaScript(store, {
|
|
name: 'dupe',
|
|
code: 'return true',
|
|
allowedGlobals: ['math'],
|
|
timeoutMs: 1000,
|
|
createdBy: userResult.data.id
|
|
})
|
|
|
|
expect(second.success).toBe(false)
|
|
if (!second.success) {
|
|
expect(second.error.code).toBe('CONFLICT')
|
|
}
|
|
})
|
|
})
|