63 lines
2.2 KiB
TypeScript
Raw Permalink Normal View History

import test from 'node:test';
import assert from 'node:assert/strict';
import { parseMatrixUri } from '@open-matrix/federation/uri';
test('parse compact URI with realm + mount + atom', () => {
const u = parseMatrixUri('acme.com/env/prod/root.ui.app.editor.accepts.setText');
assert.ok(u);
assert.equal(u!.realm, 'acme.com');
assert.deepEqual(u!.mountSegments, ['env', 'prod']);
assert.equal(u!.componentPath, 'root.ui.app.editor');
assert.equal(u!.plane, 'accepts');
assert.equal(u!.messageName, 'setText');
assert.equal(u!.toPath, 'env/prod/root.ui.app.editor.accepts.setText');
});
test('parse segmented MXURI/1 with /-/', () => {
const u = parseMatrixUri('acme.com/env/prod/-/root/ui/app/editor/accepts/setText');
assert.ok(u);
assert.equal(u!.realm, 'acme.com');
assert.equal(u!.toPath, 'env/prod/root.ui.app.editor.accepts.setText');
});
test('tab normalization (~tab)', () => {
const u = parseMatrixUri('flowpad-demo/~tab/abc123/-/root/ui/app/accepts/ping');
assert.ok(u);
assert.equal(u!.realm, 'flowpad-demo.tab.abc123');
assert.equal(u!.toPath, 'root.ui.app.accepts.ping');
});
test('query params parsed (defaults)', () => {
const u = parseMatrixUri('matrix-3/project/daemon.project.accepts.scan?depth=2&hidden=false');
assert.ok(u);
assert.equal(u!.query.depth, '2');
assert.equal(u!.query.hidden, 'false');
});
test('parse compact URI local-only (no realm)', () => {
const u = parseMatrixUri('root.ui.app.accepts.ping');
assert.ok(u);
assert.equal(u!.realm, undefined);
assert.equal(u!.toPath, 'root.ui.app.accepts.ping');
assert.equal(u!.componentPath, 'root.ui.app');
assert.equal(u!.plane, 'accepts');
assert.equal(u!.messageName, 'ping');
});
test('tab normalization works in compact form (no /-/)', () => {
const u = parseMatrixUri('flowpad-demo/~tab/xyz/root.ui.app.accepts.ping');
assert.ok(u);
assert.equal(u!.realm, 'flowpad-demo.tab.xyz');
assert.equal(u!.toPath, 'root.ui.app.accepts.ping');
});
test('invalid URI (missing accepts/emits plane) returns null', () => {
const u = parseMatrixUri('acme.com/env/prod/root.ui.app.editor/setText');
assert.equal(u, null);
});
test('non-matrix scheme returns null', () => {
const u = parseMatrixUri('http://example.com/path');
assert.equal(u, null);
});