def test_signature_validate(self): """GIVEN success tx, invalid public key tx, invalid signature tx, WHEN validate 3 tx THEN only success tx validate return true """ # GIVEN # init peer_auth for signautre channel = list(conf.CHANNEL_OPTION)[0] peer_auth = PeerAuthorization(channel=channel) # create txs success_tx = test_util.create_basic_tx("aaa", peer_auth) # public key and signature property must don't have setter invalid_public_tx = test_util.create_basic_tx("aaa", peer_auth) invalid_public_tx._Transaction__public_key = b'invalid_public' invalid_sign_tx = test_util.create_basic_tx("aaa", peer_auth) invalid_sign_tx._Transaction__signature = b'invalid_sign' hash_generator = get_tx_hash_generator(channel) tx_validator = TxValidator(channel, conf.CHANNEL_OPTION[channel]["send_tx_type"], hash_generator) # WHEN THEN self.assertTrue(tx_validator.validate(success_tx)) logging.debug("start validate invalid public key") self.assertFalse(tx_validator.validate(invalid_public_tx)) logging.debug("start validate invalid signature") self.assertFalse(tx_validator.validate(invalid_sign_tx))
def test_signature_validate(self): """ GIVEN success tx, invalid public key tx, invalid signature tx, WHEN validate 3 tx THEN only success tx validate return true """ # GIVEN # init peer_auth for signautre peer_auth = PeerAuthorization(public_file=conf.PUBLIC_PATH, pri_file=conf.PRIVATE_PATH, cert_pass=conf.DEFAULT_PW) # create txs success_tx = test_util.create_basic_tx("aaa", peer_auth) # public key and signature property must don't have setter invalid_public_tx = test_util.create_basic_tx("aaa", peer_auth) invalid_public_tx._Transaction__public_key = b'invalid_public' invalid_sign_tx = test_util.create_basic_tx("aaa", peer_auth) invalid_sign_tx._Transaction__signature = b'invalid_sign' # WHEN THEN self.assertTrue(Transaction.validate(success_tx)) logging.debug("start validate invalid public key") self.assertFalse( Transaction.validate(invalid_public_tx, is_exception_log=False)) logging.debug("start validate invalid signature") self.assertFalse( Transaction.validate(invalid_sign_tx, is_exception_log=False))
def test_put_transaction(self): """ Block 에 여러 개 transaction 들을 넣는 것을 test. """ block = Block(channel_name=conf.LOOPCHAIN_DEFAULT_CHANNEL) tx_list = [] tx_size = 10 for x in range(0, tx_size): tx = test_util.create_basic_tx(self.__peer_id, self.peer_auth) tx2 = test_util.create_basic_tx(self.__peer_id, self.peer_auth) tx_list.append(tx2) self.assertNotEqual(tx.tx_hash, "", "트랜잭션 생성 실패") self.assertTrue(block.put_transaction(tx), "Block에 트랜잭션 추가 실패") self.assertTrue(block.put_transaction(tx_list), "Block에 여러 트랜잭션 추가 실패") self.assertEqual(block.confirmed_tx_len, tx_size * 2, "트랜잭션 사이즈 확인 실패")
def generate_block(self): """임시 블럭 생성하는 메소드 :return: 임시 블럭 """ block = Block(channel_name=conf.LOOPCHAIN_DEFAULT_CHANNEL) for x in range(10): tx = test_util.create_basic_tx(self.__peer_id, self.__peer_auth) block.put_transaction(tx) block.generate_block(self.chain.last_block) return block
def generate_test_block(self): """ 임시 블럭 생성하는 메소드 :return: 임시 블럭 """ block = Block(channel_name=conf.LOOPCHAIN_DEFAULT_CHANNEL) for x in range(0, 10): tx = test_util.create_basic_tx(self.__peer_id, self.peer_auth) self.assertNotEqual(tx.tx_hash, "", "트랜잭션 생성 실패") self.assertTrue(block.put_transaction(tx), "Block에 트랜잭션 추가 실패") return block
def __add_single_tx_block_blockchain_return_tx(self): last_block = self.chain.last_block block = Block(channel_name=conf.LOOPCHAIN_DEFAULT_CHANNEL) tx = test_util.create_basic_tx(self.__peer_id, self.peer_auth) block.put_transaction(tx) logging.debug("tx_hash: " + tx.tx_hash) block.generate_block(last_block) block.block_status = BlockStatus.confirmed # add_block to blockchain self.assertTrue(self.chain.add_block(block), "Fail Add Block to BlockChain") return tx
def __generate_block_data(self) -> Block: """ block data generate :return: unsigned block """ genesis = Block(channel_name=conf.LOOPCHAIN_DEFAULT_CHANNEL) genesis.generate_block() # Block 생성 block = Block(channel_name=conf.LOOPCHAIN_DEFAULT_CHANNEL) # Transaction(s) 추가 for x in range(0, 10): block.put_transaction(test_util.create_basic_tx(self.__peer_id, self.peer_auth)) # Hash 생성 이 작업까지 끝내고 나서 Block을 peer에 보낸다 block.generate_block(genesis) return block