Add narrow OpenClaw MeshCentral read-only plugin
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import test from 'node:test';
|
||||
|
||||
const entry = await readFile(new URL('../src/index.ts', import.meta.url), 'utf8');
|
||||
const transport = await readFile(new URL('../src/meshcentral-readonly.ts', import.meta.url), 'utf8');
|
||||
|
||||
test('declares exactly the four read-only tools', () => {
|
||||
for (const name of [
|
||||
'meshcentral_health',
|
||||
'meshcentral_list_groups',
|
||||
'meshcentral_list_devices',
|
||||
'meshcentral_device_status',
|
||||
]) assert.match(entry, new RegExp(`name: '${name}'`));
|
||||
assert.doesNotMatch(entry, /runcommand|power|console|filetransfer|remotecontrol|diagnostic/i);
|
||||
});
|
||||
|
||||
test('uses fixed configured targets and an environment variable for the password', () => {
|
||||
assert.match(entry, /passwordEnv/);
|
||||
assert.match(transport, /process\.env\[config\.passwordEnv\]/);
|
||||
assert.match(transport, /groupName/);
|
||||
assert.match(transport, /deviceName/);
|
||||
assert.doesNotMatch(transport, /rejectUnauthorized:\s*false/);
|
||||
});
|
||||
Reference in New Issue
Block a user