Initial curated chimera source from a8ae5b1db07fb49926c94585e2718e5130330974
This commit is contained in:
commit
c737a37f71
531 files changed
+119270
No files matched your search
@@ -0,0 +1,67 @@
|
||||
'use strict';
|
||||
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const {
|
||||
VERSION, compareVersions, parseChiakiLog, validateArchiveEntries, validateReleaseMetadata,
|
||||
} = require('../../remote-play-worker/worker');
|
||||
|
||||
function releaseFixture(overrides = {}) {
|
||||
const name = 'chiaki-ng-win_x64-MSYS2-Release-portable.zip';
|
||||
return {
|
||||
tag_name: 'v1.10.0', draft: false, prerelease: false,
|
||||
assets: [{
|
||||
name, size: 101_237_965,
|
||||
digest: `sha256:${'ab'.repeat(32)}`,
|
||||
browser_download_url: `https://github.com/streetpea/chiaki-ng/releases/download/v1.10.0/${name}`,
|
||||
}],
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
test('Remote Play worker validates only the expected stable upstream portable asset', () => {
|
||||
const release = validateReleaseMetadata(releaseFixture(), 'x64');
|
||||
assert.equal(release.version, '1.10.0');
|
||||
assert.equal(release.size, 101_237_965);
|
||||
assert.match(release.sha256, /^[a-f0-9]{64}$/);
|
||||
assert.throws(() => validateReleaseMetadata(releaseFixture({ prerelease: true }), 'x64'), /stabiele/);
|
||||
const wrongHost = releaseFixture();
|
||||
wrongHost.assets[0].browser_download_url = wrongHost.assets[0].browser_download_url.replace('github.com', 'example.test');
|
||||
assert.throws(() => validateReleaseMetadata(wrongHost, 'x64'), /officiële releasepad/);
|
||||
const noDigest = releaseFixture();
|
||||
noDigest.assets[0].digest = null;
|
||||
assert.throws(() => validateReleaseMetadata(noDigest, 'x64'), /SHA-256/);
|
||||
});
|
||||
|
||||
test('Remote Play worker rejects archive traversal before extraction', () => {
|
||||
assert.deepEqual(validateArchiveEntries('chiaki-ng-Win/\nchiaki-ng-Win/chiaki.exe\n'), ['chiaki-ng-Win/', 'chiaki-ng-Win/chiaki.exe']);
|
||||
assert.throws(() => validateArchiveEntries('../outside.exe\n'), /onveilig pad/);
|
||||
assert.throws(() => validateArchiveEntries('C:\\Windows\\outside.exe\n'), /onveilig pad/);
|
||||
assert.throws(() => validateArchiveEntries('/absolute/outside.exe\n'), /onveilig pad/);
|
||||
});
|
||||
|
||||
test('Remote Play worker reports only aggregate non-secret stream health', () => {
|
||||
const health = parseChiakiLog(`
|
||||
Using hardware decoder "vulkan" with pix_fmt=vulkan
|
||||
Switched to profile 0, resolution: 1920x1080
|
||||
Senkusha determined average RTT = 5.602 ms
|
||||
Detected missing or corrupt frame(s)
|
||||
FEC failed
|
||||
Missing unit
|
||||
Received duplicate unit
|
||||
AVCodec internal buffer is full removing frames before pushing
|
||||
AVCodec internal buffer is full removing frames before pushing
|
||||
`, 1234);
|
||||
assert.deepEqual(health, {
|
||||
checkedAt: 1234, resolution: '1920x1080', rttMs: 5.6, decoder: 'vulkan',
|
||||
packetErrors: 3, duplicateUnits: 1, decoderDrops: 2, status: 'degraded',
|
||||
});
|
||||
assert.doesNotMatch(JSON.stringify(health), /account|regist|192\.168\./i);
|
||||
});
|
||||
|
||||
test('Remote Play worker uses semantic client versions', () => {
|
||||
assert.equal(VERSION, '1.1.0');
|
||||
assert.equal(compareVersions('1.10.0', '1.9.9'), 1);
|
||||
assert.equal(compareVersions('1.10.0.0', 'v1.10.0'), 0);
|
||||
assert.equal(compareVersions('invalid', '1.10.0'), null);
|
||||
});
|
||||
Reference in new issue
Block a user