def test_find_by_address_returns_existin_wallet_from_redis(redis): manager = PoolWalletManager() existing_wallet = Wallet( {"address": "AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", "username": "******"} ) redis.set( "pool_wallet:address:AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", existing_wallet.to_json(), ) wallet = manager.find_by_address("AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof") assert len(redis.keys("pool_wallet:address:*")) == 1 assert wallet.to_json() == existing_wallet.to_json()
def test_find_by_address_copies_wallet_from_blockchain_wallet_manager(redis): manager = PoolWalletManager() chain_wallet = Wallet( {"address": "AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", "username": "******"} ) redis.set( "wallets:address:AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", chain_wallet.to_json() ) wallet = manager.find_by_address("AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof") assert redis.exists("pool_wallet:address:AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof") assert wallet.to_json() == chain_wallet.to_json()
def test_find_by_public_key_returns_existin_wallet_from_redis(redis): manager = PoolWalletManager() existing_wallet = Wallet( {"address": "AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", "username": "******"} ) redis.set( "pool_wallet:address:AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", existing_wallet.to_json(), ) wallet = manager.find_by_public_key( "020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a325" ) assert len(redis.keys("pool_wallet:address:*")) == 1 assert wallet.to_json() == existing_wallet.to_json()
def test_find_by_public_key_copies_wallet_from_blockchain_wallet_manager(redis): manager = PoolWalletManager() chain_wallet = Wallet( {"address": "AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", "username": "******"} ) redis.set( "wallets:address:AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof", chain_wallet.to_json() ) wallet = manager.find_by_public_key( "020f5df4d2bc736d12ce43af5b1663885a893fade7ee5e62b3cc59315a63e6a325" ) assert redis.exists("pool_wallet:address:AThM5PNSKdU9pu1ydqQnzRWVeNCGr8HKof") assert wallet.to_json() == chain_wallet.to_json()
def test_can_apply_to_sender_returns_true_if_everything_ok(redis, crypto_transaction): manager = PoolWalletManager() chain_wallet = Wallet( {"address": "AS2YSSDbbXBAehfbm1KAEvJMJFdPPT2aRT", "balance": 133700000} ) redis.set( "wallets:address:AS2YSSDbbXBAehfbm1KAEvJMJFdPPT2aRT", chain_wallet.to_json() ) crypto_transaction.second_signature = None crypto_transaction.sign_signature = None can_apply = manager.can_apply_to_sender(crypto_transaction, 2243161) assert can_apply is True
def test_can_apply_to_sender_returns_false_if_balance_is_zero( redis, crypto_transaction ): manager = PoolWalletManager() chain_wallet = Wallet( {"address": "AMm7u2Kpaf3gY2Y96MovudH2q65WHi8Sqd", "balance": 0} ) redis.set( "wallets:address:AMm7u2Kpaf3gY2Y96MovudH2q65WHi8Sqd", chain_wallet.to_json() ) can_apply = manager.can_apply_to_sender(crypto_transaction, 2243161) assert can_apply is False
def __init__(self, redis, **kwargs): if "address" not in kwargs and "public_key" not in kwargs: raise ValueError("address or public_key are required") address = kwargs.get("address") if not address: address = address_from_public_key(kwargs["public_key"]) kwargs["address"] = address self.key = "wallets:address:{}".format(address) self.redis = redis wallet = Wallet(kwargs) redis.set(self.key, wallet.to_json()) self._set_attributes(wallet)
def test_can_apply_to_sender_returns_true_if_transaction_is_exception( redis, crypto_transaction, mocker ): manager = PoolWalletManager() exception_mock = mocker.patch( "chain.plugins.transaction_pool.pool_wallet_manager.is_transaction_exception", return_value=True, ) chain_wallet = Wallet( {"address": "AMm7u2Kpaf3gY2Y96MovudH2q65WHi8Sqd", "balance": 133700000} ) redis.set( "wallets:address:AMm7u2Kpaf3gY2Y96MovudH2q65WHi8Sqd", chain_wallet.to_json() ) can_apply = manager.can_apply_to_sender(crypto_transaction, 2243161) assert can_apply is True exception_mock.assert_called_once_with(crypto_transaction.id)