def test_raw_transaction_serialization(): """Test the serialization for 'raw_transaction' speech-act works.""" raw_transaction_arg = ContractApiMessage.RawTransaction( "some_ledger_id", {"body": "some_body"}) msg = ContractApiMessage( message_id=2, target=1, performative=ContractApiMessage.Performative.RAW_TRANSACTION, raw_transaction=raw_transaction_arg, ) msg.to = "receiver" envelope = Envelope( to=msg.to, sender="sender", message=msg, ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) expected_envelope = envelope assert expected_envelope.to == actual_envelope.to assert expected_envelope.sender == actual_envelope.sender assert (expected_envelope.protocol_specification_id == actual_envelope.protocol_specification_id) assert expected_envelope.message != actual_envelope.message actual_msg = ContractApiMessage.serializer.decode(actual_envelope.message) actual_msg.to = actual_envelope.to actual_msg.sender = actual_envelope.sender expected_msg = msg assert expected_msg == actual_msg
def test_handle_raw_transaction(self): """Test the _handle_raw_transaction method of the contract_api handler.""" # setup contract_api_dialogue = cast( ContractApiDialogue, self.prepare_skill_dialogue( dialogues=self.contract_api_dialogues, messages=self.list_of_contract_api_messages[:1], ), ) contract_api_dialogue.terms = self.terms incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=contract_api_dialogue, performative=ContractApiMessage.Performative.RAW_TRANSACTION, raw_transaction=ContractApiMessage.RawTransaction(LEDGER_ID, {}), ) # operation with patch.object(self.logger, "log") as mock_logger: self.contract_api_handler.handle(incoming_message) # after mock_logger.assert_any_call( logging.INFO, f"received raw transaction={incoming_message}", ) mock_logger.assert_any_call( logging.INFO, "proposing the transaction to the decision maker. Waiting for confirmation ...", ) self.assert_quantity_in_decision_making_queue(1)
def test_handle_raw_transaction(self, ): """Test the _handle_signed_transaction method of the signing handler.""" # setup contract_api_dialogue = cast( ContractApiDialogue, self.prepare_skill_dialogue( dialogues=self.contract_api_dialogues, messages=self.list_of_contract_api_messages[:1], ), ) contract_api_dialogue.terms = Terms( "some_ledger_id", self.skill.skill_context.agent_address, "counterprty", {"currency_id": 50}, {"good_id": -10}, "some_nonce", ) incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=contract_api_dialogue, performative=ContractApiMessage.Performative.RAW_TRANSACTION, raw_transaction=ContractApiMessage.RawTransaction( "some_ledger_id", {"some_key": "some_value"}), ) # operation with patch.object(self.logger, "log") as mock_logger: self.contract_api_handler.handle(incoming_message) # after mock_logger.assert_any_call( logging.INFO, f"received raw transaction={incoming_message}") self.assert_quantity_in_decision_making_queue(1) message = self.get_message_from_decision_maker_inbox() has_attributes, error_str = self.message_has_attributes( actual_message=message, message_type=SigningMessage, performative=SigningMessage.Performative.SIGN_TRANSACTION, to=self.skill.skill_context.decision_maker_address, sender=str(self.skill.skill_context.skill_id), terms=contract_api_dialogue.terms, ) assert has_attributes, error_str assert (cast(SigningDialogue, self.signing_dialogues.get_dialogue(message)). associated_contract_api_dialogue == contract_api_dialogue) mock_logger.assert_any_call( logging.INFO, "proposing the transaction to the decision maker. Waiting for confirmation ...", )