mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
txlist / get_transactions_filtered
This commit is contained in:
parent
dbb3414fd0
commit
1c918caf4c
@ -417,6 +417,19 @@ class Bigchain(object):
|
|||||||
|
|
||||||
return owned
|
return owned
|
||||||
|
|
||||||
|
def get_transactions_filtered(self, asset_id=None, operation=None):
|
||||||
|
"""
|
||||||
|
Get a list of transactions filtered on some criteria
|
||||||
|
"""
|
||||||
|
if not asset_id:
|
||||||
|
raise ValueError("Need asset_id")
|
||||||
|
txids = backend.query.get_txids_filtered(self.connection, asset_id,
|
||||||
|
operation)
|
||||||
|
for txid in txids:
|
||||||
|
tx, status = self.get_transaction(txid, True)
|
||||||
|
if status == self.TX_VALID:
|
||||||
|
yield tx
|
||||||
|
|
||||||
def create_block(self, validated_transactions):
|
def create_block(self, validated_transactions):
|
||||||
"""Creates a block given a list of `validated_transactions`.
|
"""Creates a block given a list of `validated_transactions`.
|
||||||
|
|
||||||
|
66
tests/test_txlist.py
Normal file
66
tests/test_txlist.py
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
"""
|
||||||
|
Test getting a list of transactions from the backend.
|
||||||
|
|
||||||
|
This test module defines it's own fixture which is used by all the tests.
|
||||||
|
"""
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def txlist(b, user_pk, user2_pk, user_sk, user2_sk, genesis_block):
|
||||||
|
from bigchaindb.models import Transaction
|
||||||
|
prev_block_id = genesis_block.id
|
||||||
|
|
||||||
|
# Create first block with CREATE transactions
|
||||||
|
create1 = Transaction.create([user_pk], [([user2_pk], 6)]) \
|
||||||
|
.sign([user_sk])
|
||||||
|
create2 = Transaction.create([user2_pk],
|
||||||
|
[([user2_pk], 5), ([user_pk], 5)]) \
|
||||||
|
.sign([user2_sk])
|
||||||
|
block1 = b.create_block([create1, create2])
|
||||||
|
b.write_block(block1)
|
||||||
|
|
||||||
|
# Create second block with TRANSFER transactions
|
||||||
|
transfer1 = Transaction.transfer(create1.to_inputs(),
|
||||||
|
[([user_pk], 8)],
|
||||||
|
create1.id).sign([user2_sk])
|
||||||
|
block2 = b.create_block([transfer1])
|
||||||
|
b.write_block(block2)
|
||||||
|
|
||||||
|
# Create block with double spend
|
||||||
|
tx_doublespend = Transaction.transfer(create1.to_inputs(),
|
||||||
|
[([user_pk], 9)],
|
||||||
|
create1.id).sign([user2_sk])
|
||||||
|
block_doublespend = b.create_block([tx_doublespend])
|
||||||
|
b.write_block(block_doublespend)
|
||||||
|
|
||||||
|
# Vote on all the blocks
|
||||||
|
prev_block_id = genesis_block.id
|
||||||
|
for bid in [block1.id, block2.id]:
|
||||||
|
vote = b.vote(bid, prev_block_id, True)
|
||||||
|
prev_block_id = bid
|
||||||
|
b.write_vote(vote)
|
||||||
|
|
||||||
|
# Create undecided block
|
||||||
|
untx = Transaction.create([user_pk], [([user2_pk], 7)]) \
|
||||||
|
.sign([user_sk])
|
||||||
|
block_undecided = b.create_block([untx])
|
||||||
|
b.write_block(block_undecided)
|
||||||
|
|
||||||
|
return type('', (), {
|
||||||
|
'create1': create1,
|
||||||
|
'transfer1': transfer1,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.bdb
|
||||||
|
def test_get_txlist_by_asset(b, txlist):
|
||||||
|
res = b.get_transactions_filtered(txlist.create1.id)
|
||||||
|
assert set(tx.id for tx in res) == set([txlist.transfer1.id,
|
||||||
|
txlist.create1.id])
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.bdb
|
||||||
|
def test_get_txlist_by_operation(b, txlist):
|
||||||
|
res = b.get_transactions_filtered(txlist.create1.id, operation='CREATE')
|
||||||
|
assert set(tx.id for tx in res) == {txlist.create1.id}
|
Loading…
x
Reference in New Issue
Block a user