def test_charge_100(self):
     with self.assertRaises(Response) as cm:
         charge(self.db, self.janet, D('100'), 'http://localhost/')
     r = cm.exception
     assert r.code == 302
     janet = Participant.from_id(self.janet.id)
     assert self.janet.balance == janet.balance == 0
 def test_charge_100(self):
     with self.assertRaises(Response) as cm:
         charge(self.db, self.janet, D('100'), 'http://localhost/')
     r = cm.exception
     assert r.code == 302
     janet = Participant.from_id(self.janet.id)
     assert self.janet.balance == janet.balance == 0
Exemplo n.º 3
0
 def test_charge_suspended_user(self):
     self.db.run(
         """
         UPDATE participants
            SET is_suspended = true
          WHERE id = %s
     """, (self.janet.id, ))
     self.janet.set_attributes(is_suspended=True)
     with self.assertRaises(AccountSuspended):
         charge(self.db, self.janet, D('10.00'), 'http://localhost/')
Exemplo n.º 4
0
    def test_charge_100(self, save):
        def add_redirect_url_to_payin(payin):
            payin.SecureModeRedirectURL = 'some url'
            return payin

        save.side_effect = add_redirect_url_to_payin
        with self.assertRaises(Redirect):
            charge(self.db, self.janet, D('100'), 'http://localhost/')
        janet = Participant.from_id(self.janet.id)
        assert self.janet.balance == janet.balance == 0
Exemplo n.º 5
0
 def test_charge_100(self, Create):
     def add_redirect_url_to_payin(payin):
         payin.ExecutionDetails.SecureModeRedirectURL = 'some url'
         return payin
     Create.side_effect = add_redirect_url_to_payin
     with self.assertRaises(Response) as cm:
         charge(self.db, self.janet, D('100'), 'http://localhost/')
     r = cm.exception
     assert r.code == 302
     janet = Participant.from_id(self.janet.id)
     assert self.janet.balance == janet.balance == 0
Exemplo n.º 6
0
 def test_sync_with_mangopay(self):
     with mock.patch('liberapay.billing.exchanges.record_exchange_result') as rer:
         rer.side_effect = Foobar()
         with self.assertRaises(Foobar):
             charge(self.db, self.janet, PAYIN_CARD_MIN, 'http://localhost/')
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'pre'
     sync_with_mangopay(self.db)
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'succeeded'
     assert Participant.from_username('janet').balance == PAYIN_CARD_MIN
Exemplo n.º 7
0
    def test_charge_100(self, Create):
        def add_redirect_url_to_payin(payin):
            payin.ExecutionDetails.SecureModeRedirectURL = 'some url'
            return payin

        Create.side_effect = add_redirect_url_to_payin
        with self.assertRaises(Response) as cm:
            charge(self.db, self.janet, D('100'), 'http://localhost/')
        r = cm.exception
        assert r.code == 302
        janet = Participant.from_id(self.janet.id)
        assert self.janet.balance == janet.balance == 0
Exemplo n.º 8
0
 def test_sync_with_mangopay_deletes_charges_that_didnt_happen(self):
     with mock.patch('liberapay.billing.exchanges.record_exchange_result') as rer \
        , mock.patch('liberapay.billing.mangoapi.payIns.Create') as Create:
         rer.side_effect = Create.side_effect = Foobar
         with self.assertRaises(Foobar):
             charge(self.db, self.janet, D('33.67'), 'http://localhost/')
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'pre'
     sync_with_mangopay(self.db)
     exchanges = self.db.all("SELECT * FROM exchanges")
     assert not exchanges
     assert Participant.from_username('janet').balance == 0
Exemplo n.º 9
0
 def test_sync_with_mangopay(self):
     with mock.patch(
             'liberapay.billing.exchanges.record_exchange_result') as rer:
         rer.side_effect = Foobar()
         with self.assertRaises(Foobar):
             charge(self.db, self.janet, CHARGE_MIN, 'http://localhost/')
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'pre'
     sync_with_mangopay(self.db)
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'succeeded'
     assert Participant.from_username('janet').balance == CHARGE_MIN
Exemplo n.º 10
0
 def test_sync_with_mangopay_deletes_charges_that_didnt_happen(self):
     with mock.patch('liberapay.billing.exchanges.record_exchange_result') as rer \
        , mock.patch('liberapay.billing.mangoapi.payIns.Create') as Create:
         rer.side_effect = Create.side_effect = Foobar
         with self.assertRaises(Foobar):
             charge(self.db, self.janet, D('33.67'), 'http://localhost/')
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'pre'
     sync_with_mangopay(self.db)
     exchanges = self.db.all("SELECT * FROM exchanges")
     assert not exchanges
     assert Participant.from_username('janet').balance == 0
Exemplo n.º 11
0
 def test_sync_with_mangopay_deletes_charges_that_didnt_happen(self):
     pass  # this is for pep8
     with mock.patch('liberapay.billing.exchanges.record_exchange_result') as rer, \
          mock.patch('liberapay.billing.exchanges.DirectPayIn.save', autospec=True) as save:
         rer.side_effect = save.side_effect = Foobar
         with self.assertRaises(Foobar):
             charge(self.db, self.janet, D('33.67'), 'http://localhost/')
     exchange = self.db.one("SELECT * FROM exchanges")
     assert exchange.status == 'pre'
     sync_with_mangopay(self.db)
     exchanges = self.db.all("SELECT * FROM exchanges")
     assert not exchanges
     assert Participant.from_username('janet').balance == 0
Exemplo n.º 12
0
 def test_charge_exception(self, test_hook):
     test_hook.side_effect = Foobar
     exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
     assert exchange.note == "Foobar()"
     assert exchange.amount
     assert exchange.status == 'failed'
     janet = Participant.from_id(self.janet.id)
     assert self.janet.get_credit_card_error() == 'Foobar()'
     assert self.janet.balance == janet.balance == 0
Exemplo n.º 13
0
 def test_charge_exception(self, test_hook):
     test_hook.side_effect = Foobar
     exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
     assert exchange.note == "Foobar()"
     assert exchange.amount
     assert exchange.status == 'failed'
     janet = Participant.from_id(self.janet.id)
     assert self.janet.get_credit_card_error() == 'Foobar()'
     assert self.janet.balance == janet.balance == 0
 def test_charge_success_and_wallet_creation(self):
     self.db.run("UPDATE participants SET mangopay_wallet_id = NULL")
     self.janet.set_attributes(mangopay_wallet_id=None)
     exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
     janet = Participant.from_id(self.janet.id)
     assert exchange.note is None
     assert exchange.amount == 10
     assert exchange.status == 'succeeded'
     assert self.janet.balance == janet.balance == 10
Exemplo n.º 15
0
 def test_charge_failure(self, Create):
     Create.side_effect = fail_payin
     exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
     error = "1: oops"
     assert exchange.note == error
     assert exchange.amount
     assert exchange.status == 'failed'
     janet = self.janet.refetch()
     assert self.janet.get_credit_card_error() == error
     assert self.janet.balance == janet.balance == 0
Exemplo n.º 16
0
 def test_charge_failure(self, Create):
     Create.side_effect = fail_payin
     exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
     error = "1: oops"
     assert exchange.note == error
     assert exchange.amount
     assert exchange.status == 'failed'
     janet = self.janet.refetch()
     assert self.janet.get_credit_card_error() == error
     assert self.janet.balance == janet.balance == 0
Exemplo n.º 17
0
 def test_payout(self):
     e = charge(self.db, self.janet, D('46.00'), 'http://localhost/')
     assert e.status == 'succeeded', e.note
     self.janet.set_tip_to(self.homer, '42.00')
     self.janet.close('downstream')
     self.homer = self.homer.refetch()
     assert self.homer.balance == 46
     exchange = payout(self.db, self.homer, D('30.00'))
     assert exchange.note is None
     assert exchange.status == 'created'
     homer = Participant.from_id(self.homer.id)
     assert self.homer.balance == homer.balance == 16
     self.db.self_check()
Exemplo n.º 18
0
 def test_charge_success_and_wallet_creation(self):
     self.db.run("UPDATE participants SET mangopay_wallet_id = NULL")
     self.janet.set_attributes(mangopay_wallet_id=None)
     exchange = charge(self.db, self.janet, D('50'), 'http://localhost/')
     janet = Participant.from_id(self.janet.id)
     assert exchange.note is None
     assert exchange.amount == 50
     assert exchange.status == 'succeeded'
     assert self.janet.balance == janet.balance == 50
     assert janet.withdrawable_balance == 50
     with mock.patch.multiple(exchanges, QUARANTINE='1 month'):
         assert janet.withdrawable_balance == 0
         self.db.self_check()
Exemplo n.º 19
0
 def test_payout(self):
     e = charge(self.db, self.janet, D('46.00'), 'http://localhost/')
     assert e.status == 'succeeded', e.note
     self.janet.set_tip_to(self.homer, '42.00')
     self.janet.close('downstream')
     self.homer = self.homer.refetch()
     assert self.homer.balance == 46
     exchange = payout(self.db, self.homer, D('30.00'))
     assert exchange.note is None
     assert exchange.status == 'created'
     homer = Participant.from_id(self.homer.id)
     assert self.homer.balance == homer.balance == 16
     self.db.self_check()
Exemplo n.º 20
0
 def test_charge_success_and_wallet_creation(self):
     self.db.run("UPDATE participants SET mangopay_wallet_id = NULL")
     self.janet.set_attributes(mangopay_wallet_id=None)
     exchange = charge(self.db, self.janet, D('50'), 'http://localhost/')
     janet = Participant.from_id(self.janet.id)
     assert exchange.note is None
     assert exchange.amount == 50
     assert exchange.status == 'succeeded'
     assert self.janet.balance == janet.balance == 50
     assert janet.withdrawable_balance == 50
     with mock.patch.multiple(exchanges, QUARANTINE='1 month'):
         assert janet.withdrawable_balance == 0
         self.db.self_check()
Exemplo n.º 21
0
 def test_charge_failure(self, Create):
     def fail_payin(payin):
         payin.ExecutionDetails.SecureModeRedirectURL = None
         payin.ResultCode = '1'
         payin.ResultMessage = 'oops'
         payin.Status = 'FAILED'
         return payin
     Create.side_effect = fail_payin
     exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
     error = "1: oops"
     assert exchange.note == error
     assert exchange.amount
     assert exchange.status == 'failed'
     janet = self.janet.refetch()
     assert self.janet.get_credit_card_error() == error
     assert self.janet.balance == janet.balance == 0
Exemplo n.º 22
0
    def test_charge_failure(self, Create):
        def fail_payin(payin):
            payin.ExecutionDetails.SecureModeRedirectURL = None
            payin.ResultCode = '1'
            payin.ResultMessage = 'oops'
            payin.Status = 'FAILED'
            return payin

        Create.side_effect = fail_payin
        exchange = charge(self.db, self.janet, D('1.00'), 'http://localhost/')
        error = "1: oops"
        assert exchange.note == error
        assert exchange.amount
        assert exchange.status == 'failed'
        janet = self.janet.refetch()
        assert self.janet.get_credit_card_error() == error
        assert self.janet.balance == janet.balance == 0
Exemplo n.º 23
0
 def test_charge_invalidated_card(self):
     bob = self.make_participant('bob', last_bill_result='invalidated')
     with self.assertRaises(AssertionError):
         charge(self.db, bob, D('10.00'), 'http://localhost/')
Exemplo n.º 24
0
 def test_charge_invalidated_card(self):
     bob = self.make_participant('bob', last_bill_result='invalidated')
     with self.assertRaises(AssertionError):
         charge(self.db, bob, D('10.00'), 'http://localhost/')
Exemplo n.º 25
0
 def test_charge_no_card(self):
     bob = self.make_participant('bob')
     with self.assertRaises(AssertionError):
         charge(self.db, bob, D('10.00'), 'http://localhost/')
Exemplo n.º 26
0
 def test_charge_bad_card(self):
     self.db.run("UPDATE exchange_routes SET address = '-1'")
     exchange = charge(self.db, self.janet, D('10.00'), 'http://localhost/')
     assert 'CardId: The value -1 is not valid' in exchange.note
Exemplo n.º 27
0
 def test_charge_bad_card(self):
     self.db.run("UPDATE exchange_routes SET address = '-1'")
     exchange = charge(self.db, self.janet, D('10.00'), 'http://localhost/')
     assert 'CardId: The value -1 is not valid' in exchange.note
Exemplo n.º 28
0
 def test_charge_no_card(self):
     bob = self.make_participant('bob')
     with self.assertRaises(AssertionError):
         charge(self.db, bob, D('10.00'), 'http://localhost/')
 def test_charge_for_suspicious_raises_UserIsSuspicious(self):
     bob = self.make_participant('bob',
                                 is_suspicious=True,
                                 mangopay_user_id='fake_id')
     with self.assertRaises(UserIsSuspicious):
         charge(self.db, bob, D('1.00'), 'http://localhost/')
 def test_charge_for_suspicious_raises_UserIsSuspicious(self):
     bob = self.make_participant('bob', is_suspicious=True,
                                 mangopay_user_id='fake_id')
     with self.assertRaises(UserIsSuspicious):
         charge(self.db, bob, D('1.00'), 'http://localhost/')