polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
112 lines • 3.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockServiceConfig = exports.mockAuthConfig = void 0;
exports.getAuthAdapterMockDefinition = getAuthAdapterMockDefinition;
exports.getConfigManagerMockDefinition = getConfigManagerMockDefinition;
exports.createTestProgram = createTestProgram;
exports.mockAuthSuccess = mockAuthSuccess;
exports.mockAuthFailure = mockAuthFailure;
exports.mockConfigError = mockConfigError;
exports.createMockHandler = createMockHandler;
exports.suppressConsole = suppressConsole;
exports.mockProcessExit = mockProcessExit;
exports.tick = tick;
exports.parseCommandAsync = parseCommandAsync;
exports.createMockParentOptions = createMockParentOptions;
const commander_1 = require("commander");
exports.mockAuthConfig = {
appId: 'test-app-id',
appSecret: 'test-app-secret',
userId: 'test-user-id',
};
exports.mockServiceConfig = {
baseUrl: 'https://api.polyv.net',
timeout: 30000,
debug: false,
};
function getAuthAdapterMockDefinition() {
return {
authAdapter: {
tryGetAuthConfig: jest.fn(),
getStatusMessage: jest.fn().mockReturnValue('No authentication configured'),
},
};
}
function getConfigManagerMockDefinition() {
return {
configManager: {
load: jest.fn(),
},
};
}
function createTestProgram() {
return new commander_1.Command();
}
function mockAuthSuccess(authAdapter, configManager, options = {}) {
const authResult = {
config: exports.mockAuthConfig,
source: options.source || 'environment',
accountName: options.accountName ?? null,
};
const configResult = {
config: {
baseUrl: options.baseUrl || exports.mockServiceConfig.baseUrl,
timeout: options.timeout ?? exports.mockServiceConfig.timeout,
debug: options.debug ?? exports.mockServiceConfig.debug,
},
};
authAdapter.tryGetAuthConfig.mockReturnValue(authResult);
configManager.load.mockResolvedValue(configResult);
}
function mockAuthFailure(authAdapter, message = 'No authentication configured') {
authAdapter.tryGetAuthConfig.mockReturnValue(null);
authAdapter.getStatusMessage.mockReturnValue(message);
}
function mockConfigError(configManager, errorMessage) {
configManager.load.mockRejectedValue(new Error(errorMessage));
}
function createMockHandler(methods) {
const handler = {};
for (const [key, value] of Object.entries(methods)) {
handler[key] = jest.fn().mockResolvedValue(value);
}
return handler;
}
function suppressConsole() {
const originalLog = console.log;
const originalError = console.error;
const originalWarn = console.warn;
console.log = jest.fn();
console.error = jest.fn();
console.warn = jest.fn();
return () => {
console.log = originalLog;
console.error = originalError;
console.warn = originalWarn;
};
}
function mockProcessExit() {
const originalExit = process.exit;
process.exit = jest.fn().mockImplementation((code) => {
throw new Error(`process.exit:${code ?? 0}`);
});
return () => {
process.exit = originalExit;
};
}
function tick(ms = 0) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function parseCommandAsync(program, args) {
await program.parseAsync(['node', 'test', ...args], { from: 'user' });
}
function createMockParentOptions(options = {}) {
return {
appId: undefined,
appSecret: undefined,
userId: undefined,
verbose: false,
...options,
};
}
//# sourceMappingURL=test-helpers.js.map