def test_get_receipts(self): """Tests that the TransactionReceiptGetRequestHandler will return a response with the receipt for the transaction requested. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipt = TransactionReceipt(data=[ TransactionReceipt.Data(data_type="dead", data="beef".encode()) ]) receipt_store.put("deadbeef", receipt) handler = ClientReceiptGetRequestHandler(receipt_store) request = ClientReceiptGetRequest( transaction_ids=['deadbeef']).SerializeToString() response = handler.handle('test_conn_id', request) self.assertEqual(HandlerStatus.RETURN, response.status) self.assertEqual(ClientReceiptGetResponse.OK, response.message_out.status) self.assertEqual([receipt], [r for r in response.message_out.receipts]) request = ClientReceiptGetRequest( transaction_ids=['unknown']).SerializeToString() response = handler.handle('test_conn_id', request) self.assertEqual(HandlerStatus.RETURN, response.status) self.assertEqual(ClientReceiptGetResponse.NO_RESOURCE, response.message_out.status)
def _make_receipts(self, results): receipts = [] for result in results: receipt = TransactionReceipt() receipt.data.extend([ TransactionReceipt.Data(data_type=data_type, data=data) for data_type, data in result.data ]) receipt.state_changes.extend(result.state_changes) receipt.events.extend(result.events) receipt.transaction_id = result.signature receipts.append(receipt) return receipts
def test_receipt_store_get_and_set(self): """Tests that we correctly get and set state changes to a ReceiptStore. This test sets a list of receipts and then gets them back, ensuring that the data is the same. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipts = [] for i in range(10): state_changes = [] events = [] data = [] for j in range(10): string = str(j) byte = string.encode() state_changes.append( StateChange(address='a100000' + string, value=byte, type=StateChange.SET)) events.append( Event( event_type="test", data=byte, attributes=[Event.Attribute(key=string, value=string)])) data.append( TransactionReceipt.Data(data_type="test", data=byte)) receipts.append( TransactionReceipt(state_changes=state_changes, events=events, data=data)) for i in range(len(receipts)): receipt_store.put(str(i), receipts[i]) for i in range(len(receipts)): stored_receipt = receipt_store.get(str(i)) self.assertEqual(stored_receipt.state_changes, receipts[i].state_changes) self.assertEqual(stored_receipt.events, receipts[i].events) self.assertEqual(stored_receipt.data, receipts[i].data)