class TestWalletService(unittest.TestCase): def setUp(self): self.NETWORKS_NAME = dict( (NETWORKS[netId]["name"], netId) for netId in NETWORKS.keys()) self.repo = Repository(net_id=NETWORK_ID, NETWORKS=NETWORKS) self.wallet_service = WalletService(repo=self.repo) @patch("common.utils.Utils.report_slack") @patch("common.blockchain_util.BlockChainUtil.create_account") def test_create_wallet(self, mock_create_account, mock_report_slack): mock_create_account.return_value = ( "323449587122651441342932061624154600879572532581", "26561428888193216265620544717131876925191237116680314981303971688115990928499", ) response = self.wallet_service.create_and_register_wallet( username="******") self.assertDictEqual( response, { "address": "323449587122651441342932061624154600879572532581", "private_key": "26561428888193216265620544717131876925191237116680314981303971688115990928499", "status": 0, "type": "GENERAL" }) @patch("common.utils.Utils.report_slack") @patch("wallets.dao.wallet_data_access_object.WalletDAO.get_wallet_details" ) @patch("wallets.dao.wallet_data_access_object.WalletDAO.insert_wallet") @patch( "wallets.dao.wallet_data_access_object.WalletDAO.add_user_for_wallet") def test_register_wallet(self, mock_add_user_for_wallet, mock_insert_wallet, mock_get_wallet_details, mock_report_slack): """ insert new wallet for user """ mock_get_wallet_details.return_value = [] address = "323449587122651441342932061624154600879572532581" type = "GENERAL" status = 0 username = "******" response = self.wallet_service.register_wallet(username, address, type, status) assert response self.assertRaises( Exception, self.wallet_service.register_wallet(username, address, type, status)) def test_remove_user_wallet(self): wallet_dao = WalletDAO(self.repo) username = "******" wallet = Wallet(address="32344958712265144", type="GENERAL", status=0) wallet_dao.insert_wallet(wallet) wallet_dao.add_user_for_wallet(wallet, username) self.wallet_service.remove_user_wallet(username) wallet_details = wallet_dao.get_wallet_data_by_username(username) if len(wallet_details) == 0: assert True else: assert False def tearDown(self): self.repo.execute("DELETE FROM wallet") self.repo.execute("DELETE FROM user_wallet")
def route_path(path, method, payload_dict, path_parameters): wallet_manager = WalletService(repo=db[NETWORK_ID]) path_exist = True response_data = None if "/wallet" == path and method == "POST": response_data = wallet_manager.create_and_register_wallet( username=payload_dict["username"]) elif "/wallet" == path and method == "GET": username = payload_dict["username"] response_data = wallet_manager.get_wallet_details(username=username) elif "/wallet/channel/deposit" == path and method == 'POST': response_data = wallet_manager.add_funds_to_channel( org_id=payload_dict['org_id'], group_id=payload_dict['group_id'], channel_id=payload_dict['channel_id'], sender=payload_dict['sender'], recipient=payload_dict['recipient'], order_id=payload_dict['order_id'], amount=payload_dict['amount'], currency=payload_dict['currency'], amount_in_cogs=payload_dict['amount_in_cogs']) elif "/wallet/status" == path: response_data = wallet_manager.set_default_wallet( username=payload_dict["username"], address=payload_dict['address']) elif "/wallet/channel/transactions" == path and method == 'GET': order_id = payload_dict.get('order_id', None) username = payload_dict.get('username', None) org_id = payload_dict.get('org_id', None) group_id = payload_dict.get('group_id', None) if order_id is not None: logger.info( f"Received request to fetch transactions against order_id: {order_id}" ) response_data = wallet_manager.get_channel_transactions_against_order_id( order_id=payload_dict["order_id"]) elif username is not None and group_id is not None and org_id is not None: logger.info( f"Received request to fetch transactions for username: {username} " f"group_id: {group_id} " f"org_id: {org_id}") response_data = wallet_manager.get_transactions_from_username_recipient( username=username, group_id=group_id, org_id=org_id) else: raise Exception("Bad Parameters") elif "/wallet/register" == path: username = payload_dict["username"] status = WalletStatus.ACTIVE.value wallet_address = payload_dict["address"] wallet_type = payload_dict['type'] if wallet_type not in WALLET_TYPES_ALLOWED: raise Exception("Wallet type invalid") wallet_manager.register_wallet(wallet_address, wallet_type, status, username) response_data = [] else: path_exist = False return path_exist, response_data