Exemplo n.º 1
0
    def test_transfers_can_be_executed_with_enough_balance(self, select_for_transfer):
        account = EthereumAccountFactory()
        add_token_to_account(account, self.credit.as_token_amount, self.ETH.chain)
        add_eth_to_account(account, self.fee_amount, self.ETH.chain)

        select_for_transfer.return_value = account

        transfer = self._build_transfer(account)

        self.assertIsNotNone(transfer.status)
        self.assertFalse(transfer.is_finalized)
        self.assertEqual(transfer.status, TRANSFER_EVENT_TYPES.executed)
Exemplo n.º 2
0
    def test_transfers_are_confirmed_after_block_confirmation(self, select_for_transfer):
        account = EthereumAccountFactory()

        add_eth_to_account(account, self.fee_amount, self.ETH.chain)
        add_token_to_account(account, self.credit.as_token_amount, self.ETH.chain)
        select_for_transfer.return_value = account

        transfer = self._build_transfer(account)

        self.assertIsNotNone(transfer.status)
        self.assertFalse(transfer.is_finalized)
        self.assertEqual(transfer.status, TRANSFER_EVENT_TYPES.executed)

        self.ETH.chain.highest_block = app_settings.Transfer.minimum_confirmations
        self.ETH.chain.save()
        BlockFactory.create_batch(
            app_settings.Transfer.minimum_confirmations, chain=self.ETH.chain
        )
        self.assertTrue(transfer.is_finalized)
        self.assertEqual(transfer.status, TRANSFER_EVENT_TYPES.confirmed)
Exemplo n.º 3
0
    def test_user_balance_is_updated_on_completed_payment(self):
        tx = add_token_to_account(
            self.blockchain_route.account, self.order.as_token_amount, self.order.chain
        )
        self.order.chain.highest_block = (
            tx.block.number + app_settings.Payment.minimum_confirmations
        )
        self.order.chain.save()
        BlockFactory.create_batch(
            app_settings.Payment.minimum_confirmations, chain=self.order.chain
        )

        user_account = UserAccount(self.order.user)
        balance = user_account.get_balance(self.order.currency)
        self.assertEqual(balance.amount, self.order.amount)
Exemplo n.º 4
0
 def test_transaction_creates_blockchain_payment(self):
     add_token_to_account(
         self.blockchain_route.account, self.order.as_token_amount, self.order.chain
     )
     self.assertEqual(self.order.payments.count(), 1)
Exemplo n.º 5
0
 def test_transaction_sets_payment_as_received(self):
     add_token_to_account(
         self.blockchain_route.account, self.order.as_token_amount, self.order.chain
     )
     self.assertTrue(self.order.is_paid)
     self.assertFalse(self.order.is_confirmed)
Exemplo n.º 6
0
 def test_order_with_payment_is_not_open(self):
     route = BlockchainPaymentRoute.objects.filter(order=self.order).first()
     add_token_to_account(route.account, self.order.as_token_amount, self.order.chain)
     self.assertTrue(PaymentOrder.objects.paid().filter(id=self.order.id).exists())
     self.assertFalse(PaymentOrder.objects.unpaid().filter(id=self.order.id).exists())