66 lines
2.1 KiB
JavaScript
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);
|
|
});
|