Пример #1
0
    def test_retry_atomic(self):
        main_account = Account.get_main_account()
        txn0 = Transaction.objects.create(
            from_account=main_account,
            to_account=self.user_account,
            amount=0.21,
            currency=Transaction.ALGO,
            action=Transaction.OPT_IN,
            status=Transaction.REJECTED,
            atomic=True,
        )
        txn1 = Transaction.objects.create(from_account=self.user_account,
                                          to_account=self.user_account,
                                          amount=0,
                                          currency=Transaction.USDC,
                                          action=Transaction.OPT_IN,
                                          atomic=True,
                                          atomic_prev=txn0)
        txn2 = Transaction.objects.create(from_account=main_account,
                                          to_account=self.user_account,
                                          amount=0.1,
                                          currency=Transaction.USDC,
                                          action=Transaction.FUELING,
                                          atomic=True,
                                          atomic_prev=txn1)

        txids = txn0.retry()
        for txid in txids:
            self.assertTrue(utils.wait_for_confirmation(txid))

        self.assertEqual(Transaction.objects.count(), 6)
Пример #2
0
 def test_confirmed(self):
     main_account = Account.get_main_account()
     tx = Transaction.transfer(main_account, self.user_account, 0.1,
                               Transaction.ALGO, Transaction.OPT_IN)
     self.assertTrue(utils.wait_for_confirmation(tx.txid))
     verify_transactions()
     tx.refresh_from_db()
     self.assertEqual(tx.status, Transaction.CONFIRMED)
Пример #3
0
    def test_opt_in_chain(self):
        main_account = Account.get_main_account()
        txids = Transaction.opt_in(self.user_account, main_account, [
            Transaction.prepare_transfer(main_account, self.user_account,
                                         0.0001, Transaction.USDC,
                                         Transaction.FUELING),
        ])

        for txid in txids:
            self.assertTrue(utils.wait_for_confirmation(txid))
Пример #4
0
 def test_rejected_pool_error(self):
     main_account = Account.get_main_account()
     with patch('algorand.utils.transaction_info') as mock_transaction_info:
         mock_transaction_info.return_value = {'pool-error': 'error'}
         tx = Transaction.transfer(main_account, self.user_account, 0.1,
                                   Transaction.ALGO, Transaction.OPT_IN)
         self.assertTrue(utils.wait_for_confirmation(tx.txid))
         verify_transactions()
         tx.refresh_from_db()
         self.assertEqual(tx.status, Transaction.REJECTED)
         self.assertEqual(Transaction.objects.count(), 2)
Пример #5
0
    def handle(self, *args, **options):
        investor = CustomUser.objects.get(id=options['investor_id'])

        main_account = Account.get_main_account()
        investor_account = investor.account

        Transaction.transfer(main_account,
                             investor_account,
                             1000,
                             action=Transaction.FUELING)

        Transaction.transfer(main_account,
                             investor_account,
                             1000000,
                             currency=Transaction.USDC,
                             action=Transaction.FUELING)
Пример #6
0
    def test_retry_single(self):
        main_account = Account.get_main_account()
        txn = Transaction.objects.create(from_account=main_account,
                                         to_account=self.user_account,
                                         amount=0.1,
                                         currency=Transaction.ALGO,
                                         action=Transaction.FUELING,
                                         retries=3)

        with self.assertRaises(Exception):
            txn.retry()

        txn.retries = 0
        txn.save()

        with self.assertRaises(Exception):
            txn.retry()

        txn.status = Transaction.REJECTED
        txid = txn.retry()
        self.assertTrue(utils.wait_for_confirmation(txid))
Пример #7
0
def transfer_back_funds():
    accounts = Account.objects.filter(user__isnull=True,
                                      smart_contract__isnull=True,
                                      type=Account.NORMAL_ACCOUNT)[:10]

    try:
        main = Account.get_main_account()
    except Exception as e:
        logger.error("Error: %s", e)
        return

    for account in accounts:
        try:
            Transaction.transfer(account, main, 0, Transaction.USDC,
                                 Transaction.CLOSE, main)
            Transaction.transfer(account, main, 0, Transaction.ALGO,
                                 Transaction.CLOSE, main)

            account.delete()
            logger.warning("Account %s closed.", account.address)
        except Exception as e:
            logger.error("Error: %s", e)
Пример #8
0
    def test_rejected_atomic(self):
        main_account = Account.get_main_account()
        with patch('algorand.utils.transaction_info') as mock_transaction_info:
            mock_transaction_info.return_value = {
                'pool-error': '',
                'txn': {
                    'txn': {
                        'lv': utils.status()['last-round'] - 1000
                    }
                }
            }
            tx0 = Transaction.prepare_transfer(main_account, self.user_account,
                                               0.21, Transaction.ALGO,
                                               Transaction.OPT_IN)
            tx1 = Transaction.prepare_transfer(self.user_account,
                                               self.user_account, 0,
                                               Transaction.USDC,
                                               Transaction.OPT_IN)
            tx2 = Transaction.prepare_transfer(main_account, self.user_account,
                                               0.1, Transaction.USDC,
                                               Transaction.OPT_IN)
            txids = Transaction.atomic_transfer([tx0, tx1, tx2])
            for txid in txids:
                self.assertTrue(utils.wait_for_confirmation(txid))

            verify_transactions()

            self.assertEqual(
                Transaction.objects.filter(
                    status=Transaction.REJECTED).count(), 3)
            self.assertEqual(Transaction.objects.count(), 6)

            one_without_prev = False
            for txn in Transaction.objects.filter(retries=1):
                if not one_without_prev and txn.atomic_prev is None:
                    one_without_prev = True
                    continue

                self.assertFalse(txn.atomic_prev is None)
Пример #9
0
 def test_transfer(self):
     main_account = Account.get_main_account()
     txid = Transaction.transfer(main_account, self.user_account, 0.1,
                                 Transaction.ALGO, Transaction.OPT_IN)
     self.assertTrue(utils.wait_for_confirmation(txid.txid))
Пример #10
0
 def test_opt_in(self):
     main_account = Account.get_main_account()
     txids = Transaction.opt_in(self.user_account, main_account)
     for txid in txids:
         self.assertTrue(utils.wait_for_confirmation(txid))