mirror of
https://github.com/logos-storage/nim-nitro.git
synced 2026-01-06 15:43:10 +00:00
53 lines
1.6 KiB
Nim
53 lines
1.6 KiB
Nim
import ./basics
|
|
|
|
suite "wallet":
|
|
|
|
test "wallet can be created from private key":
|
|
let key = PrivateKey.random()
|
|
let wallet = Wallet.init(key)
|
|
check wallet.address == key.toPublicKey.toAddress
|
|
|
|
suite "wallet: opening ledger channel":
|
|
|
|
let key = PrivateKey.random()
|
|
let asset = EthAddress.example
|
|
let amount = 42.u256
|
|
let hub = EthAddress.example
|
|
let chainId = UInt256.example
|
|
let nonce = UInt48.example
|
|
|
|
var wallet: Wallet
|
|
var channel: Channel
|
|
|
|
setup:
|
|
wallet = Wallet.init(key)
|
|
channel = wallet.openLedgerChannel(hub, chainId, nonce, asset, amount)
|
|
|
|
test "creates a new upcoming state":
|
|
check channel.latest.isNone
|
|
check channel.upcoming.isSome
|
|
|
|
test "sets correct channel definition":
|
|
let definition = channel.upcoming?.state?.channel
|
|
check definition?.chainId == chainId.some
|
|
check definition?.nonce == nonce.some
|
|
check definition?.participants == @[wallet.address, hub].some
|
|
|
|
test "provides correct outcome":
|
|
let outcome = channel.upcoming?.state?.outcome
|
|
let destination = wallet.address.toDestination
|
|
check outcome == Outcome.init(asset, {destination: amount}).some
|
|
|
|
test "signs the upcoming state":
|
|
let state = channel.upcoming?.state
|
|
let signatures = channel.upcoming?.signatures
|
|
check signatures == @{wallet.address: key.sign(state.get)}.some
|
|
|
|
test "sets app definition and app data to zero":
|
|
check channel.upcoming?.state?.appDefinition == EthAddress.zero.some
|
|
check channel.upcoming?.state?.appData?.len == 0.some
|
|
|
|
test "updates the list of channels":
|
|
check wallet.channels == @[channel]
|
|
|