Stripe checkout #104411

Merged
Anna Sirota merged 61 commits from stripe into main 2024-06-17 18:08:41 +02:00
Showing only changes of commit 92b469bb7c - Show all commits

View File

@ -127,6 +127,7 @@ class TestSubscriptionSettingsChangePaymentMethod(BaseSubscriptionTestCase):
expected_redirect_url = 'https://checkout.stripe.com/c/pay/cs_test_c1QeSt36UcbmnmrXJnEYZpWakr377WPMfbWLeR9d3ZBYJPWXRUJ3TQ0UG9#fidkdWxOYHwnPyd1blpxYHZxWjA0VUpnNzNAMU5EUEcwYW92dWIwclxRMzQ8ZkxsUDRET2dPbTVidnBCNEJTdlBJQTRJYFF2c09BMEFBdlxVT19USGpWSXRSXFJwdm5UQXRpdVw2Rmp%2FZ11NNTU3fHdHUl1JTCcpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl' expected_redirect_url = 'https://checkout.stripe.com/c/pay/cs_test_c1QeSt36UcbmnmrXJnEYZpWakr377WPMfbWLeR9d3ZBYJPWXRUJ3TQ0UG9#fidkdWxOYHwnPyd1blpxYHZxWjA0VUpnNzNAMU5EUEcwYW92dWIwclxRMzQ8ZkxsUDRET2dPbTVidnBCNEJTdlBJQTRJYFF2c09BMEFBdlxVT19USGpWSXRSXFJwdm5UQXRpdVw2Rmp%2FZ11NNTU3fHdHUl1JTCcpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl'
self.assertEqual(response['Location'], expected_redirect_url, response['Location']) self.assertEqual(response['Location'], expected_redirect_url, response['Location'])
# **N.B**: this flow happens in 2 different views separated by a Stripe payment page.
# Pretend that checkout session was completed and we've returned to the success page with its ID: # Pretend that checkout session was completed and we've returned to the success page with its ID:
checkout_session_id = 'cs_test_c1QeSt36UcbmnmrXJnEYZpWakr377WPMfbWLeR9d3ZBYJPWXRUJ3TQ0UG9' checkout_session_id = 'cs_test_c1QeSt36UcbmnmrXJnEYZpWakr377WPMfbWLeR9d3ZBYJPWXRUJ3TQ0UG9'
success_url = url + f'{checkout_session_id}/' success_url = url + f'{checkout_session_id}/'
@ -286,6 +287,7 @@ class TestPayExistingOrder(BaseSubscriptionTestCase):
expected_redirect_url = 'https://checkout.stripe.com/c/pay/cs_test_a1XUS0akCexOKoMTKKnt9SjK1UjPI9UTrF7LiLzXWYInOcANZzOFLBkA5w#fidkdWxOYHwnPyd1blpxYHZxWjA0VUpnNzNAMU5EUEcwYW92dWIwclxRMzQ8ZkxsUDRET2dPbTVidnBCNEJTdlBJQTRJYFF2c09BMEFBdlxVT19USGpWSXRSXFJwdm5UQXRpdVw2Rmp%2FZ11NNTU3fHdHUl1JTCcpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl' expected_redirect_url = 'https://checkout.stripe.com/c/pay/cs_test_a1XUS0akCexOKoMTKKnt9SjK1UjPI9UTrF7LiLzXWYInOcANZzOFLBkA5w#fidkdWxOYHwnPyd1blpxYHZxWjA0VUpnNzNAMU5EUEcwYW92dWIwclxRMzQ8ZkxsUDRET2dPbTVidnBCNEJTdlBJQTRJYFF2c09BMEFBdlxVT19USGpWSXRSXFJwdm5UQXRpdVw2Rmp%2FZ11NNTU3fHdHUl1JTCcpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl'
self.assertEqual(response['Location'], expected_redirect_url) self.assertEqual(response['Location'], expected_redirect_url)
# **N.B**: this flow happens in 2 different views separated by a Stripe payment page.
# Pretend that checkout session was completed and we've returned to the success page with its ID: # Pretend that checkout session was completed and we've returned to the success page with its ID:
checkout_session_id = 'cs_test_a1XUS0akCexOKoMTKKnt9SjK1UjPI9UTrF7LiLzXWYInOcANZzOFLBkA5w' checkout_session_id = 'cs_test_a1XUS0akCexOKoMTKKnt9SjK1UjPI9UTrF7LiLzXWYInOcANZzOFLBkA5w'
url = reverse( url = reverse(
@ -295,6 +297,12 @@ class TestPayExistingOrder(BaseSubscriptionTestCase):
url = url.replace('CHECKOUT_SESSION_ID', checkout_session_id) url = url.replace('CHECKOUT_SESSION_ID', checkout_session_id)
with responses.RequestsMock() as rsps: with responses.RequestsMock() as rsps:
rsps._add_from_file(f'{responses_dir}stripe_retrieve_checkout_session_usd.yaml') rsps._add_from_file(f'{responses_dir}stripe_retrieve_checkout_session_usd.yaml')
# Replace metadata's "order_id" hardcoded in the response YAML with current order ID,
# because it differs depending on whether this test is run alone or with all the tests.
for _ in rsps.registered():
if '%5D=payment_intent' in _.url:
assert '\"order_id\": \"1' in _.body
_.body = _.body.replace('\"order_id\": \"1', f'\"order_id\": \"{order.pk}')
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(order.transaction_set.count(), 1) self.assertEqual(order.transaction_set.count(), 1)