diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py index 78818eb5..b5735396 100644 --- a/rowers/tests/test_imports.py +++ b/rowers/tests/test_imports.py @@ -49,13 +49,31 @@ class RojaboObjects(DjangoTestCase): self.r.defaulttimezone = 'Europe/Prague' self.r.rowerplan = 'plan' self.r.save() - self.c.login(username='john',password='koeinsloot') + + self.u2 = User.objects.create_user('john2', + 'sander@ds2.ds', + 'stierinsloot') + + self.u2.first_name = 'Sander' + self.u2.last_name = 'John' + self.u2.save() + self.r2 = Rower.objects.create(user=self.u2,gdproptin=True, ftpset=True,surveydone=True, + gdproptindate=timezone.now() + ) + + self.r2.rojabo_token = '12' + self.r2.rojabo_refreshtoken = 'ab' + self.r2.rojabo_tokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime + self.r2.defaulttimezone = 'Europe/Prague' + self.r2.rowerplan = 'pro' + self.r2.save() self.nu = datetime.datetime.now() @patch('rowers.rojabo_stuff.requests.get', side_effect=mocked_requests) @patch('rowers.rojabo_stuff.requests.post', side_effect=mocked_requests) def test_rojabo_import(self, mock_get, mock_post): + self.c.login(username='john',password='koeinsloot') url = '/rowers/session/rojaboimport/' response = self.c.get(url) self.assertEqual(response.status_code, 200) @@ -79,6 +97,26 @@ class RojaboObjects(DjangoTestCase): self.assertEqual(len(ps.steps['steps']),20) + @patch('rowers.rojabo_stuff.requests.get', side_effect=mocked_requests) + @patch('rowers.rojabo_stuff.requests.post', side_effect=mocked_requests) + def test_rojabo_import_denied(self, mock_get, mock_post): + self.c.login(username='john2',password='stierinsloot') + url = '/rowers/session/rojaboimport/' + response = self.c.get(url) + self.assertEqual(response.status_code, 302) + + form_data = { + 'csrfmiddlewaretoken': ['xalRrf8y7P2Hhobges9QC4aKCWg4l06gexDc8g2DeuVExgadfk4YhV8oSE1Yu43U'], + 'sessions': ['Import selected sessions'], + 'sessionid': ['862172'] + } + + + response = self.c.post(url,form_data) + self.assertEqual(response.status_code,302) + + + @pytest.mark.django_db @override_settings(TESTING=True) class GarminObjects(DjangoTestCase): diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 9aad9188..3c0a65ca 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 95019ab1..f5270e17 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -649,10 +649,10 @@ def rower_process_testcallback(request): # pragma: no cover # The page where you select which Strava workout to import @login_required() -@user_passes_test(ispromember, login_url="/rowers/paidplans/", - message="This functionality requires a Pro plan or higher", +@user_passes_test(isplanmember, login_url="/rowers/paidplans/", + message="This functionality requires a Self-coach plan or higher", redirect_field_name=None) -@permission_required('rower.is_planmember', fn=get_user_by_userid, raise_exception=True) +@permission_required('plannedsession.add_session', fn=get_user_by_userid, raise_exception=True) def workout_rojaboimport_view(request, message="", userid=0): # pragma: no cover r = getrequestrower(request, userid=userid) if r.user != request.user: