mirror of
https://github.com/hansjone/netxops.git
synced 2026-10-13 08:13:19 +08:00
56 lines
2.1 KiB
JavaScript
56 lines
2.1 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { mkdtempSync, readFileSync, writeFileSync } from 'node:fs'
|
|
import { tmpdir } from 'node:os'
|
|
import { join } from 'node:path'
|
|
import {
|
|
mergeHostConfigForHeal,
|
|
NETXOPS_HOST_CONFIG_DEFAULTS,
|
|
writePatchIfUnchanged,
|
|
} from '../src/netx/heal-profile-entry.ts'
|
|
|
|
test('mergeHostConfigForHeal fills missing defaults only', () => {
|
|
const merged = mergeHostConfigForHeal({
|
|
apiUrl: 'http://custom:8890',
|
|
groupOpsPublic: false,
|
|
})
|
|
assert.equal(merged.apiUrl, 'http://custom:8890')
|
|
assert.equal(merged.groupOpsPublic, false)
|
|
assert.equal(merged.lang, NETXOPS_HOST_CONFIG_DEFAULTS.lang)
|
|
assert.equal(merged.tokenCredentialRef, NETXOPS_HOST_CONFIG_DEFAULTS.tokenCredentialRef)
|
|
assert.equal(merged.groupBizMonitorInPreset, NETXOPS_HOST_CONFIG_DEFAULTS.groupBizMonitorInPreset)
|
|
})
|
|
|
|
test('mergeHostConfigForHeal preserves unknown user keys', () => {
|
|
const merged = mergeHostConfigForHeal({
|
|
apiUrl: 'http://127.0.0.1:8890',
|
|
customSiteTag: 'hq-edge-1',
|
|
})
|
|
assert.equal(merged.customSiteTag, 'hq-edge-1')
|
|
assert.equal(merged.apiUrl, 'http://127.0.0.1:8890')
|
|
})
|
|
|
|
test('mergeHostConfigForHeal never overwrites empty-string user values with defaults', () => {
|
|
const merged = mergeHostConfigForHeal({
|
|
kbRoot: '',
|
|
imBotId: '',
|
|
})
|
|
assert.equal(merged.kbRoot, '')
|
|
assert.equal(merged.imBotId, '')
|
|
})
|
|
|
|
test('NETXOPS_HOST_CONFIG_DEFAULTS keeps ops public off', () => {
|
|
assert.equal(NETXOPS_HOST_CONFIG_DEFAULTS.groupOpsPublic, false)
|
|
})
|
|
|
|
test('writePatchIfUnchanged aborts when file raced', () => {
|
|
const dir = mkdtempSync(join(tmpdir(), 'netxops-heal-'))
|
|
const path = join(dir, 'cordis.patch.yml')
|
|
writeFileSync(path, 'v1\n', 'utf8')
|
|
assert.equal(writePatchIfUnchanged(path, 'v1\n', 'v2\n'), true)
|
|
assert.equal(readFileSync(path, 'utf8'), 'v2\n')
|
|
// Caller still holds stale expectedRaw after another writer changed the file.
|
|
writeFileSync(path, 'other\n', 'utf8')
|
|
assert.equal(writePatchIfUnchanged(path, 'v2\n', 'v3\n'), false)
|
|
assert.equal(readFileSync(path, 'utf8'), 'other\n')
|
|
})
|