Arnaud 7fd4e39a3d
fix: crash when config is invalid (#1494)
Co-authored-by: Giuliano Mega <giuliano.mega@gmail.com>
2026-07-31 17:45:27 +00:00

53 lines
1.4 KiB
Nim

import std/json
import std/monotimes
import std/os
import std/strutils
import pkg/chronos
import pkg/results
import ../asynctest
import ../checktest
import ../../library/storage_thread_requests/requests/node_lifecycle_request
from ../../storage/storage import StorageServer
asyncchecksuite "Libstorage - config":
var server: StorageServer
test "rejects malformed JSON":
let request =
NodeLifecycleRequest.createShared(CREATE_NODE, """{"log-level": "debug"""")
let res = await request.process(addr server)
check res.isErr
if res.isErr:
check "unable to load configuration" in res.error
test "rejects an unknown option":
let request =
NodeLifecycleRequest.createShared(CREATE_NODE, """{"unknown": "debug"}""")
let res = await request.process(addr server)
check res.isErr
if res.isErr:
check "unable to load configuration" in res.error
test "accepts a valid config":
let dataDir = getTempDir() / "libstorage-config" / $getMonoTime()
defer:
removeDir(dataDir)
# %* escapes the path so that it can be used in JSON.
let config = $ %*{"data-dir": dataDir}
let request = NodeLifecycleRequest.createShared(CREATE_NODE, config.cstring)
let res = await request.process(addr server)
check res.isOk
let closeRequest = NodeLifecycleRequest.createShared(CLOSE_NODE)
check (await closeRequest.process(addr server)).isOk