Full SDK workspace: core, contracts, sdk, cli, browser-host, browser-kit, federation, omega-core, oracle, self-healing, strategies, tools, emacs. Clean extraction from the development monorepo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
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);
|
|
});
|