def assertEqualPayload(self, payload1, payload2): """Check that two payloads are the equivalent""" message_type1, message1, inputs1, outputs1 = unmake_payload(payload1) message_type2, message2, inputs2, outputs2 = unmake_payload(payload2) self.assertEqual(message_type1, message_type2) self.assertEqual(inputs1, inputs2) self.assertEqual(outputs1, outputs2) self.assertEqualMessage(message1, message2)
def assertEqualPayload(self, payload1, payload2): """Check that two payloads are the equivalent""" message1, message_payload1 = unmake_payload(payload1) message2, message_payload2 = unmake_payload(payload2) self.assertEqual(message_payload1.message_type, message_payload2.message_type) self.assertEqual(message_payload1.inputs, message_payload2.inputs) self.assertEqual(message_payload1.outputs, message_payload2.outputs) self.assertEqualMessage(message1, message2) self.assertEqual(message_payload1.signer.user_id, message_payload2.signer.user_id) self.assertEqual(message_payload1.signer.public_key, message_payload2.signer.public_key)
def assertValidPayload(self, payload, message, message_type): """Check that a payload is valid given its message type""" check_message_type, check_message, check_inputs, check_outputs = unmake_payload( payload) self.assertEqual(check_message_type, message_type) if message_type == RBACPayload.CREATE_ROLE: self.assertIsInstance(check_message, protobuf.role_transaction_pb2.CreateRole) elif message_type == RBACPayload.PROPOSE_ADD_ROLE_MEMBERS: self.assertIsInstance( check_message, protobuf.role_transaction_pb2.ProposeAddRoleMember) elif message_type == RBACPayload.PROPOSE_ADD_ROLE_OWNERS: self.assertIsInstance( check_message, protobuf.role_transaction_pb2.ProposeAddRoleOwner) elif message_type == RBACPayload.PROPOSE_ADD_ROLE_ADMINS: self.assertIsInstance( check_message, protobuf.role_transaction_pb2.ProposeAddRoleAdmin) else: raise Exception( "UserAssertions.assertValidPayload doesn't support message type {}" .format(message_type)) self.assertEqualMessage(check_message, message) self.assertIsInstance(check_inputs, list) self.assertIsInstance(check_outputs, list) inputs, outputs = self.make_addresses(message=message) self.assertEqual(check_inputs, inputs) self.assertEqual(check_outputs, outputs)
def assertValidPayload(self, payload, message, message_type): """Test a payload is valid given a user related message type""" check_message_type, check_message, check_inputs, check_outputs = unmake_payload( payload) self.assertEqual(check_message_type, message_type) if message_type == RBACPayload.CREATE_USER: self.assertIsInstance(check_message, protobuf.user_transaction_pb2.CreateUser) else: raise Exception( "UserAssertions.assertValidPayload doesn't support message type {}" .format(message_type)) self.assertEqualMessage(check_message, message) self.assertIsInstance(check_inputs, list) self.assertIsInstance(check_outputs, list) inputs, outputs = self.make_addresses(message=message) self.assertEqual(check_inputs, inputs) self.assertEqual(check_outputs, outputs)
def assertValidTransaction(self, transaction, payload, signer_public_key): """Check a transaction is valid given a payload""" if isinstance(transaction, bytes): decoded = transaction_pb2.Transaction() decoded.ParseFromString(transaction) transaction = decoded self.assertIsInstance(transaction, transaction_pb2.Transaction) self.assertValidTransactionHeader( header=transaction.header, signature=transaction.header_signature, payload=payload, signer_public_key=signer_public_key, ) self.assertEqualPayload(payload1=transaction.payload, payload2=payload) message_type, message, _, _, _ = unmake_payload(payload) self.assertValidPayload( payload=transaction.payload, message=message, message_type=message_type )
def unmake_payload(payload): """ Turn a payload back into a message """ return rbac_payload.unmake_payload(payload=payload)