Source code for microraiden.test.test_channel_manager_db
import pytest
from microraiden.channel_manager import (
Channel,
ChannelState,
ChannelManagerState
)
CONTRACT_ADDRESS = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
RECEIVER_ADDRESS = '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
SENDER_ADDRESS = '0xcccccccccccccccccccccccccccccccccccccccc'
NETWORK_ID = 123
BLOCK_HASH = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
SIG = '0x' + 'bb' * 130
[docs]@pytest.fixture()
def state(tmpdir):
db = tmpdir.join("state.db")
state = ChannelManagerState(db.strpath)
state.setup_db(
NETWORK_ID,
CONTRACT_ADDRESS,
RECEIVER_ADDRESS
)
return state
[docs]def test_creation(state):
assert state.receiver == RECEIVER_ADDRESS
assert state.contract_address == CONTRACT_ADDRESS
assert state.network_id == NETWORK_ID
assert state.confirmed_head_number is None
assert state.confirmed_head_hash is None
assert state.unconfirmed_head_number is None
assert state.unconfirmed_head_hash is None
assert state.n_channels == 0
assert state.n_open_channels == 0
state_loaded = ChannelManagerState.load(state.filename, check_permissions=False)
assert state_loaded.confirmed_head_number is None
assert state_loaded.confirmed_head_hash is None
assert state_loaded.unconfirmed_head_number is None
assert state_loaded.unconfirmed_head_hash is None
assert state_loaded.n_channels == 0
assert state_loaded.n_open_channels == 0
[docs]def test_sync_state(state):
state.update_sync_state(confirmed_head_hash=BLOCK_HASH)
assert state.confirmed_head_hash == BLOCK_HASH
state.update_sync_state(confirmed_head_number=123)
assert state.confirmed_head_number == 123
state.update_sync_state(unconfirmed_head_hash=BLOCK_HASH)
assert state.unconfirmed_head_hash == BLOCK_HASH
state.update_sync_state(unconfirmed_head_number=321)
assert state.unconfirmed_head_number == 321
state_loaded = ChannelManagerState.load(state.filename, check_permissions=False)
assert state_loaded.confirmed_head_hash == BLOCK_HASH
assert state_loaded.confirmed_head_number == 123
assert state_loaded.unconfirmed_head_hash == BLOCK_HASH
assert state_loaded.unconfirmed_head_number == 321
[docs]def test_adding_channel(state):
channel = Channel(RECEIVER_ADDRESS, SENDER_ADDRESS, 100, 123)
channel.balance = 50
channel.state = ChannelState.OPEN
assert not state.channel_exists(channel.sender, channel.open_block_number)
state.add_channel(channel)
assert state.channel_exists(channel.sender, channel.open_block_number)
channel_retrieved = state.get_channel(channel.sender, channel.open_block_number)
assert channel_retrieved.sender == SENDER_ADDRESS
assert channel_retrieved.receiver == RECEIVER_ADDRESS
assert channel_retrieved.open_block_number == 123
assert channel_retrieved.deposit == 100
assert channel_retrieved.balance == 50
assert channel_retrieved.last_signature is None
assert channel_retrieved.is_closed is False
assert channel_retrieved.ctime == channel.ctime
assert channel_retrieved.mtime == channel.mtime
[docs]def test_updating_channel(state):
channel = Channel(RECEIVER_ADDRESS, SENDER_ADDRESS, 100, 123)
channel.balance = 50
channel.state = ChannelState.OPEN
state.add_channel(channel)
channel.deposit = 200
channel.balance = 100
channel.last_signature = SIG
channel.is_closed = True
channel.mtime = channel.mtime + 1
state.set_channel(channel)
channel_retrieved = state.get_channel(channel.sender, channel.open_block_number)
assert channel_retrieved.sender == SENDER_ADDRESS
assert channel_retrieved.receiver == RECEIVER_ADDRESS
assert channel_retrieved.open_block_number == 123
assert channel_retrieved.deposit == 200
assert channel_retrieved.balance == 100
assert channel_retrieved.last_signature == SIG
assert channel_retrieved.is_closed is True
assert channel_retrieved.ctime == channel.ctime
assert channel_retrieved.mtime == channel.mtime