212 lines
8.0 KiB
TypeScript
212 lines
8.0 KiB
TypeScript
import ConnectionFormatUtils from './ConnectionFormatUtils';
|
|
|
|
describe('ConnectionFormatUtils', () => {
|
|
describe('processLndConnectUrl', () => {
|
|
it('validates IPv4 lndconnect hosts properly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLndConnectUrl(
|
|
'lndconnect://8.8.0.0:2056?&macaroon=0201b6'
|
|
)
|
|
).toEqual({
|
|
host: 'https://8.8.0.0',
|
|
macaroonHex: 'd36d356f',
|
|
port: '2056',
|
|
enableTor: false
|
|
});
|
|
});
|
|
|
|
it('validates IPv6 lndconnect hosts properly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLndConnectUrl(
|
|
'lndconnect://[2604:2000::]:2056?&macaroon=0201b6'
|
|
)
|
|
).toEqual({
|
|
host: 'https://[2604:2000::]',
|
|
macaroonHex: 'd36d356f',
|
|
port: '2056',
|
|
enableTor: false
|
|
});
|
|
});
|
|
|
|
it('validates all params correctly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLndConnectUrl(
|
|
'lndconnect://[2604:2000::]:2058?macaroon=0201b6&cert=a&otherParam=B'
|
|
)
|
|
).toEqual({
|
|
host: 'https://[2604:2000::]',
|
|
macaroonHex: 'd36d356f',
|
|
port: '2058',
|
|
enableTor: false
|
|
});
|
|
});
|
|
|
|
it('validates all params correctly - different order params', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLndConnectUrl(
|
|
'lndconnect://8.8.8.8:2059?otherParam=B&macaroon=0201b6&cert=asfdaa'
|
|
)
|
|
).toEqual({
|
|
host: 'https://8.8.8.8',
|
|
macaroonHex: 'd36d356f',
|
|
port: '2059',
|
|
enableTor: false
|
|
});
|
|
});
|
|
|
|
it('validates onion addresses correctly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLndConnectUrl(
|
|
'lndconnect://fasm2nfsakmn2dd.onion:2059?otherParam=B&macaroon=0201b6&cert=asfdaa'
|
|
)
|
|
).toEqual({
|
|
host: 'https://fasm2nfsakmn2dd.onion',
|
|
macaroonHex: 'd36d356f',
|
|
port: '2059',
|
|
enableTor: true
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('processLncUrl', () => {
|
|
it('handles LNC configs to mailbox.terminal.lightning.today:443', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLncUrl(
|
|
'https://terminal.lightning.engineering#/connect/pair/ZmluZ2VyIHBvdGF0byBnbG9yeSBtYW5zaW9uIGRhcmluZyB2aWRlbyBhbmNpZW50IGhhcnZlc3QgZGVsaXZlciBjaXZpbHx8bWFpbGJveC50ZXJtaW5hbC5saWdodG5pbmcudG9kYXk6NDQz'
|
|
)
|
|
).toEqual({
|
|
pairingPhrase:
|
|
'finger potato glory mansion daring video ancient harvest deliver civil',
|
|
mailboxServer: 'mailbox.terminal.lightning.today:443',
|
|
customMailboxServer: undefined
|
|
});
|
|
});
|
|
|
|
it('handles LNC configs to lnc.zeusln.app:443', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLncUrl(
|
|
'https://terminal.lightning.engineering#/connect/pair/ZHVtYiBtaXN0YWtlIGxhbXAgY2hlZXNlIGNhYmxlIHNrYXRlIGZpZWxkIHRpZGUgcmV0cmVhdCBtZWF0fHxsbmMuemV1c2xuLmFwcDo0NDM='
|
|
)
|
|
).toEqual({
|
|
pairingPhrase:
|
|
'dumb mistake lamp cheese cable skate field tide retreat meat',
|
|
mailboxServer: 'lnc.zeusln.app:443',
|
|
customMailboxServer: undefined
|
|
});
|
|
});
|
|
|
|
it('handles LNC configs to custom mailboxes', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processLncUrl(
|
|
'https://terminal.lightning.engineering#/connect/pair/c2thdGUgZmllbGQgdGlkZSBjaGVlc2UgY2FibGUgc2thdGUgZmllbGQgdGlkZSByZXRyZWF0IG1lYXR8fGN1c3RvbS1sbmMuc2VydmVyLmFwcDo0NDM='
|
|
)
|
|
).toEqual({
|
|
pairingPhrase:
|
|
'skate field tide cheese cable skate field tide retreat meat',
|
|
mailboxServer: 'custom-defined',
|
|
customMailboxServer: 'custom-lnc.server.app:443'
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('processCLNRestConnectUrl', () => {
|
|
it('handles plainnet properly - w/o http forced', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest://8.8.0.0:2056?&rune=OSqc7ixY6F-gjcigBfxtzKUI54uzgFSA6YfBQoWGDV89MA==&protocol=http'
|
|
)
|
|
).toEqual({
|
|
host: 'https://8.8.0.0',
|
|
rune: 'OSqc7ixY6F-gjcigBfxtzKUI54uzgFSA6YfBQoWGDV89MA==',
|
|
port: '2056',
|
|
enableTor: false,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
|
|
it('handles plainnet properly - with http forced', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest://http://8.8.0.0:2056?&rune=OSqc7ixY6F-gjcigBfxtzKUI54uzgFSA6YfBQoWGDV89MA==&protocol=http'
|
|
)
|
|
).toEqual({
|
|
host: 'http://8.8.0.0',
|
|
rune: 'OSqc7ixY6F-gjcigBfxtzKUI54uzgFSA6YfBQoWGDV89MA==',
|
|
port: '2056',
|
|
enableTor: false,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
|
|
it('handles Tor properly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest://http://y7enfk2mdfawf.onion:2056?&rune=OSqc7ixY6F-gjcigBfxtzKUI54uzgFSA6YfBQoWGDV89MA==&protocol=http'
|
|
)
|
|
).toEqual({
|
|
host: 'http://y7enfk2mdfawf.onion',
|
|
rune: 'OSqc7ixY6F-gjcigBfxtzKUI54uzgFSA6YfBQoWGDV89MA==',
|
|
port: '2056',
|
|
enableTor: true,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
|
|
it('handles new format clnrest+https:// properly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest+https://cln.local:3010?rune=8hJ6ZKFvRune&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t'
|
|
)
|
|
).toEqual({
|
|
host: 'https://cln.local',
|
|
rune: '8hJ6ZKFvRune',
|
|
port: '3010',
|
|
enableTor: false,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
|
|
it('handles new format clnrest+http:// properly', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest+http://192.168.1.100:3010?rune=testRune123&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t'
|
|
)
|
|
).toEqual({
|
|
host: 'http://192.168.1.100',
|
|
rune: 'testRune123',
|
|
port: '3010',
|
|
enableTor: false,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
|
|
it('handles new format with IPv6', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest+https://[2604:2000::]:3010?rune=8hJ6ZKFvRune&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t'
|
|
)
|
|
).toEqual({
|
|
host: 'https://[2604:2000::]',
|
|
rune: '8hJ6ZKFvRune',
|
|
port: '3010',
|
|
enableTor: false,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
|
|
it('handles new format with Tor address', () => {
|
|
expect(
|
|
ConnectionFormatUtils.processCLNRestConnectUrl(
|
|
'clnrest+https://y7enfk2mdfawf.onion:3010?rune=8hJ6ZKFvRune&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t'
|
|
)
|
|
).toEqual({
|
|
host: 'https://y7enfk2mdfawf.onion',
|
|
rune: '8hJ6ZKFvRune',
|
|
port: '3010',
|
|
enableTor: true,
|
|
implementation: 'cln-rest'
|
|
});
|
|
});
|
|
});
|
|
});
|