Files
poshmanager/server/test/library.test.mjs
2026-06-25 12:05:53 -05:00

66 lines
2.1 KiB
JavaScript

import { makeUser, load } from './setup.mjs';
import test from 'node:test';
import assert from 'node:assert/strict';
const { createScript, cloneScript, scriptUsage } = await load('../models/libraryModel.js');
const { createRunPlan } = await load('../models/runPlanModel.js');
const { createIntuneDeployment } = await load('../models/psadtModel.js');
const owner = makeUser({ email: 'library-owner@test.local' });
test('scriptUsage reports linked RunPlans and Intune deployments', () => {
const script = createScript({
name: 'Usage Target.ps1',
description: 'Used by operational plans',
content: 'Write-Output usage',
visibility: 'personal'
}, owner);
const runplan = createRunPlan({
name: 'Usage RunPlan',
description: '',
scriptId: script.id,
visibility: 'personal',
parallel: true,
hostIds: []
}, owner);
const deployment = createIntuneDeployment({
name: 'Usage Intune Plan',
scriptId: script.id,
installCommand: 'Invoke-AppDeployToolkit.exe -DeploymentType Install',
uninstallCommand: 'Invoke-AppDeployToolkit.exe -DeploymentType Uninstall',
visibility: 'personal'
}, owner);
const usage = scriptUsage(script.id, owner);
assert.equal(usage.total, 2);
assert.deepEqual(usage.runplans.map((item) => item.id), [runplan.id]);
assert.deepEqual(usage.intuneDeployments.map((item) => item.id), [deployment.id]);
});
test('cloneScript creates an independent unassigned script copy', () => {
const script = createScript({
name: 'Clone Source.ps1',
description: 'Original',
content: 'Write-Output clone',
visibility: 'personal'
}, owner);
createRunPlan({
name: 'Original Only',
description: '',
scriptId: script.id,
visibility: 'personal',
parallel: true,
hostIds: []
}, owner);
const clone = cloneScript(script.id, { name: 'Clone Target.ps1' }, owner);
assert.notEqual(clone.id, script.id);
assert.equal(clone.name, 'Clone Target.ps1');
assert.equal(clone.content, script.content);
assert.equal(scriptUsage(clone.id, owner).total, 0);
assert.equal(scriptUsage(script.id, owner).total, 1);
});