def test_get_deploy_info(self): context = Mock(spec=IconScoreContext) score_address = create_address(1) self.storage._create_db_key = Mock( return_value=score_address.to_bytes()) self.storage._db.get = Mock(return_value=None) self.assertEqual(None, self.storage.get_deploy_info(context, score_address)) score_address = create_address(1) deploy_info = IconScoreDeployInfo(score_address, DeployState.INACTIVE, create_address(), ZERO_TX_HASH, create_tx_hash()) self.storage._create_db_key = Mock( return_value=score_address.to_bytes()) self.storage._db.get = Mock(return_value=deploy_info.to_bytes()) self.assertEqual( deploy_info.to_bytes(), self.storage.get_deploy_info(context, score_address).to_bytes())
def test_put_deploy_info(self): context = Mock(spec=IconScoreContext) score_address = create_address(1) deploy_info = IconScoreDeployInfo(score_address, DeployState.INACTIVE, create_address(), ZERO_TX_HASH, create_tx_hash()) self.storage._create_db_key = Mock( return_value=score_address.to_bytes()) self.storage._db.put = Mock() self.storage.put_deploy_info(context, deploy_info) self.storage._db.put.assert_called_once_with(context, score_address.to_bytes(), deploy_info.to_bytes())
def test_deploy_info_from_bytes_to_bytes_none_check(self): score_address = create_address(1) owner_address = create_address() tx_hash1 = create_tx_hash() tx_hash2 = ZERO_TX_HASH deploy_state = DeployState.INACTIVE info1 = IconScoreDeployInfo(score_address, deploy_state, owner_address, tx_hash1, tx_hash2) data = IconScoreDeployInfo.to_bytes(info1) self.assertTrue(isinstance(data, bytes)) info2 = IconScoreDeployInfo.from_bytes(data) self.assertEqual(info2.score_address, score_address) self.assertEqual(info2.deploy_state, deploy_state) self.assertEqual(info2.owner, owner_address) self.assertEqual(info2.current_tx_hash, tx_hash1) self.assertEqual(info2.next_tx_hash, tx_hash2)
def test_update_score_info(self): context = Mock(spec=IconScoreContext) score_address = create_address(1) tx_hash = create_tx_hash() self.storage.get_deploy_info = Mock(return_value=None) with self.assertRaises(InvalidParamsException) as e: self.storage.update_score_info(context, score_address, tx_hash) self.assertEqual(e.exception.code, ExceptionCode.INVALID_PARAMETER) self.assertEqual(e.exception.message, f'deploy_info is None: {score_address}') self.storage.get_deploy_info.assert_called_once_with( context, score_address) current_tx_hash = create_tx_hash() next_tx_hash = create_tx_hash() deploy_info = IconScoreDeployInfo(score_address, DeployState.INACTIVE, create_address(), current_tx_hash, next_tx_hash) self.storage.get_deploy_info = Mock(return_value=deepcopy(deploy_info)) with self.assertRaises(InvalidParamsException) as e: self.storage.update_score_info(context, score_address, tx_hash) self.assertEqual(e.exception.code, ExceptionCode.INVALID_PARAMETER) self.assertEqual( e.exception.message, f'Invalid update: ' f'tx_hash({tx_hash}) != next_tx_hash({next_tx_hash})') self.storage.get_deploy_info.assert_called_once_with( context, score_address) owner = create_address() current_tx_hash = create_tx_hash() deploy_info = IconScoreDeployInfo(score_address, DeployState.INACTIVE, owner, current_tx_hash, tx_hash) self.storage.get_deploy_info = Mock(return_value=deepcopy(deploy_info)) self.storage.put_deploy_info = Mock() self.storage.get_deploy_tx_params = Mock(return_value=None) with self.assertRaises(InvalidParamsException) as e: self.storage.update_score_info(context, score_address, tx_hash) self.assertEqual(e.exception.code, ExceptionCode.INVALID_PARAMETER) self.assertEqual(e.exception.message, f'tx_params is None: {tx_hash}') self.storage.get_deploy_info.assert_called_once_with( context, score_address) self.storage.put_deploy_info.assert_called_once() ret_context, ret_deploy_info = self.storage.put_deploy_info.call_args[ 0] self.assertEqual(ret_context, context) expected = IconScoreDeployInfo(score_address, DeployState.ACTIVE, owner, tx_hash, ZERO_TX_HASH) self.assertEqual(ret_deploy_info.to_bytes(), expected.to_bytes()) self.storage.get_deploy_info = Mock(return_value=deepcopy(deploy_info)) self.storage.put_deploy_info = Mock() self.storage.get_deploy_tx_params = Mock(return_value=Mock( spec=IconScoreDeployTXParams)) self.storage.update_score_info(context, score_address, tx_hash) self.storage.get_deploy_info.assert_called_once_with( context, score_address) self.storage.put_deploy_info.assert_called_once() ret_context, ret_deploy_info = self.storage.put_deploy_info.call_args[ 0] self.assertEqual(ret_context, context) expected = IconScoreDeployInfo(score_address, DeployState.ACTIVE, owner, tx_hash, ZERO_TX_HASH) self.assertEqual(ret_deploy_info.to_bytes(), expected.to_bytes()) self.storage.get_deploy_tx_params.assert_called_once_with( context, tx_hash)