@ledgerhq/coin-stellar
Version:
Ledger Stellar Coin integration
74 lines (63 loc) • 2.25 kB
text/typescript
// SPDX-FileCopyrightText: © 2026 LEDGER SAS
// SPDX-License-Identifier: Apache-2.0
import coinConfig, { type StellarCoinConfig } from '../config'
import { getBlock } from './getBlock'
import { getBlockInfo } from './getBlockInfo'
const FIXED_LEDGER_SEQUENCE = 20_000_000
let originalGetCoinConfig: () => StellarCoinConfig
const mainnetConfig = (): StellarCoinConfig =>
({
status: { type: 'active' },
explorer: {
url: 'https://stellar.coin.ledger.com',
fetchLimit: 200,
},
useStaticFees: true,
enableNetworkLogs: false,
}) as StellarCoinConfig
describe('getBlock (integration)', () => {
beforeAll(() => {
originalGetCoinConfig = coinConfig.getCoinConfig
coinConfig.setCoinConfig(mainnetConfig)
})
afterAll(() => {
if (originalGetCoinConfig) {
coinConfig.setCoinConfig(originalGetCoinConfig)
}
})
it('fetches ledger metadata and a known payment transaction', async () => {
const block = await getBlock(FIXED_LEDGER_SEQUENCE)
expect(block.info).toMatchObject({
height: FIXED_LEDGER_SEQUENCE,
hash: '40b150c63d127e52264369090402565489350c7c62aaf59c6daa86be20b1bc90',
time: new Date('2018-09-15T15:40:05.000Z'),
parent: {
height: FIXED_LEDGER_SEQUENCE - 1,
hash: '6b94d006f60d2b927a7e13c8b127ca45f4357914f52ece5343ff362a1be91fb1',
},
})
const knownPayment = block.transactions.find(
(tx) => tx.hash === 'efcffb9877c73e74a8c816f57fdeab578fb88646bfa7149399604b59f9ae9ff6'
)
expect(knownPayment).toMatchObject({
failed: false,
operations: expect.arrayContaining([
expect.objectContaining({
type: 'transfer',
address: 'GDL5OWCFRU6TJFZC6TRR5EJBWWFVGYAD3P2UKMF3P2JDKCDKHFM4AWES',
amount: -10000200n,
}),
expect.objectContaining({
type: 'transfer',
address: 'GBFLCCEXVXIONEMYTWCYJJFZN333CTFXGWJ23LACWLLQDFZSXBZRLHU5',
amount: 10000200n,
}),
]),
})
})
it('returns consistent metadata between getBlockInfo and getBlock', async () => {
const info = await getBlockInfo(FIXED_LEDGER_SEQUENCE)
const block = await getBlock(FIXED_LEDGER_SEQUENCE)
expect(info).toEqual(block.info)
})
})