- Docker infrastructure (Dockerfile, docker-compose.yml, genieacs-sim) - AdonisJS v7 app with Inertia.js + Vue 3 - MongoDB integration - CWMP/TR-069 state machine engine - Configuration engine with compliance tracking - Branding: ADAM ACS (favicon, navbar, locales) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
90 lines
2.7 KiB
TypeScript
90 lines
2.7 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import {
|
|
isParameterCoveredByInventory,
|
|
suggestInventoryPath,
|
|
} from '../../../app/utils/inventory_coverage.js'
|
|
|
|
describe('isParameterCoveredByInventory', () => {
|
|
it('returns true for subtree match (path ending with dot)', () => {
|
|
const inventoryPaths = [{ path: 'InternetGatewayDevice.ManagementServer.' }]
|
|
expect(
|
|
isParameterCoveredByInventory(
|
|
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
|
|
inventoryPaths
|
|
)
|
|
).toBe(true)
|
|
})
|
|
|
|
it('returns true for exact match (path without trailing dot)', () => {
|
|
const inventoryPaths = [
|
|
{ path: 'InternetGatewayDevice.ManagementServer.PeriodicInformInterval' },
|
|
]
|
|
expect(
|
|
isParameterCoveredByInventory(
|
|
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
|
|
inventoryPaths
|
|
)
|
|
).toBe(true)
|
|
})
|
|
|
|
it('returns false when parameter is not covered', () => {
|
|
const inventoryPaths = [{ path: 'InternetGatewayDevice.DeviceInfo.' }]
|
|
expect(
|
|
isParameterCoveredByInventory(
|
|
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
|
|
inventoryPaths
|
|
)
|
|
).toBe(false)
|
|
})
|
|
|
|
it('returns false for empty inventory', () => {
|
|
expect(
|
|
isParameterCoveredByInventory(
|
|
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
|
|
[]
|
|
)
|
|
).toBe(false)
|
|
})
|
|
|
|
it('handles multiple inventory paths', () => {
|
|
const inventoryPaths = [
|
|
{ path: 'InternetGatewayDevice.DeviceInfo.' },
|
|
{ path: 'InternetGatewayDevice.ManagementServer.' },
|
|
]
|
|
expect(
|
|
isParameterCoveredByInventory(
|
|
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
|
|
inventoryPaths
|
|
)
|
|
).toBe(true)
|
|
})
|
|
|
|
it('does not match partial path names without trailing dot', () => {
|
|
const inventoryPaths = [{ path: 'InternetGatewayDevice.Man' }]
|
|
expect(
|
|
isParameterCoveredByInventory(
|
|
'InternetGatewayDevice.ManagementServer.PeriodicInformInterval',
|
|
inventoryPaths
|
|
)
|
|
).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('suggestInventoryPath', () => {
|
|
it('removes the leaf name and adds trailing dot', () => {
|
|
expect(
|
|
suggestInventoryPath('InternetGatewayDevice.ManagementServer.PeriodicInformInterval')
|
|
).toBe('InternetGatewayDevice.ManagementServer.')
|
|
})
|
|
|
|
it('handles deeply nested paths', () => {
|
|
expect(
|
|
suggestInventoryPath('InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.Name')
|
|
).toBe('InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.')
|
|
})
|
|
|
|
it('handles single-level path', () => {
|
|
expect(suggestInventoryPath('ParameterName')).toBe('.')
|
|
})
|
|
})
|