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
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())
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())
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())