@mafalda-sfu/mediasoup-node-tests
Version:
Node.js tests extracted from Mediasoup
114 lines (113 loc) • 4.46 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
const fs = require("node:fs");
const path = require("node:path");
const enhancedEvents_1 = require("./enhancedEvents");
const node_assert_1 = require("node:assert");
const pkg_dir_1 = require("pkg-dir");
function default_1(mediasoup) {
describe('mediasoup', () => {
let { version: pkgVersion } = JSON.parse(fs.readFileSync(path.join((0, pkg_dir_1.sync)(__dirname), 'package.json'), {
encoding: 'utf-8',
}));
// If version is a pre-release, get the previous version
if (pkgVersion.includes('-')) {
let [major, minor, patch] = pkgVersion.split('-')[0].split('.');
patch = parseInt(patch);
if (patch)
patch -= 1;
else {
minor = parseInt(minor);
if (minor)
minor -= 1;
else {
major = parseInt(major);
(0, node_assert_1.ok)(major, 'Invalid version');
major -= 1;
}
}
pkgVersion = `${major}.${minor}.${patch}`;
}
const { version, getSupportedRtpCapabilities, parseScalabilityMode } = mediasoup;
test('mediasoup.version matches version field in package.json', () => {
expect(version).toBe(pkgVersion);
});
test('mediasoup.setLoggerEventListeners() succeeds', async () => {
const onDebug = jest.fn();
mediasoup.setLogEventListeners({
ondebug: onDebug,
onwarn: undefined,
onerror: undefined,
});
const worker = await mediasoup.createWorker();
worker.close();
expect(onDebug).toHaveBeenCalled();
if (worker.subprocessClosed === false) {
await (0, enhancedEvents_1.enhancedOnce)(worker, 'subprocessclose');
}
}, 2000);
test('mediasoup.getSupportedRtpCapabilities() returns the mediasoup RTP capabilities', () => {
const rtpCapabilities = getSupportedRtpCapabilities();
expect(typeof rtpCapabilities).toBe('object');
// Mangle retrieved codecs to check that, if called again,
// getSupportedRtpCapabilities() returns a cloned object.
// @ts-expect-error --- Testing purposes.
rtpCapabilities.codecs = 'bar';
const rtpCapabilities2 = getSupportedRtpCapabilities();
expect(rtpCapabilities2).not.toEqual(rtpCapabilities);
});
test('mediasoup.parseScalabilityMode() succeeds', () => {
expect(parseScalabilityMode('L1T3')).toEqual({
spatialLayers: 1,
temporalLayers: 3,
ksvc: false,
});
expect(parseScalabilityMode('L3T2_KEY')).toEqual({
spatialLayers: 3,
temporalLayers: 2,
ksvc: true,
});
expect(parseScalabilityMode('S2T3')).toEqual({
spatialLayers: 2,
temporalLayers: 3,
ksvc: false,
});
expect(parseScalabilityMode('foo')).toEqual({
spatialLayers: 1,
temporalLayers: 1,
ksvc: false,
});
expect(parseScalabilityMode(undefined)).toEqual({
spatialLayers: 1,
temporalLayers: 1,
ksvc: false,
});
expect(parseScalabilityMode('S0T3')).toEqual({
spatialLayers: 1,
temporalLayers: 1,
ksvc: false,
});
expect(parseScalabilityMode('S1T0')).toEqual({
spatialLayers: 1,
temporalLayers: 1,
ksvc: false,
});
expect(parseScalabilityMode('L20T3')).toEqual({
spatialLayers: 20,
temporalLayers: 3,
ksvc: false,
});
expect(parseScalabilityMode('S200T3')).toEqual({
spatialLayers: 1,
temporalLayers: 1,
ksvc: false,
});
expect(parseScalabilityMode('L4T7_KEY_SHIFT')).toEqual({
spatialLayers: 4,
temporalLayers: 7,
ksvc: true,
});
});
});
}