Example #1
0
    def mockup(cls):
        admin1 = Admin()
        admin1.email = '*****@*****.**'
        admin1.password = '******'
        admin1.is_active = True

        client1 = Client()
        client1.email = '*****@*****.**'
        client1.password = '******'
        client1.is_active = True
        client1.is_email_verified = True
        client1.is_evidence_verified = True

        cls.session.add(admin1)
        cls.session.add(client1)

        usd = Fiat(symbol='USD', name='USA Dollar')

        cls.session.add(usd)

        cls.session.commit()

        cls.client1_id = client1.id
Example #2
0
    def mockup(cls):
        client1 = Client()
        client1.email = '*****@*****.**'
        client1.password = '******'
        client1.is_active = True
        client1.is_email_verified = True
        client1.is_evidence_verified = True
        cls.session.add(client1)

        irr = Fiat(
            symbol='IRR',
            name='Iran Rial',
            normalization_scale=-5,
            smallest_unit_scale=-3,
        )
        cls.session.add(irr)

        # Adding a payment gateway
        shaparak = PaymentGateway()
        shaparak.name = "shaparak"
        shaparak.fiat_symbol = "IRR"
        shaparak.cashin_min = cashin_min
        shaparak.cashin_max = cashin_max
        shaparak.cashin_static_commission = cashin_static_commission
        shaparak.cashin_commission_rate = cashin_commission_rate
        shaparak.cashin_max_commission = cashin_max_commission
        cls.session.add(shaparak)

        shetab_address_1 = BankCard()
        shetab_address_1.pan = mockup_card_address
        shetab_address_1.holder = "Test Tester"
        shetab_address_1.client = client1
        shetab_address_1.fiat_symbol = "IRR"
        shetab_address_1.is_verified = True

        cls.session.add(shetab_address_1)

        cls.session.commit()

        cls.mockup_client_1_id = client1.id
        cls.mockup_shetab_address_1_id = shetab_address_1.id
        cls.mockup_payment_gateway_name = shaparak.name

        class MockStexchangeClient(StexchangeClient):
            def __init__(self, headers=None):
                super().__init__("", headers)
                self.mock_balance = ["0", "0"]

            def asset_list(self):
                return ujson.loads('[{"name": "IRR", "prec": 2}]')

            def balance_update(self, user_id, asset, business, business_id, change, detail):
                if user_id == cls.mockup_client_1_id and business == 'cashin' and asset == 'IRR':
                    self.mock_balance[0] = '{:.8f}'.format(Decimal(self.mock_balance[0]) + Decimal(change))
                return ujson.loads(
                    '{"IRR": {"available": "' +
                    self.mock_balance[0] +
                    '", "freeze": "' +
                    self.mock_balance[1] +
                    '"}}'
                )

            def balance_query(self, *args, **kwargs):
                return ujson.loads(
                    '{"IRR": {"available": "' +
                    self.mock_balance[0] +
                    '", "freeze": "' +
                    self.mock_balance[1] +
                    '"}}'
                )

        stexchange_client._set_instance(MockStexchangeClient())
Example #3
0
    def mockup(cls):
        client1 = Client()
        client1.email = '*****@*****.**'
        client1.password = '******'
        client1.is_active = True
        client1.is_evidence_verified = True
        cls.session.add(client1)

        usd = Fiat(symbol='USD',
                   name='USA Dollar',
                   smallest_unit_scale=-1,
                   normalization_scale=0)
        btc = Cryptocurrency(symbol='BTC',
                             name='Bitcoin',
                             wallet_id='BTC',
                             smallest_unit_scale=-4,
                             normalization_scale=0)
        btc_usd = Market(
            name="BTC_USD",
            base_currency=btc,
            quote_currency=usd,
            buy_amount_min=10,
            buy_amount_max=10000,
            sell_amount_min=0,
            sell_amount_max=0,
            taker_commission_rate="0.4",
            maker_commission_rate="0.1",
        )
        cls.session.add(btc_usd)

        cls.session.commit()

        cls.market1_name = btc_usd.name
        cls.mockup_client_1_id = client1.id

        class MockStexchangeClient(StexchangeClient):
            def __init__(self, headers=None):
                super().__init__("", headers)
                self.mock_balance_btc = ['0', '0']
                self.mock_balance_usd = ['15500', '0']

            def asset_list(self):
                return ujson.loads(
                    '[{"name": "BTC", "prec": 8}, {"name": "USD", "prec": 2}]')

            def market_last(self, market):
                if market == 'BTC_USD':
                    return '1000.00000000'

            def balance_update(self, user_id, asset, business, business_id,
                               change, detail):
                if user_id == cls.mockup_client_1_id and business in [
                        'deposit', 'withdraw'
                ]:
                    (self.mock_balance_btc if asset == 'BTC' else
                     self.mock_balance_usd)[0] += int(change)
                    return ujson.loads('{"btc": {"available": "' +
                                       self.mock_balance_btc[0] +
                                       '", "freeze": "' +
                                       self.mock_balance_btc[1] +
                                       '"}, {usd": {"available": "' +
                                       self.mock_balance_usd[0] +
                                       '", "freeze": "' +
                                       self.mock_balance_usd[1] + '"}}')
                else:
                    raise StexchangeUnknownException("Error updateing balance")

            def balance_query(self, *args, **kwargs):
                return ujson.loads('{"btc": {"available": "' +
                                   self.mock_balance_btc[0] +
                                   '", "freeze": "' +
                                   self.mock_balance_btc[1] +
                                   '"}, {usd": {"available": "' +
                                   self.mock_balance_usd[0] +
                                   '", "freeze": "' +
                                   self.mock_balance_usd[1] + '"}}')

            def order_put_limit(self, user_id, market, side, amount, price,
                                taker_fee_rate, maker_fee_rate, source):
                if Decimal(amount) == Decimal('120'):
                    raise BalanceNotEnoughException(0)

                return ujson.loads(
                    """{"price": "2", "id": 62, "side": 2, "market": "BTC_USD", "taker_fee": "0.1",
                "type": 1, "deal_fee": "0", "deal_stock": "0", "maker_fee": "0.1", "source": "abc", "user": 1,
                "left": "100", "ctime": 1547419213.026914, "mtime": 1547419213.026914, "amount": "100", "deal_money":
                "0"} """)

            def order_put_market(self, user_id, market, side, amount,
                                 taker_fee_rate, source):
                if Decimal(amount) == Decimal('120'):
                    raise BalanceNotEnoughException(0)
                return ujson.loads(
                    """{"price": "0", "id": 63, "side": 1, "market": "BTC_USD", "taker_fee":
                "0.1", "type": 2, "deal_fee": "0.6", "deal_stock": "3", "maker_fee": "0", "source": "cbd", "user": 1,
                "left": "0e-8", "ctime": 1547419213.029479, "mtime": 1547419213.029483, "amount": "3", "deal_money":
                "6"}""")

            def order_pending(self, user_id, market, offset, limit):
                return ujson.loads(
                    """{"limit": 10, "offset": 0, "total": 1, "records": [{"price": "2", "id": 62,
                "side": 2, "market": "BTC_USD", "taker_fee": "0.1", "type": 1, "deal_fee": "0.3",
                "deal_stock": "3", "maker_fee": "0.1", "source": "abc", "user": 1, "left": "97",
                "ctime": 1547419213.026914, "mtime": 1547419213.029483, "amount": "100", "deal_money": "6"}]}"""
                )

            def order_pending_detail(self, market, order_id):
                return ujson.loads(
                    """{"price": "2", "id": 62, "side": 2, "market": "BTC_USD", "taker_fee":
                "0.1", "type": 1, "deal_fee": "0.3", "deal_stock": "3", "maker_fee": "0.1", "source": "abc",
                "user": 1, "left": "97", "ctime": 1547419213.026914, "mtime": 1547419213.029483, "amount": "100",
                "deal_money": "6"}""")

            def order_finished(self, user_id, market, start_time, end_time,
                               offset, limit, side):
                if market == 'BTC_USD' and user_id == cls.mockup_client_1_id and offset < 18:
                    return ujson.loads(
                        """{"offset": 0, "limit": 20, "records": [{"id": 61, "source": "cbd", "side":
                    1, "type": 2, "deal_money": "6", "ctime": 1547419172.446086, "ftime": 1547419172.446089,
                    "user": 1, "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1",
                    "maker_fee": "0", "deal_stock": "3", "deal_fee": "0.6"}, {"id": 59, "source": "cbd", "side": 1,
                    "type": 2, "deal_money": "6", "ctime": 1547419117.217955, "ftime": 1547419117.217958, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "0.6"}, {"id": 57, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "6", "ctime": 1547419093.255911, "ftime": 1547419093.255915, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "0.6"}, {"id": 55, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "6", "ctime": 1547419090.1647, "ftime": 1547419090.164703, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "0.6"}, {"id": 53, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "6", "ctime": 1547419079.117208, "ftime": 1547419079.117212, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "0.6"}, {"id": 51, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "2", "ctime": 1547419050.312686, "ftime": 1547419050.312692, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "0.2"}, {"id": 49, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "2", "ctime": 1547419045.695398, "ftime": 1547419045.695404, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "0.2"}, {"id": 47, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "2", "ctime": 1547419044.574593, "ftime": 1547419044.574597, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "0.2"}, {"id": 45, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "2", "ctime": 1547419043.018587, "ftime": 1547419043.018591, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "0.2"}, {"id": 43, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "88", "ctime": 1547419014.449556, "ftime": 1547419014.44956, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "8.8"}, {"id": 41, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "88", "ctime": 1547419005.914382, "ftime": 1547419005.914387, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "8.8"}, {"id": 39, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "88", "ctime": 1547418994.681865, "ftime": 1547418994.681873, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "8.8"}, {"id": 37, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "88", "ctime": 1547418971.478641, "ftime": 1547418971.478644, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "1", "deal_fee": "8.8"}, {"id": 35, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "176", "ctime": 1547418955.745287, "ftime": 1547418955.745518, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "2", "deal_fee": "17.6"}, {"id": 33, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "264", "ctime": 1547418943.696649, "ftime": 1547418943.697126, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "26.4"}, {"id": 31, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "264", "ctime": 1547418864.639109, "ftime": 1547418864.639465, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "26.4"}, {"id": 29, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "264", "ctime": 1547418683.910061, "ftime": 1547418683.910436, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "26.4"}, {"id": 27, "source": "cbd", "side": 1, "type": 2,
                    "deal_money": "264", "ctime": 1547418339.31098, "ftime": 1547418339.311348, "user": 1,
                    "market": "BTC_USD", "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0",
                    "deal_stock": "3", "deal_fee": "26.4"}]}""")
                raise StexchangeUnknownException()

            def order_finished_detail(self, order_id):
                if order_id == 57:
                    return ujson.loads(
                        """{"id": 57, "source": "cbd", "side": 1, "type": 2, "deal_money": "6",
                    "ctime": 1547419093.255911, "ftime": 1547419093.255915, "user": 1, "market": "BTC_USD",
                    "price": "0", "amount": "3", "taker_fee": "0.1", "maker_fee": "0", "deal_stock": "3", "deal_fee":
                    "0.6"}""")
                raise StexchangeUnknownException()

            def order_deals(self, order_id, offset, limit):
                if order_id == 1 and offset == 0:
                    return ujson.loads(
                        """{"offset": 0, "limit": 10, "records": []}""")
                raise StexchangeUnknownException()

            def order_cancel(self, user_id, market, order_id):
                if user_id == cls.mockup_client_1_id and market == 'BTC_USD' and order_id == 1:
                    return ujson.loads(
                        """{"price": "2", "id": 62, "side": 2, "market": "BTC_USD",
                    "taker_fee": "0.1", "type": 1, "deal_fee": "0.3", "deal_stock": "3", "maker_fee": "0.1",
                    "source": "abc", "user": 1, "left": "97", "ctime": 1547419213.026914, "mtime": 1547419213.029483,
                    "amount": "100", "deal_money": "6"}""")
                raise StexchangeUnknownException()

        stexchange_client._set_instance(MockStexchangeClient())
Example #4
0
    def mockup(cls):
        admin1 = Admin()
        admin1.email = '*****@*****.**'
        admin1.password = '******'
        admin1.is_active = True
        cls.session.add(admin1)

        client1 = Client()
        client1.email = '*****@*****.**'
        client1.password = '******'
        client1.is_active = True
        client1.is_email_verified = True
        client1.is_evidence_verified = True
        cls.session.add(client1)

        client2 = Client()
        client2.email = '*****@*****.**'
        client2.password = '******'
        client2.is_active = True
        client2.is_email_verified = True
        client2.is_evidence_verified = True
        cls.session.add(client2)

        irr = Fiat(
            symbol='IRR',
            name='Iran Rial',
        )
        cls.session.add(irr)

        # Adding a payment gateway
        shaparak = PaymentGateway()
        shaparak.name = "shaparak"
        shaparak.fiat_symbol = "IRR"
        shaparak.cashout_min = cashout_min
        shaparak.cashout_max = cashout_max
        shaparak.cashout_static_commission = cashout_static_commission
        shaparak.cashout_commission_rate = cashout_commission_rate
        shaparak.cashout_max_commission = cashout_max_commission
        cls.session.add(shaparak)

        # Mine, verified:
        sheba_address_1 = BankAccount()
        sheba_address_1.iban = 'IR123456789123456789123456'
        sheba_address_1.owner = "Client One"
        sheba_address_1.client = client1
        sheba_address_1.fiat_symbol = "IRR"
        sheba_address_1.is_verified = True

        # Mine, unverified:
        sheba_address_2 = BankAccount()
        sheba_address_2.iban = 'IR837498056254698443242343'
        sheba_address_2.owner = "Client One"
        sheba_address_2.client = client1
        sheba_address_2.fiat_symbol = "IRR"
        sheba_address_2.is_verified = False

        # Other's, verified:
        sheba_address_3 = BankAccount()
        sheba_address_3.iban = 'IR837498056254698443242343'
        sheba_address_3.owner = "Client Two"
        sheba_address_3.client = client2
        sheba_address_3.fiat_symbol = "IRR"
        sheba_address_3.is_verified = True

        for address in [sheba_address_1, sheba_address_2, sheba_address_3]:
            cls.session.add(address)

        cls.session.commit()

        cls.mockup_client_1_id = client1.id

        cls.mockup_sheba_address_verified_id = sheba_address_1.id
        cls.mockup_sheba_address_unverified_id = sheba_address_2.id
        cls.mockup_sheba_address_others_id = sheba_address_3.id
        cls.mockup_payment_gateway_name = shaparak.name

        class MockStexchangeClient(StexchangeClient):
            def __init__(self, headers=None):
                super().__init__("", headers)
                self.mock_balance = ["3001", "0"]

            def asset_list(self):
                return ujson.loads('[{"name": "IRR", "prec": 2}]')

            def balance_update(self, user_id, asset, business, business_id, change, detail):
                if user_id == cls.mockup_client_1_id and business in ['cashout', 'cashback'] and asset == 'IRR':
                    self.mock_balance[0] = '{:.8f}'.format(Decimal(change) + Decimal(self.mock_balance[0]))
                return ujson.loads(
                    '{"IRR": {"available": "' +
                    self.mock_balance[0] +
                    '", "freeze": "' +
                    self.mock_balance[1] +
                    '"}}'
                )

            def balance_query(self, *args, **kwargs):
                return ujson.loads(
                    '{"IRR": {"available": "' +
                    self.mock_balance[0] +
                    '", "freeze": "' +
                    self.mock_balance[1] +
                    '"}}'
                )

        stexchange_client._set_instance(MockStexchangeClient())