text: import pytest
  
  from bigchaindb.models import Transaction
  from bigchaindb.tendermint.lib import Block
  
  BLOCKS_ENDPOINT = '/api/v1/blocks/'
  
  pytestmark = pytest.mark.tendermint
  
  
  @pytest.mark.bdb
  @pytest.mark.usefixtures('inputs')
  def test_get_block_endpoint(tb, client):
      b = tb
      tx = Transaction.create([b.me], [([b.me], 1)], asset={'cycle': 'hero'})
      tx = tx.sign([b.me_private])
      b.store_transaction(tx)
  
      block = Block(app_hash='random_utxo',
                    height=31,
                    transactions=[tx.id])
      b.store_block(block._asdict())
  
      res = client.get(BLOCKS_ENDPOINT + str(block.height))
      expected_response = {'height': block.height, 'transactions': [tx.to_dict()]}
      assert res.json == expected_response
      assert res.status_code == 200
  
  
  @pytest.mark.bdb
  @pytest.mark.usefixtures('inputs')
  def test_get_block_returns_404_if_not_found(client):
      res = client.get(BLOCKS_ENDPOINT + '123')
      assert res.status_code == 404
  
      res = client.get(BLOCKS_ENDPOINT + '123/')
      assert res.status_code == 404
  
  
  @pytest.mark.bdb
  def test_get_block_containing_transaction(tb, client):
      b = tb
      tx = Transaction.create([b.me], [([b.me], 1)], asset={'cycle': 'hero'})
      tx = tx.sign([b.me_private])
      b.store_transaction(tx)
  
      block = Block(app_hash='random_utxo',
                    height=13,
                    transactions=[tx.id])
      b.store_block(block._asdict())
  
      res = client.get('{}?transaction_id={}'.format(BLOCKS_ENDPOINT, tx.id))
      expected_response = [block.height]
      assert res.json == expected_response
      assert res.status_code == 200
  
  
  @pytest.mark.bdb
  def test_get_blocks_by_txid_endpoint_returns_empty_list_not_found(client):
      res = client.get(BLOCKS_ENDPOINT + '?transaction_id=')
      assert res.status_code == 200
      assert len(res.json) == 0
  
      res = client.get(BLOCKS_ENDPOINT + '?transaction_id=123')
      assert res.status_code == 200
      assert len(res.json) == 0
  
  
  @pytest.mark.bdb
  def test_get_blocks_by_txid_endpoint_returns_400_bad_query_params(client):
      res = client.get(BLOCKS_ENDPOINT)
      assert res.status_code == 400
  
      res = client.get(BLOCKS_ENDPOINT + '?ts_id=123')
      assert res.status_code == 400
      assert res.json == {
          'message': {
              'transaction_id': 'Missing required parameter in the JSON body or the post body or the query string'
          }
      }
  
      res = client.get(BLOCKS_ENDPOINT + '?transaction_id=123&foo=123')
      assert res.status_code == 400
      assert res.json == {
          'message': 'Unknown arguments: foo'
      }
  
      res = client.get(BLOCKS_ENDPOINT + '?transaction_id=123&status=123')
      assert res.status_code == 400
      assert res.json == {
          'message': 'Unknown arguments: status'
      }
  