mirror of
https://github.com/LukeHagar/arbiter.git
synced 2025-12-06 04:19:14 +00:00
94 lines
3.8 KiB
JavaScript
94 lines
3.8 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import { Command } from 'commander';
|
|
describe('CLI Options', () => {
|
|
it('should require target URL', () => {
|
|
const program = new Command();
|
|
program
|
|
.name('arbiter')
|
|
.description('API proxy with OpenAPI generation and HAR export capabilities')
|
|
.version('1.0.0')
|
|
.requiredOption('-t, --target <url>', 'target API URL to proxy to')
|
|
.option('-p, --port <number>', 'port to run the proxy server on', '8080')
|
|
.option('-d, --docs-port <number>', 'port to run the documentation server on', '9000')
|
|
.option('-k, --key <string>', 'API key to add to proxied requests')
|
|
.option('--docs-only', 'run only the documentation server')
|
|
.option('--proxy-only', 'run only the proxy server')
|
|
.option('-v, --verbose', 'enable verbose logging');
|
|
// Test without target URL
|
|
expect(() => program.parse(['node', 'arbiter'])).toThrow();
|
|
// Test with target URL
|
|
const options = program.parse(['node', 'arbiter', '-t', 'http://example.com']).opts();
|
|
expect(options.target).toBe('http://example.com');
|
|
expect(options.port).toBe('8080');
|
|
expect(options.docsPort).toBe('9000');
|
|
});
|
|
it('should handle custom ports', () => {
|
|
const program = new Command();
|
|
program
|
|
.name('arbiter')
|
|
.description('API proxy with OpenAPI generation and HAR export capabilities')
|
|
.version('1.0.0')
|
|
.requiredOption('-t, --target <url>', 'target API URL to proxy to')
|
|
.option('-p, --port <number>', 'port to run the proxy server on', '8080')
|
|
.option('-d, --docs-port <number>', 'port to run the documentation server on', '9000');
|
|
const options = program.parse([
|
|
'node',
|
|
'arbiter',
|
|
'-t',
|
|
'http://example.com',
|
|
'-p',
|
|
'8081',
|
|
'-d',
|
|
'9001',
|
|
]).opts();
|
|
expect(options.port).toBe('8081');
|
|
expect(options.docsPort).toBe('9001');
|
|
});
|
|
it('should handle API key', () => {
|
|
const program = new Command();
|
|
program
|
|
.name('arbiter')
|
|
.description('API proxy with OpenAPI generation and HAR export capabilities')
|
|
.version('1.0.0')
|
|
.requiredOption('-t, --target <url>', 'target API URL to proxy to')
|
|
.option('-k, --key <string>', 'API key to add to proxied requests');
|
|
const options = program.parse([
|
|
'node',
|
|
'arbiter',
|
|
'-t',
|
|
'http://example.com',
|
|
'-k',
|
|
'test-api-key',
|
|
]).opts();
|
|
expect(options.key).toBe('test-api-key');
|
|
});
|
|
it('should handle server mode options', () => {
|
|
const program = new Command();
|
|
program
|
|
.name('arbiter')
|
|
.description('API proxy with OpenAPI generation and HAR export capabilities')
|
|
.version('1.0.0')
|
|
.requiredOption('-t, --target <url>', 'target API URL to proxy to')
|
|
.option('--docs-only', 'run only the documentation server')
|
|
.option('--proxy-only', 'run only the proxy server');
|
|
// Test docs-only mode
|
|
const docsOptions = program.parse([
|
|
'node',
|
|
'arbiter',
|
|
'-t',
|
|
'http://example.com',
|
|
'--docs-only',
|
|
]).opts();
|
|
expect(docsOptions.docsOnly).toBe(true);
|
|
// Test proxy-only mode
|
|
const proxyOptions = program.parse([
|
|
'node',
|
|
'arbiter',
|
|
'-t',
|
|
'http://example.com',
|
|
'--proxy-only',
|
|
]).opts();
|
|
expect(proxyOptions.proxyOnly).toBe(true);
|
|
});
|
|
});
|
|
//# sourceMappingURL=cli.test.js.map
|