diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py index 63e4440b..398968ac 100644 --- a/rowers/tests/mocks.py +++ b/rowers/tests/mocks.py @@ -557,6 +557,7 @@ class gatewayresult(): # pragma: no cover self.transaction = vtransaction() self.payment_method = vpayment_method() self.subscription = vsubscription() + self.paid_through_date = datetime.datetime.now()+datetime.timedelta(days=365) self.customer = kwargs.pop('customer',customer()) def __unicode__(): @@ -615,6 +616,7 @@ class transaction(): # pragma: no cover 'id': 12 } self.created_at = datetime.datetime.now() + self.paid_through_date = datetime.datetime.now()+datetime.timedelta(days=365) self.currency_iso_code = 'EUR' class vtransaction(): # pragma: no cover @@ -627,6 +629,7 @@ class vtransaction(): # pragma: no cover 'id': 12 } self.created_at = datetime.datetime.now() + self.paid_through_date = datetime.datetime.now()+datetime.timedelta(days=365) self.currency_iso_code = 'EUR' class vsubscription(): # pragma: no cover @@ -636,9 +639,13 @@ class vsubscription(): # pragma: no cover def cancel(*args, **kwargs): return gatewayresult(is_success=True) + def find(*args, **kwargs): + return subscription() + def __init__(self, *args, **kwargs): self.id = '121' self.billing_period_end_date = (datetime.datetime.now()+datetime.timedelta(days=365)).date() + self.paid_through_date = (datetime.datetime.now()+datetime.timedelta(days=365)).date() self.status = 'Active' self.plan_id = 12 self.price = 15 @@ -654,9 +661,13 @@ class subscription(): # pragma: no cover def cancel(*args, **kwargs): return gatewayresult(is_success=True) + def find(*args, **kwargs): + return subscription() + def __init__(self, *args, **kwargs): self.id = '121' self.billing_period_end_date = (datetime.datetime.now()+datetime.timedelta(days=365)).date() + self.paid_through_date = (datetime.datetime.now()+datetime.timedelta(days=365)).date() self.transactions = [vtransaction()] self.status = 'Active' self.plan_id = 12 diff --git a/rowers/tests/test_braintree.py b/rowers/tests/test_braintree.py index 88654e4b..1a6a41bd 100644 --- a/rowers/tests/test_braintree.py +++ b/rowers/tests/test_braintree.py @@ -79,7 +79,8 @@ class BraintreeUnits(TestCase): @patch('rowers.idoklad.requests.post',side_effect=mocked_requests) @patch('rowers.braintreestuff.gateway', side_effect=MockBraintreeGateway) @patch('rowers.braintreestuff.myqueue') - def test_process_webhook(self,mock_token, mock_get,mockpost,mocked_gateway,mocked_myqueue): + @patch('rowers.braintreestuff.cancel_subscription', side_effect=mock_cancel_subscription) + def test_process_webhook(self,mock_token, mock_get,mockpost,mocked_gateway,mocked_myqueue,mock_cancel_subscription): n = notification() res = process_webhook(n) self.assertEqual(res,1) diff --git a/rowers/tests/test_newusers.py b/rowers/tests/test_newusers.py deleted file mode 100644 index 138643cb..00000000 --- a/rowers/tests/test_newusers.py +++ /dev/null @@ -1,181 +0,0 @@ -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function -from __future__ import unicode_literals - -#from __future__ import print_function -from .statements import * - -nu = datetime.datetime.now() - -#@pytest.mark.django_db -@override_settings(TESTING=True) -class NewUserRegistrationTest(TestCase): - def setUp(self): - self.c = Client() - redis_connection.publish('tasks','KILL') - - def tearDown(self): - try: - os.remove('rowsandall_workouts_2018-01-01_2019-01-01.csv') - except: - pass - - @patch('rowers.dataprep.workout_summary_to_df',side_effect=mock_workout_summaries) - def test_newuser(self,mock_workout_summaries): - form_data = { - 'first_name':'Jan', - 'last_name':'Roeiert', - 'email':'jan@loop.nl', - 'username':'janderoeiert', - 'password1':'Aapindewei2', - 'password2':'Aapindewei2', - 'url': '', - 'tos':True, - 'weightcategory':'hwt', - 'adaptiveclass': 'None', - 'sex':'male', - 'next':'/rowers/list-workouts', - 'birthdate':datetime.datetime(year=1970,month=4,day=2) - } - - form = RegistrationFormSex(form_data) - self.assertTrue(form.is_valid()) - - response = self.c.post('/rowers/register/', form_data, follow=True) - self.assertEqual(response.status_code,200) - - # set opt-in - user = User.objects.get(username='janderoeiert') - user.rower.gdpr_optin = True - user.rower.ftpset = True - user.set_password('Aapindewei2') - user.is_active = True - user.save() - user.rower.save() - - login = self.c.login(username=user.username,password='Aapindewei2') - self.assertTrue(login) - - - url = '/rowers/list-workouts/' - - response = self.c.get(url) - - expected = '/rowers/me/gdpr-optin/?next=/rowers/list-workouts/' - - self.assertRedirects(response, - expected_url=expected, - status_code=302,target_status_code=200) - - url = '/rowers/me/gdpr-optin-confirm/?next=/rowers/list-workouts/' - - response = self.c.get(url) - - expected = '/rowers/list-workouts/' - self.assertRedirects(response, - expected_url=expected, - status_code=302,target_status_code=200) - - - url = '/rowers/exportallworkouts/' - - response = self.c.get(url,follow=True) - - - self.assertTrue(response.status_code,200) - - - form_data = { - 'startdate':'2018-01-01', - 'enddate':'2019-01-01' - } - - response = self.c.post(url,form_data) - - self.assertTrue(response.status_code,200) - - - - url = '/rowers/me/delete/' - - form_data = { - 'delete_user':True, - } - - response = self.c.post(url,form_data,follow=True) - self.assertRedirects(response, - expected_url='/login/', - status_code=302,target_status_code=200) - - @patch('rowers.dataprep.workout_summary_to_df',side_effect=mock_workout_summaries) - def test_newuser_false(self,mock_workout_summaries): - form_data = { - 'first_name':'Jan', - 'last_name':'Roeiert', - 'email':'jan@loop.nl', - 'username':'janderoeiert', - 'password1':'aapindewei2', - 'password2':'aapindewei2', - 'tos':True, - 'url': '', - 'weightcategory':'hwt', - 'adaptiveclass': 'None', - 'sex':'male', - 'next':'/rowers/list-workouts', - 'birthdate':datetime.datetime(year=1970,month=4,day=2) - } - - form = RegistrationFormSex(form_data) - self.assertFalse(form.is_valid()) - - @patch('rowers.dataprep.workout_summary_to_df',side_effect=mock_workout_summaries) - def test_newuser_honeypot(self,mock_workout_summaries): - form_data = { - 'first_name':'Jan', - 'last_name':'Roeiert', - 'email':'jan@loop.nl', - 'username':'janderoeiert', - 'password1':'Aapindewei2', - 'password2':'Aapindewei2', - 'url': 'http://example.com', - 'tos':True, - 'weightcategory':'hwt', - 'adaptiveclass': 'None', - 'sex':'male', - 'next':'/rowers/list-workouts', - 'birthdate':datetime.datetime(year=1970,month=4,day=2) - } - - form = RegistrationFormSex(form_data) - self.assertFalse(form.is_valid()) - - # still post it, should redirect to the registration page - response = self.c.post('/rowers/register/', form_data, follow=True) - self.assertEqual(response.status_code,200) - self.assertRedirects(response, - expected_url='/rowers/register/', - status_code=302,target_status_code=200) - - @patch('rowers.dataprep.workout_summary_to_df',side_effect=mock_workout_summaries) - def test_newuser_disposable(self,mock_workout_summaries): - form_data = { - 'first_name':'Jan', - 'last_name':'Roeiert', - 'email':'jan@powerscrews.com', - 'username':'janderoeiert', - 'password1':'Aapindewei2', - 'password2':'Aapindewei2', - 'url': '', - 'tos':True, - 'weightcategory':'hwt', - 'adaptiveclass': 'None', - 'sex':'male', - 'next':'/rowers/list-workouts', - 'birthdate':datetime.datetime(year=1970,month=4,day=2) - } - - form = RegistrationFormSex(form_data) - self.assertFalse(form.is_valid()) - - diff --git a/rowers/tests/test_payments.py b/rowers/tests/test_payments.py deleted file mode 100644 index 9423217c..00000000 --- a/rowers/tests/test_payments.py +++ /dev/null @@ -1,795 +0,0 @@ -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function -from __future__ import unicode_literals - -from .statements import * - -nu = datetime.datetime.now() - -from django_countries import countries - -from rowers.braintreestuff import mocktest - -import urllib - -class PaymentTest(TestCase): - def setUp(self): - - # settings.DEBUG = True - - p1 = PaidPlan( - shortname='free', - name='Basic', - external_id='a', - price=0, - clubsize=0, - paymentprocessor='braintree', - paymenttype='single', - ) - - p1.save() - - p2 = PaidPlan( - shortname='pro_recurring', - name='Pro (recurring)', - external_id='b', - price=15, - clubsize=0, - paymentprocessor='braintree', - paymenttype='single', - ) - - p2.save() - - p3 = PaidPlan( - shortname='pro_single', - name='Pro (single)', - external_id='c', - price=20, - clubsize=0, - paymentprocessor='braintree', - paymenttype='single', - ) - - p3.save() - - self.c = Client() - self.password = faker.word() - - s = b"""filename: britishrowing.json -name: British Rowing Training Plan Beginner Week 1 -trainingDays: - - order: 1 - workouts: - - workoutName: Week 1 Session 1 - steps: - - stepId: 0 - wkt_step_name: Warmup - durationType: Time - durationValue: 300000 - intensity: Warmup - description: "" - - stepId: 1 - wkt_step_name: Intervals - durationType: Time - durationValue: 60000 - intensity: Active - description: "" - - stepId: 2 - wkt_step_name: Interval Rest - durationType: Time - durationValue: 60000 - intensity: Rest - description: "" - - stepId: 3 - wkt_step_name: Rep - durationType: RepeatUntilStepsCmplt - durationValue: 1 - targetValue: 5 - - stepId: 4 - wkt_step_name: Cooldown - durationType: Time - durationValue: 300000 - intensity: Cooldown - description: "" - sport: "" - description: "" - - order: 4 - workouts: - - workoutName: Week 1 Session 2 - steps: - - stepId: 0 - wkt_step_name: Warmup - durationType: Time - durationValue: 300000 - intensity: Warmup - description: "" - - stepId: 1 - wkt_step_name: Interval - durationType: Time - durationValue: 300000 - intensity: Active - description: "" - - stepId: 2 - wkt_step_name: Interval Rest - durationType: Time - durationValue: 180000 - intensity: Rest - description: "" - - stepId: 3 - wkt_step_name: Rep - durationType: RepeatUntilStepsCmplt - durationValue: 1 - targetValue: 5 - - stepId: 4 - wkt_step_name: Cooldown - durationType: Time - durationValue: 300000 - intensity: Cooldown - description: "" - sport: "" - description: "" -duration: 7 -description: "" -""" - - self.file_data = {'yaml': SimpleUploadedFile('britishrowing.yml', s)} - - with open('media/temp.yml','wb') as f: - f.write(s) - - self.instantplan = InstantPlan( - uuid = "79b0dacf-9b49-4f33-9acf-e2e6734e22dc", - url = "https://thepeteplan.wordpress.com/beginner-training/", - name = faker.word(), - goal = faker.word(), - duration = 42, - description = faker.word(), - target = faker.word(), - hoursperweek = 3, - sessionsperweek = 3, - price = 0, - yaml = 'temp.yml', - ) - - self.instantplan.save() - - # def tearDown(self): - # settings.DEBUG = False - - @patch('rowers.braintreestuff.gateway',side_effect=MockBraintreeGateway) - @patch('rowers.braintreestuff.myqueue') - def test_braintree_webhook(self,mocked_gateway,mocked_myqueue): - url = reverse('braintree_webhook_view') - response = self.c.get(url) - - self.assertEqual(response.status_code, 200) - - form_data = { - 'bt_signature': 'aap', - 'bt_payload': 'noot,' - } - - response = self.c.post(url,form_data) - self.assertEqual(response.status_code, 200) - - @patch('rowers.views.braintreestuff.create_customer',side_effect=mock_create_customer) - @patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway) - @patch('rowers.braintreestuff.myqueue') - def test_billing_view(self,mocked_create_customer,mocked_gateway,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - u.set_password(self.password) - u.save() - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/billing/' - - response = self.c.get(url) - self.assertEqual(response.status_code, 200) - - plans = PaidPlan.objects.filter(price__gt=0).order_by('price') - plan = plans[0] - - country=faker.country() - countrycode = 'NL' - for code, name in list(countries): - if name.lower() == country.lower(): - countrycode = code - - form_data = { - 'street_address':faker.street_address(), - 'city':faker.city(), - 'postal_code':faker.postalcode(), - 'country':countrycode, - 'plan':plan.id, - } - - form = RowerBillingAddressForm(form_data) - self.assertTrue(form.is_valid()) - - form = PlanSelectForm(form_data,paymentprocessor='braintree') - self.assertTrue(form.is_valid()) - - response = self.c.post(url,form_data, follow=True) - self.assertEqual(response.status_code, 200) - - expected_url = '/rowers/checkout/'+str(plan.id)+'/' - - self.assertRedirects(response, - expected_url=expected_url, - status_code=302, target_status_code=200) - - @patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway) - @patch('rowers.braintreestuff.myqueue') - def test_upgrade_view(self,mocked_gateway,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - r.country = 'NL' - r.customer_id = 34 - r.subscription_id = 34 - r.save() - u.set_password(self.password) - u.save() - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/upgrade/' - - response = self.c.get(url) - self.assertEqual(response.status_code, 200) - - plans = PaidPlan.objects.filter(price__gt=0).order_by('price') - plan = plans[0] - - country=faker.country() - countrycode = 'NL' - for code, name in list(countries): - if name.lower() == country.lower(): - countrycode = code - - form_data = { - 'street_address':faker.street_address(), - 'city':faker.city(), - 'postal_code':faker.postalcode(), - 'country':countrycode, - 'plan':plan.id, - } - - form = RowerBillingAddressForm(form_data) - self.assertTrue(form.is_valid()) - - form = PlanSelectForm(form_data,paymentprocessor='braintree') - self.assertTrue(form.is_valid()) - - response = self.c.post(url,form_data, follow=True) - self.assertEqual(response.status_code, 200) - - expected_url = '/rowers/upgradecheckout/'+str(plan.id)+'/' - - self.assertRedirects(response, - expected_url=expected_url, - status_code=302, target_status_code=200) - - @patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway) - @patch('rowers.braintreestuff.myqueue') - def test_down_view(self,mocked_gateway,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - r.country = 'NL' - r.customer_id = 34 - r.subscription_id = 34 - r.save() - - plans = PaidPlan.objects.all().order_by('price') - plan = plans[1] - - r.paidplan = plan - r.save() - u.set_password(self.password) - u.save() - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/downgrade/' - - response = self.c.get(url) - self.assertEqual(response.status_code, 200) - - country=faker.country() - countrycode = 'NL' - for code, name in list(countries): - if name.lower() == country.lower(): - countrycode = code - - form_data = { - 'street_address':faker.street_address(), - 'city':faker.city(), - 'postal_code':faker.postalcode(), - 'country':countrycode, - 'plan':plans[0].id, - } - - form = RowerBillingAddressForm(form_data) - self.assertTrue(form.is_valid()) - - form = PlanSelectForm(form_data,paymentprocessor='braintree') - self.assertTrue(form.is_valid()) - - response = self.c.post(url,form_data, follow=True) - self.assertEqual(response.status_code, 200) - - expected_url = '/rowers/downgradecheckout/'+str(plans[0].id)+'/' - - self.assertRedirects(response, - expected_url=expected_url, - status_code=302, target_status_code=200) - - @patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway) - @patch('rowers.braintreestuff.myqueue') - def test_planstop_view(self,mocked_gateway,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - r.country = 'NL' - r.customer_id = 34 - r.subscription_id = 34 - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - plan = plans[1] - - r.paidplan = plan - r.save() - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/me/cancelsubscriptions/' - - response = self.c.get(url) - self.assertEqual(response.status_code, 200) - - - @patch('rowers.views.braintreestuff.gateway', side_effect=MockBraintreeGateway) - @patch('rowers.idoklad.create_invoice',side_effect=mocked_invoiceid) - @patch('rowers.utils.myqueue') - def test_purchase_trainingplan_view(self, mocked_gateway,mocked_invoiceid, mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - r.country = 'NL' - r.customer_id = 34 - r.subscription_id = 34 - r.save() - u.set_password(self.password) - u.save() - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = reverse('buy_trainingplan_view',kwargs={'id':self.instantplan.id}) - - response = self.c.get(url) - self.assertEqual(response.status_code, 200) - - enddate = datetime.datetime.now()+datetime.timedelta(days=30) - startdate = datetime.datetime.now() - - form_data = { - 'enddate':enddate.strftime('%Y-%m-%d'), - 'startdate':startdate.strftime('%Y-%m-%d'), - 'notes': 'no notes', - 'datechoice': 'enddate', - 'name': 'no name', - } - - response = self.c.post(url,form_data) - - pars = { - 'name': 'no name', - 'enddate':enddate.strftime('%Y-%m-%d'), - 'notes': 'no notes', - 'status': True, - 'rower':r.id, - } - params = urllib.parse.urlencode(pars) - expected_url = reverse('confirm_trainingplan_purchase_view',kwargs={'id':self.instantplan.id}) - expected_url = expected_url + "?%s" % params - - self.assertRedirects(response,expected_url=expected_url,status_code=302, target_status_code=200) - - url = expected_url - - response = self.c.get(url, follow=True) - self.assertEqual(response.status_code, 200) - - url = reverse('purchase_checkouts_view') - - form_data = { - 'amount': '25.00', - 'plan': self.instantplan.id, - 'payment_method_nonce': 'aap', - 'tac': 'tac', - 'paymenttype': 'CreditCard', - 'notes': 'no notes', - 'enddate':enddate.strftime('%Y-%m-%d'), - 'status': True, - } - - form = TrainingPlanBillingForm(form_data) - if not form.is_valid(): - print(form.errors) - self.assertTrue(form.is_valid()) - - response = self.c.post(url,form_data, follow=True) - - self.assertEqual(response.status_code, 200) - - expected_url = reverse('plannedsessions_view') - startdate = enddate-datetime.timedelta(days=self.instantplan.duration) - timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d') - expected_url = expected_url+'?when='+timeperiod - - self.assertRedirects(response, - expected_url=expected_url, - status_code=302, target_status_code=200) - - @patch('rowers.views.braintreestuff.gateway',side_effect=MockBraintreeGateway) - @patch('rowers.braintreestuff.myqueue') - def test_planstobasic_view(self,mocked_gateway,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - r.country = 'NL' - r.customer_id = 34 - r.subscription_id = 34 - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - plan = plans[1] - - r.paidplan = plan - r.save() - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/me/cancelsubscription/34/' - - response = self.c.get(url, follow=True) - self.assertEqual(response.status_code, 200) - self.assertRedirects(response, - expected_url='/rowers/me/cancelsubscriptions/', - status_code=302, target_status_code=200) - - @patch('rowers.tests.test_payments.mocktest', side_effect=mock_mocktest) - @patch('rowers.braintreestuff.myqueue') - def test_patch(self, mock_mocktest,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - u.set_password(self.password) - u.save() - r.save() - result = mocktest(r) - self.assertEqual(result,'121') - - @patch('rowers.views.braintreestuff.create_subscription', side_effect=mock_create_subscription) - @patch('rowers.braintreestuff.myqueue') - def test_checkouts_view(self,mock_subscription,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - plan = plans[1] - - form_data = { - 'amount': '15.00', - 'plan': plans[1].id, - 'payment_method_nonce': 'aap', - 'tac': 'tac', - 'paymenttype': 'CreditCard' - } - - form = BillingForm(form_data) - self.assertTrue(form.is_valid()) - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/checkouts/' - - response = self.c.post(url, form_data, follow=True) - self.assertEqual(response.status_code, 200) - - self.assertRedirects(response, - expected_url='/rowers/paymentcompleted/?amount=20.00', - status_code=302, target_status_code=200) - - - @patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription) - @patch('rowers.braintreestuff.myqueue') - def test_upgrade_checkouts_view(self,mock_subscription,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - plan = plans[1] - - form_data = { - 'amount': '15.00', - 'plan': plans[1].id, - 'payment_method_nonce': 'aap', - 'paymenttype': 'CreditCard', - 'tac': 'tac', - } - - form = BillingForm(form_data) - self.assertTrue(form.is_valid()) - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/upgradecheckouts/' - - response = self.c.post(url, form_data, follow=True) - self.assertEqual(response.status_code, 200) - - self.assertRedirects(response, - expected_url='/rowers/paymentcompleted/?amount=20.00', - status_code=302, target_status_code=200) - - @patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription) - @patch('rowers.braintreestuff.myqueue') - def test_downgrade_checkouts_view(self,mock_subscription,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - - form_data = { - 'amount': '15.00', - 'plan': plans[1].id, - 'payment_method_nonce': 'aap', - 'paymenttype': 'CreditCard', - 'tac': 'tac', - } - - form = BillingForm(form_data) - self.assertTrue(form.is_valid()) - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/downgradecheckouts/' - - response = self.c.post(url, form_data, follow=True) - self.assertEqual(response.status_code, 200) - - self.assertRedirects(response, - expected_url='/rowers/downgradecompleted/', - status_code=302, target_status_code=200) - - @patch('rowers.views.braintreestuff.create_subscription', side_effect=mock_create_subscription) - @patch('rowers.braintreestuff.myqueue') - def test_checkouts_view(self,mock_subscription,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), - ) - - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - plan = plans[1] - - form_data = { - 'amount': '15.00', - 'plan': plans[1].id, - 'payment_method_nonce': 'aap', - 'paymenttype': 'CreditCard', - 'tac': True, - } - - form = BillingForm(form_data) - if not form.is_valid(): - print(form.errors) - self.assertTrue(form.is_valid()) - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/checkouts/' - - response = self.c.post(url, form_data, follow=True) - self.assertEqual(response.status_code, 200) - - expected_url = '/rowers/paymentcompleted/?amount=20.00' - - self.assertRedirects(response, - expected_url=expected_url, - status_code=302, target_status_code=200) - - - @patch('rowers.views.braintreestuff.update_subscription', side_effect=mock_update_subscription) - @patch('rowers.braintreestuff.myqueue') - def test_upgrade_checkouts_view(self,mock_subscription,mocked_myqueue): - u = UserFactory() - r = Rower.objects.create(user=u, - birthdate=faker.profile()['birthdate'], - gdproptin=True, ftpset=True, surveydone=True, - gdproptindate=timezone.now(), - rowerplan='pro', - paymentprocessor='braintree', - street_address=faker.street_address(), - city=faker.city(), - postal_code=faker.postalcode(), - country=faker.country(), ) - - r.save() - u.set_password(self.password) - u.save() - - plans = PaidPlan.objects.all().order_by('price') - - form_data = { - 'amount': '15.00', - 'plan': plans[1].id, - 'payment_method_nonce': 'aap', - 'paymenttype': 'CreditCard', - 'tac': True, } - - form = BillingForm(form_data) - self.assertTrue(form.is_valid()) - - login = self.c.login(username=u.username, password=self.password) - self.assertTrue(login) - - url = '/rowers/upgradecheckouts/' - - response = self.c.post(url, form_data, follow=True) - self.assertEqual(response.status_code, 200) - - self.assertRedirects(response, - expected_url='/rowers/paymentcompleted/?amount=20.00', - status_code=302, target_status_code=200) diff --git a/rowers/tests/test_permissions.py b/rowers/tests/test_permissions.py index d802cced..8fd2271b 100644 --- a/rowers/tests/test_permissions.py +++ b/rowers/tests/test_permissions.py @@ -880,8 +880,6 @@ class PermissionsViewTests(TestCase): self.assertTrue(form.is_valid()) - expected_url = reverse('paidplans_view') - response = self.c.post(url,form_data,follow=True) # check that it does not redirect and status code is 200 diff --git a/rowers/tests/test_urls.py b/rowers/tests/test_urls.py index f08b1e9d..a460ab48 100644 --- a/rowers/tests/test_urls.py +++ b/rowers/tests/test_urls.py @@ -119,8 +119,6 @@ class URLTests(TestCase): '/rowers/me/workflowdefault/', '/rowers/partners/', '/rowers/physics/', - '/rowers/register/', - '/rowers/register/thankyou/', '/rowers/sessions/', '/rowers/sessions/coach/', '/rowers/sessions/create/', diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 35a8b0a4..07216da9 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/tests/viewnames.csv b/rowers/tests/viewnames.csv index 8218f6f2..4db4bdab 100644 --- a/rowers/tests/viewnames.csv +++ b/rowers/tests/viewnames.csv @@ -137,23 +137,7 @@ 178,225,sendmail,feedback form,TRUE,200,basic,200,302,FALSE,200,302,FALSE,200,302,FALSE,FALSE,FALSE,TRUE,TRUE, 180,232,laboratory_view,lab,TRUE,302,basic,200,302,basic,403,403,coach,200,403,FALSE,TRUE,FALSE,TRUE,TRUE, 181,233,errormessage_view,not used,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -182,237,payment_confirm_view,confirm payment,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -183,238,upgrade_confirm_view,confirm upgrade,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -184,240,downgrade_confirm_view,confirm downgrade,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -185,241,billing_view,confirm billing,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -186,242,upgrade_view,confirm upgrade,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -187,243,downgrade_view,confirm downgrade,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -188,244,payment_completed_view,payment completed,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -189,245,downgrade_completed_view,downgrade completed,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -190,246,paidplans_view,paid plans,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,TRUE,TRUE, -191,247,plan_stop_view,stop plan,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, 192,248,plan_tobasic_view,reset to basic,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -193,249,checkouts_view,checkout,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -194,250,upgrade_checkouts_view,upgrade checkout,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -195,251,downgrade_checkouts_view,downgrade checkout,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -197,253,start_trial_view,payments,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -198,254,start_plantrial_view,paid plans,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE, -199,256,rower_register_view,register rower,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,TRUE,TRUE, 201,259,workout_workflow_view,workout workflow vieq,TRUE,302,basic,200,200,basic,200,200,coach,200,200,FALSE,FALSE,TRUE,TRUE,TRUE, 202,260,workout_flexchart3_view,flex chart,TRUE,302,basic,200,403,basic,200,200,coach,200,200,FALSE,FALSE,TRUE,TRUE,TRUE, 203,264,rower_process_testcallback,test callback,TRUE,200,basic,200,302,basic,200,302,coach,200,302,FALSE,FALSE,FALSE,FALSE,FALSE,