release: v1.32.0 - Subtype Drivers Engine, Explicit Secret Inheritance & App Tokens consolidation
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
'use strict';
|
||||
|
||||
jest.mock('@simpleworkjs/bao-conf', () => ({
|
||||
get: jest.fn(),
|
||||
set: jest.fn(),
|
||||
request: jest.fn(async () => ({ ok: true, status: 200, json: async () => ({}) })),
|
||||
}), { virtual: true });
|
||||
|
||||
const DriverRegistry = require('../services/driver_registry');
|
||||
|
||||
describe('Subtype Driver Registry Engine', () => {
|
||||
|
||||
test('resolves ProxmoxDriver for proxmox/hypervisor host subtype', async () => {
|
||||
const resource = {
|
||||
id: 'res-proxmox-1',
|
||||
name: 'pve0',
|
||||
kind: 'host',
|
||||
metadata: { subType: 'proxmox' }
|
||||
};
|
||||
const driver = await DriverRegistry.resolveDriver(resource);
|
||||
expect(driver.name).toBe('proxmox');
|
||||
});
|
||||
|
||||
test('resolves DockerSocketDriver for docker/docker_compose subtype', async () => {
|
||||
const resource = {
|
||||
id: 'res-docker-1',
|
||||
name: 'theta-suite-docker',
|
||||
kind: 'service',
|
||||
metadata: { subType: 'docker' }
|
||||
};
|
||||
const driver = await DriverRegistry.resolveDriver(resource);
|
||||
expect(driver.name).toBe('docker_socket');
|
||||
});
|
||||
|
||||
test('resolves DbDriver for redis, postgresql, openbao_vault subtypes', async () => {
|
||||
const redisRes = { id: 'r1', metadata: { subType: 'redis' } };
|
||||
const pgRes = { id: 'r2', metadata: { subType: 'postgresql' } };
|
||||
const vaultRes = { id: 'r3', metadata: { subType: 'openbao_vault' } };
|
||||
|
||||
expect((await DriverRegistry.resolveDriver(redisRes)).name).toBe('database');
|
||||
expect((await DriverRegistry.resolveDriver(pgRes)).name).toBe('database');
|
||||
expect((await DriverRegistry.resolveDriver(vaultRes)).name).toBe('database');
|
||||
});
|
||||
|
||||
test('resolves NetworkDriver for wireguard, unifi_ap, pfsense', async () => {
|
||||
const wgRes = { id: 'nw1', metadata: { subType: 'wireguard' } };
|
||||
const unifiRes = { id: 'nw2', metadata: { subType: 'unifi_ap' } };
|
||||
const pfRes = { id: 'nw3', metadata: { subType: 'pfsense' } };
|
||||
|
||||
expect((await DriverRegistry.resolveDriver(wgRes)).name).toBe('network');
|
||||
expect((await DriverRegistry.resolveDriver(unifiRes)).name).toBe('network');
|
||||
expect((await DriverRegistry.resolveDriver(pfRes)).name).toBe('network');
|
||||
});
|
||||
|
||||
test('resolves K8sDriver for k8s_pod and k8s_deployment', async () => {
|
||||
const podRes = { id: 'k1', metadata: { subType: 'k8s_pod' } };
|
||||
const depRes = { id: 'k2', metadata: { subType: 'k8s_deployment' } };
|
||||
|
||||
expect((await DriverRegistry.resolveDriver(podRes)).name).toBe('kubernetes');
|
||||
expect((await DriverRegistry.resolveDriver(depRes)).name).toBe('kubernetes');
|
||||
});
|
||||
|
||||
test('returns unmanaged driver for unknown subtypes without agent', async () => {
|
||||
const unknownRes = { id: 'u1', metadata: { subType: 'unknown_custom' } };
|
||||
const driver = await DriverRegistry.resolveDriver(unknownRes);
|
||||
expect(driver.name).toBe('unmanaged');
|
||||
});
|
||||
|
||||
test('fetches metrics via resolved driver', async () => {
|
||||
const redisRes = { id: 'r1', metadata: { subType: 'redis' } };
|
||||
const metrics = await DriverRegistry.getMetrics(redisRes);
|
||||
expect(metrics.status).toBe('online');
|
||||
expect(metrics.driver).toBe('database');
|
||||
expect(metrics.redis).toBeDefined();
|
||||
expect(metrics.redis.connectedClients).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
test('executes actions via resolved driver', async () => {
|
||||
const dockerRes = { id: 'd1', slug: 'my-container', metadata: { subType: 'docker' } };
|
||||
const result = await DriverRegistry.execAction(dockerRes, 'restart');
|
||||
expect(result.status).toBe('ok');
|
||||
expect(result.driver).toBe('docker_socket');
|
||||
expect(result.action).toBe('restart');
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user