TS60 linhas1.602 bytes
apps/web/src/lib/donations.test.ts
SHA-256
c0069ba62dff07521e3ecd9a4b73674923455ff2e03ef8bae69ed842b74fe7c7
Somente leiturafonte-acf635076da2
import assert from 'node:assert/strict'
import test from 'node:test'
import {
explorerHref,
parseDonationWallets,
paymentUri,
} from './donations'
const valid = {
asset: 'Bitcoin',
symbol: 'BTC',
network: 'Bitcoin',
address: 'bc1qexampleaddress000000000000000000000000',
uriScheme: 'bitcoin',
explorerBaseUrl: 'https://mempool.space/address/',
networkWarning: 'Envie somente BTC pela rede Bitcoin.',
}
test('aceita carteira completa e cria links', () => {
const [wallet] = parseDonationWallets(JSON.stringify([valid]))
assert.equal(paymentUri(wallet), `bitcoin:${valid.address}`)
assert.equal(
explorerHref(wallet),
`https://mempool.space/address/${valid.address}`,
)
})
test('omite entradas incompletas e explorador sem HTTPS', () => {
const wallets = parseDonationWallets(
JSON.stringify([
valid,
{ ...valid, address: '' },
{ ...valid, explorerBaseUrl: 'http://example.com/' },
]),
)
assert.equal(wallets.length, 1)
})
test('retorna vazio para configuração ausente ou inválida', () => {
assert.deepEqual(parseDonationWallets(undefined), [])
assert.deepEqual(parseDonationWallets('{invalid'), [])
})
test('rejeita credenciais e parâmetros no explorador', () => {
const credentialUrl = [
'https://user:pass',
'example.com/address/',
].join(String.fromCharCode(64))
const wallets = parseDonationWallets(
JSON.stringify([
{ ...valid, explorerBaseUrl: credentialUrl },
{ ...valid, explorerBaseUrl: 'https://example.com/address/?source=site' },
]),
)
assert.deepEqual(wallets, [])
})