balena-supervisor/test/unit/lib/journald.spec.ts
Felipe Lalanne 6217546894 Update typescript to v5
This also updates code to use the default import syntax instead of
`import * as` when the imported module exposes a default. This is needed
with the latest typescript version.

Change-type: patch
2024-03-05 15:33:56 -03:00

65 lines
1.4 KiB
TypeScript

import type { SinonStub } from 'sinon';
import { stub } from 'sinon';
import { expect } from 'chai';
import childProcess from 'child_process';
import { spawnJournalctl } from '~/lib/journald';
describe('lib/journald', () => {
let spawn: SinonStub;
beforeEach((done) => {
spawn = stub(childProcess, 'spawn');
done();
});
afterEach((done) => {
spawn.restore();
done();
});
// TODO: this test is not really that useful as it basically is just testing
// the internal implementation of the method
it('spawnJournalctl calls spawn child process with expected args', () => {
spawnJournalctl({
all: true,
follow: true,
count: 10,
unit: 'nginx.service',
containerId: 'abc123',
format: 'json-pretty',
since: '2014-03-25 03:59:56.654563',
until: '2014-03-25 03:59:59.654563',
});
const expectedCommand = `journalctl`;
const expectedOptionalArgs = [
'-a',
'--follow',
'-u',
'nginx.service',
'-t',
'abc123',
'-n',
'10',
'-o',
'json-pretty',
'-S',
'2014-03-25 03:59:56.654563',
'-U',
'2014-03-25 03:59:59.654563',
];
const actualCommand = spawn.firstCall.args[0];
const actualOptionalArgs = spawn.firstCall.args[1];
expect(spawn.calledOnce).to.be.true;
expect(actualCommand).deep.equal(expectedCommand);
expectedOptionalArgs.forEach((arg) => {
expect(actualOptionalArgs).to.include(arg);
});
});
});