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/')
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">')
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')
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')
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')
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())
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("'", '''), text)
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')