def test_get_wallets(self, invoke_lambda_mock):
     invoke_lambda_mock.return_value = {
         "statusCode":
         200,
         "body":
         json.dumps({
             "status": "success",
             "data": {
                 "username":
                 "******",
                 "wallets": [{
                     "address": "0x123",
                     "is_default": 1,
                     "type": "GENERAL",
                     "status": 0
                 }]
             },
         })
     }
     username = "******"
     wallet_required_keys = ["address", "is_default", "type", "status"]
     wallets = WalletService().get_wallets(username)
     assert isinstance(wallets, dict)
     assert "username" in wallets
     assert "wallets" in wallets
     if len(wallets["wallets"]) > 0:
         wallet_details = wallets["wallets"][0]
         assert validate_dict(wallet_details, wallet_required_keys)
 def __init__(self, obj_repo):
     self.repo = obj_repo
     self.obj_transaction_history_dao = TransactionHistoryDAO(self.repo)
     self.lambda_client = boto3.client('lambda', region_name=REGION_NAME)
     self.boto_client = BotoUtils(REGION_NAME)
     self.wallet_service = WalletService()
     self.obj_blockchain_util = BlockChainUtil(
         provider_type="HTTP_PROVIDER",
         provider=NETWORKS[NETWORK_ID]['http_provider']
     )
     self.utils = Utils()
 def test_set_default_wallet(self, invoke_lambda_mock):
     invoke_lambda_mock.return_value = {
         "statusCode": 200,
         "body": json.dumps({
             "status": "success",
             "data": "OK"
         })
     }
     username = "******"
     address = "0x123"
     register_wallet_response = WalletService().set_default_wallet(
         username, address)
     self.assertEqual(register_wallet_response, "OK")
def route_path(path, method, payload_dict, request_context, path_parameters):
    obj_order_service = OrderService(obj_repo=db[NETWORK_ID])
    path_exist = True
    response_data = None

    if "/wallet" == path:
        username = request_context["authorizer"]["claims"]["email"]
        logger.info(f"Received request to get wallets for user:{username}")
        response_data = WalletService().get_wallets(username)

    elif "/wallet/channel" == path and method == 'GET':
        org_id = payload_dict["org_id"]
        username = request_context["authorizer"]["claims"]["email"]
        group_id = payload_dict["group_id"]
        response_data = WalletService().get_channel_details(
            username, org_id, group_id)

    elif re.match("(\/order\/)[^\/]*[/]{0,1}$", path):
        """ Format /order/{orderId} """
        username = request_context["authorizer"]["claims"]["email"]
        order_id = path_parameters["order_id"]
        response_data = obj_order_service.get_order_details_by_order_id(
            username=username, order_id=order_id)

    elif "/wallet/register" == path and method == "POST":
        username = request_context["authorizer"]["claims"]["email"]
        response_data = WalletService().register_wallet(
            username=username, wallet_details=payload_dict)

    elif "/wallet/status" == path and method == "POST":
        username = request_context["authorizer"]["claims"]["email"]
        response_data = WalletService().set_default_wallet(
            username=username, address=payload_dict["address"])

    else:
        path_exist = False

    return path_exist, response_data
    def test_register_wallet(self, invoke_lambda_mock):
        invoke_lambda_mock.return_value = {
            "statusCode": 200,
            "body": json.dumps({
                "status": "success",
                "data": []
            })
        }

        username = "******"
        wallet_details = {"address": "0x123", "type": "METAMASK"}
        register_wallet_response = WalletService().register_wallet(
            username, wallet_details)
        assert isinstance(register_wallet_response, list)
    def test_get_channel_details(self, mock_channels_from_contract,
                                 mock_channel_transactions):
        mock_channel_transactions.return_value = [{
            "address":
            "0x123",
            "is_default":
            1,
            "type":
            "GENERAL",
            "transactions": [{
                "org_id": "snet",
                "group_id": "default-group",
                "recipient": "0x123",
                "amount": 123,
                "transaction_type": "channelAddFunds",
                "currency": "USD",
                "status": "PENDING",
                "created_at": "2019-10-18 09:59:13"
            }]
        }]
        mock_channels_from_contract.return_value = [{
            "channel_id": 117,
            "recipient": "0x234",
            "balance_in_cogs": "135.00000000",
            "pending": "0E-8",
            "nonce": 0,
            "expiration": 11111111,
            "signer": "0x345",
            "status": "active"
        }]

        username = "******"
        org_id = "dummy"
        group_id = "dummy-group"

        channel_details = WalletService().get_channel_details(
            username, org_id, group_id)
        assert validate_dict(channel_details,
                             ["username", "org_id", "group_id", "wallets"])
        assert isinstance(channel_details["wallets"], list)
        assert validate_dict(channel_details["wallets"][0], ["channels"])
        assert isinstance(channel_details["wallets"][0]["channels"], list)
 def test_get_channels_from_contract(self, invoke_lambda_mock):
     invoke_lambda_mock.return_value = {
         "statusCode":
         200,
         "body":
         json.dumps({
             "status": "success",
             "data": {
                 "username":
                 "******",
                 "group_id":
                 "dummy-group",
                 "org_id":
                 "dummy",
                 "channels": [{
                     "channel_id": 117,
                     "recipient": "0x234",
                     "balance_in_cogs": "135.00000000",
                     "pending": "0E-8",
                     "nonce": 0,
                     "expiration": 11111111,
                     "signer": "0x345",
                     "status": "active"
                 }]
             }
         })
     }
     username = "******"
     org_id = "dummy"
     group_id = "dummy-group"
     transaction_keys = [
         "channel_id", "recipient", "balance_in_cogs", "pending", "nonce",
         "expiration", "signer", "status"
     ]
     channel_transactions = WalletService().get_channels_from_contract(
         username, org_id, group_id)
     assert isinstance(channel_transactions, list)
     if len(channel_transactions) > 0:
         transaction = channel_transactions[0]
         assert validate_dict(transaction, transaction_keys)
 def test_get_channel_transactions(self, invoke_lambda_mock):
     invoke_lambda_mock.return_value = {
         "statusCode":
         200,
         "body":
         json.dumps({
             "status": "success",
             "data": {
                 "username":
                 "******",
                 "wallets": [{
                     "address":
                     "0x123",
                     "is_default":
                     1,
                     "type":
                     "GENERAL",
                     "transactions": [{
                         "org_id": "snet",
                         "group_id": "default-group",
                         "recipient": "0x123",
                         "amount": 123,
                         "transaction_type": "channelAddFunds",
                         "currency": "USD",
                         "status": "PENDING",
                         "created_at": "2019-10-18 09:59:13"
                     }]
                 }]
             }
         })
     }
     username = "******"
     org_id = "dummy"
     group_id = "dummy-group"
     channel_transactions = WalletService().get_channel_transactions(
         username, org_id, group_id)
     assert isinstance(channel_transactions, list)
 def test_get_default_wallet(self, invoke_lambda_mock):
     invoke_lambda_mock.return_value = {
         "statusCode":
         200,
         "body":
         json.dumps({
             "status": "success",
             "data": {
                 "username":
                 "******",
                 "wallets": [{
                     "address": "0x123",
                     "is_default": 1,
                     "type": "GENERAL",
                     "status": 0
                 }]
             }
         })
     }
     username = "******"
     default_wallet = WalletService().get_default_wallet(username)
     assert isinstance(default_wallet, dict)
     assert validate_dict(default_wallet,
                          ["address", "is_default", "type", "status"])