X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/967eed676fc83d15b26149047f353ac61faa8217..HEAD:/src/paypal/tests.py diff --git a/src/paypal/tests.py b/src/paypal/tests.py index 7de047af6..d62e65a0d 100644 --- a/src/paypal/tests.py +++ b/src/paypal/tests.py @@ -1,11 +1,12 @@ -# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # from django.contrib.auth.models import User +from unittest import skip from unittest.mock import MagicMock, Mock, patch, DEFAULT from catalogue.test_utils import WLTestCase +from club.models import Membership, Schedule from .models import BillingAgreement, BillingPlan -from .rest import user_is_subscribed from paypalrestsdk import ResourceNotFound @@ -59,15 +60,28 @@ class PaypalTests(WLTestCase): def tearDownClass(cls): cls.user.delete() + def setUp(self): + super().setUp() + s = Schedule.objects.create( + key='schedule-key', + amount=10, + membership=Membership.objects.create( + user=self.user + ) + ) + + @skip("Changing the flow.") def test_paypal_form(self): response = self.client.get('/paypal/form/') self.assertEqual(response.status_code, 200) + @skip("Changing the flow.") def test_paypal_form_unauthorized(self): """Legacy flow: only allow payment for logged-in users.""" response = self.client.post('/paypal/form/', {"amount": "0"}) self.assertEqual(response.status_code, 403) + @skip("Changing the flow.") def test_paypal_form_invalid(self): """Paypal form: error on bad input.""" self.client.login(username='test', password='test') @@ -78,6 +92,7 @@ class PaypalTests(WLTestCase): len(response.context['form'].errors['amount']), 1) + @skip("Changing the flow.") @patch.multiple('paypalrestsdk', BillingPlan=BillingPlanMock, BillingAgreement=BillingAgreementMock, @@ -99,6 +114,7 @@ class PaypalTests(WLTestCase): # No BillingAgreement created in our DB yet. self.assertEqual(BillingAgreement.objects.all().count(), 0) + @skip("Changing the flow.") @patch('paypalrestsdk.BillingPlan', BillingPlanMock) def test_paypal_form_error(self): """On PayPal error, plan does not get created.""" @@ -128,6 +144,7 @@ class PaypalTests(WLTestCase): # But now the plan should be created. self.assertEqual(BillingPlan.objects.all().count(), 1) + @skip("Changing the flow.") @patch.multiple('paypalrestsdk', BillingPlan=BillingPlanMock, BillingAgreement=BillingAgreementMock, @@ -150,34 +167,34 @@ class PaypalTests(WLTestCase): self.assertEqual(response.status_code, 404) self.assertEqual(BillingAgreement.objects.all().count(), 0) - response = self.client.get('/paypal/return/?token=secret-token') - self.assertEqual(response.status_code, 200) + response = self.client.get('/paypal/return/schedule-key/?token=secret-token') + self.assertEqual(response.status_code, 302) self.assertEqual(BillingAgreement.objects.all().count(), 1) # Repeated returns will not generate further agreements. - response = self.client.get('/paypal/return/?token=secret-token') - self.assertEqual(response.status_code, 200) + response = self.client.get('/paypal/return/schedule-key/?token=secret-token') + self.assertEqual(response.status_code, 302) self.assertEqual(BillingAgreement.objects.all().count(), 1) - self.assertTrue(user_is_subscribed(self.user)) + self.assertTrue(Membership.is_active_for(self.user)) @patch('paypalrestsdk.BillingAgreement', BillingAgreementMock) def test_paypal_app_return(self): self.client.login(username='test', password='test') BillingPlan.objects.create(amount=100) - response = self.client.get('/paypal/app-return/?token=secret-token') + response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token') self.assertRedirects( response, 'wolnelekturyapp://paypal_return', fetch_redirect_response=False) # Repeated returns will not generate further agreements. - response = self.client.get('/paypal/app-return/?token=secret-token') + response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token') self.assertRedirects( response, 'wolnelekturyapp://paypal_return', fetch_redirect_response=False) self.assertEqual(BillingAgreement.objects.all().count(), 1) - self.assertTrue(user_is_subscribed(self.user)) + self.assertTrue(Membership.is_active_for(self.user)) def test_paypal_return_error(self): self.client.login(username='test', password='test') @@ -187,7 +204,7 @@ class PaypalTests(WLTestCase): with patch('paypalrestsdk.BillingAgreement', Mock( execute=Mock(return_value=Mock(id=None)))): self.client.get('/paypal/app-return/?token=secret-token') - response = self.client.get('/paypal/app-return/?token=secret-token') + response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token') self.assertRedirects( response, 'wolnelekturyapp://paypal_error', fetch_redirect_response=False) @@ -199,7 +216,7 @@ class PaypalTests(WLTestCase): with patch('paypalrestsdk.BillingAgreement', Mock( execute=BillingAgreementMock.execute, find=Mock(side_effect=ResourceNotFound(None)))): - response = self.client.get('/paypal/app-return/?token=secret-token') + response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token') self.assertRedirects( response, 'wolnelekturyapp://paypal_return', fetch_redirect_response=False) @@ -209,7 +226,7 @@ class PaypalTests(WLTestCase): with patch('paypalrestsdk.BillingAgreement', Mock( find=Mock(return_value=Mock(state='Mocked')))): - self.assertFalse(user_is_subscribed(self.user)) + self.assertFalse(Membership.is_active_for(self.user)) def test_paypal_cancel(self): response = self.client.get('/paypal/cancel/')