示例#1
0
 def test_post_stripe_success(self):
     with utils.patched_charge_creation_success():
         rsp = self.client.post(
             self.url,
             {'stripeToken': 'tok_abcdefghijklmnopqurstuvwx'},
             follow=True,
         )
     self.assertContains(rsp, 'Payment succeeded')
     self.assertRedirects(rsp, '/dinners/conference-dinner/')
示例#2
0
 def test_stripe_success(self):
     self.client.force_login(self.order.purchaser)
     with utils.patched_charge_creation_success():
         rsp = self.client.post(
             self.url,
             {'stripeToken': 'tok_abcdefghijklmnopqurstuvwx'},
             follow=True,
         )
     self.assertContains(rsp, 'Payment for this order has been received')
     self.assertContains(rsp, '<th>Date</th><td>21 May 2018</td>', html=True)
     self.assertNotContains(rsp, '<div id="stripe-form">')
示例#3
0
    def test_process_stripe_charge_error_after_charge(self):
        factories.create_confirmed_order_for_self(self.order.purchaser)
        token = 'tok_ abcdefghijklmnopqurstuvwx'

        with utils.patched_charge_creation_success(
        ), utils.patched_refund_creation_expected():
            actions.process_stripe_charge(self.order, token)

        self.order.refresh_from_db()
        self.assertEqual(self.order.status, 'errored')
        self.assertEqual(self.order.stripe_charge_id,
                         'ch_abcdefghijklmnopqurstuvw')
示例#4
0
    def test_process_stripe_charge_error_after_charge_1(self):
        # This test checks that an order is marked as errored if an
        # IntegrityError is raised because a user creates an order for a ticket
        # for themselves when they already have a ticket.
        factories.create_confirmed_order_for_self(self.order.purchaser)
        token = 'tok_abcdefghijklmnopqurstuvwx'

        with utils.patched_charge_creation_success(), utils.patched_refund_creation():
            actions.process_stripe_charge(self.order, token)

        self.order.refresh_from_db()
        self.assertEqual(self.order.status, 'errored')
        self.assertEqual(self.order.stripe_charge_id, 'ch_abcdefghijklmnopqurstuvw')
示例#5
0
    def test_process_stripe_charge_error_after_charge_2(self):
        # This test checks that an order is marked as errored if two orders are
        # created at exactly the same time, leading to the race condition in
        # Order.confirm.
        order = factories.create_confirmed_order_for_others()
        token = 'tok_abcdefghijklmnopqurstuvwx'

        with utils.patched_charge_creation_success(), utils.patched_refund_creation(), patch('orders.models.Order.get_next_invoice_number') as mock:
            mock.return_value = order.invoice_number
            actions.process_stripe_charge(self.order, token)

        self.order.refresh_from_db()
        self.assertEqual(self.order.status, 'errored')
        self.assertEqual(self.order.stripe_charge_id, 'ch_abcdefghijklmnopqurstuvw')
示例#6
0
    def test_ticket_purchase_after_refund(self):
        user = factories.create_user()
        factories.create_confirmed_order_for_self(user)
        ticket = user.get_ticket()

        order = factories.create_pending_order_for_self(user)
        token = 'tok_abcdefghijklmnopqurstuvwx'
        with utils.patched_charge_creation_success(), utils.patched_refund_creation():
            actions.process_stripe_charge(order, token)
        self.assertEqual(order.status, 'errored')

        with utils.patched_refund_creation():
            actions.refund_item(ticket, 'Refund requested by user')

        user.refresh_from_db()
        self.assertIsNone(user.get_ticket())

        order = factories.create_pending_order_for_self(user)
        with utils.patched_charge_creation_success():
            actions.process_stripe_charge(order, token)
        self.assertEqual(order.status, 'successful')

        user.refresh_from_db()
        self.assertIsNotNone(user.get_ticket())
示例#7
0
    def test_post_stripe_success(self):
        with utils.patched_charge_creation_success():
            rsp = self.client.post(
                self.url,
                {'stripeToken': 'tok_abcdefghijklmnopqurstuvwx'},
                follow=True,
            )
        self.assertContains(rsp, 'Payment for this booking has been received')
        self.assertRedirects(rsp, '/')

        self.assertEqual(len(mail.outbox), 1)
        email = mail.outbox[0]
        self.assertEqual(email.to, [self.alice.email_addr])
        self.assertEqual(email.from_email, 'PyCon UK 2017 <*****@*****.**>')
        self.assertEqual(email.subject, 'PyCon UK 2017 accommodation confirmation')
        self.assertIn(ROOMS[1].description, email.body)

        backend = get_slack_backend()
        messages = backend.retrieve_messages()
        self.assertEqual(len(messages), 1)
        text = messages[0]['text']
        self.assertIn(f'Alice has just booked themself into {ROOMS[1].description}'.replace("'", '&#39;'), text)
示例#8
0
 def test_process_stripe_charge_success(self):
     token = 'tok_ abcdefghijklmnopqurstuvwx'
     with utils.patched_charge_creation_success():
         actions.process_stripe_charge(self.order, token)
     self.order.refresh_from_db()
     self.assertEqual(self.order.status, 'successful')