mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-12 23:33:43 +08:00
Keep every post-59948b5 change inside verification/. The verifier owns its npm working directory and sanitized Docker context, so no release metadata or root Docker configuration is modified.
34 lines
1.9 KiB
JavaScript
34 lines
1.9 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import fs from 'node:fs';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import test from 'node:test';
|
|
import { createDockerContext, includeDockerContextPath, removeDockerContext } from '../../src/checks/docker-context.mjs';
|
|
|
|
test('Docker context contains application inputs but excludes verifier state', () => {
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'kvideo-docker-context-'));
|
|
const verifyDir = path.join(root, 'verification');
|
|
fs.mkdirSync(path.join(root, 'src'), { recursive: true });
|
|
fs.mkdirSync(path.join(verifyDir, 'artifacts'), { recursive: true });
|
|
fs.mkdirSync(path.join(root, 'node_modules'), { recursive: true });
|
|
fs.writeFileSync(path.join(root, 'Dockerfile'), 'FROM scratch\n');
|
|
fs.writeFileSync(path.join(root, 'src', 'app.js'), 'export {};\n');
|
|
fs.writeFileSync(path.join(verifyDir, 'artifacts', 'large.bin'), 'excluded');
|
|
fs.writeFileSync(path.join(root, 'node_modules', 'dependency.js'), 'excluded');
|
|
const context = createDockerContext({ config: { root, verifyDir }, runId: 'unit' });
|
|
assert.equal(fs.existsSync(path.join(context, 'Dockerfile')), true);
|
|
assert.equal(fs.existsSync(path.join(context, 'src', 'app.js')), true);
|
|
assert.equal(fs.existsSync(path.join(context, 'verification')), false);
|
|
assert.equal(fs.existsSync(path.join(context, 'node_modules')), false);
|
|
removeDockerContext(context);
|
|
assert.equal(fs.existsSync(context), false);
|
|
fs.rmSync(root, { recursive: true, force: true });
|
|
});
|
|
|
|
test('Docker context rejects paths outside the root', () => {
|
|
const root = path.join(os.tmpdir(), 'kvideo-root');
|
|
assert.equal(includeDockerContextPath(root, path.join(root, 'src', 'app.js')), true);
|
|
assert.equal(includeDockerContextPath(root, path.join(root, 'verification', 'run')), false);
|
|
assert.equal(includeDockerContextPath(root, path.join(root, '..', 'secret')), false);
|
|
});
|