51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
import { describe, expect, it } from 'bun:test';
|
|
|
|
import {
|
|
extractNgrokPublicUrlFromText,
|
|
summarizeNgrokOutput,
|
|
} from './ngrok-tunnel.js';
|
|
|
|
describe('extractNgrokPublicUrlFromText', () => {
|
|
it('extracts public URL from ngrok JSON logs', () => {
|
|
const url = extractNgrokPublicUrlFromText('{"lvl":"info","msg":"started tunnel","url":"https://demo.ngrok-free.app"}\n');
|
|
|
|
expect(url).toBe('https://demo.ngrok-free.app');
|
|
});
|
|
|
|
it('extracts public URL from ngrok text output', () => {
|
|
const url = extractNgrokPublicUrlFromText('Forwarding https://demo.ngrok-free.app -> http://127.0.0.1:3000');
|
|
|
|
expect(url).toBe('https://demo.ngrok-free.app');
|
|
});
|
|
|
|
it('ignores non-ngrok URLs', () => {
|
|
const url = extractNgrokPublicUrlFromText('{"url":"https://example.com"}\n');
|
|
|
|
expect(url).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe('summarizeNgrokOutput', () => {
|
|
it('prefers actionable JSON error details over trailing help text', () => {
|
|
const summary = summarizeNgrokOutput([
|
|
'{"err":"authentication failed: Your ngrok-agent version \\"3.3.1\\" is too old. The minimum supported agent version for your account is \\"3.20.0\\".\\r\\n\\r\\nERR_NGROK_121\\r\\n","lvl":"crit","msg":"command failed"}',
|
|
'NAME:',
|
|
' http - start an HTTP tunnel',
|
|
]);
|
|
|
|
expect(summary).toContain('Your ngrok-agent version "3.3.1" is too old');
|
|
expect(summary).toContain('ERR_NGROK_121');
|
|
});
|
|
|
|
it('skips bare ERROR lines and keeps the useful error text', () => {
|
|
const summary = summarizeNgrokOutput([
|
|
'ERROR:',
|
|
'ERROR: authentication failed',
|
|
'ERROR:',
|
|
'ERROR: ERR_NGROK_121',
|
|
]);
|
|
|
|
expect(summary).toBe('authentication failed ERR_NGROK_121');
|
|
});
|
|
});
|