diff --git a/rowers/tests.py b/rowers/tests.py index 79ab3672..cab8224b 100644 --- a/rowers/tests.py +++ b/rowers/tests.py @@ -1,7 +1,7 @@ #from __future__ import print_function from bs4 import BeautifulSoup import re - +from nose_parameterized import parameterized from django.test import TestCase, Client,override_settings from django.core.management import call_command from django.utils.six import StringIO @@ -1366,199 +1366,6 @@ class ViewTest(TestCase): os.remove(f_to_be_deleted+'.gz') - urlstotest = [ - '/rowers/', - '/rowers/400/', - '/rowers/403/', - '/rowers/404/', - '/rowers/500/', - '/rowers/500v/', - '/rowers/502/', - '/rowers/1/list-workouts/', - '/rowers/1/list-workouts/2016-01-01/2016-12-31', - '/rowers/1/ote-bests/', - '/rowers/1/ote-bests2/2016-01-01/2016-12-31', - '/rowers/about', - '/rowers/addmanual/', - '/rowers/agegroupcp/30', - '/rowers/agegroupcp/30/1', - '/rowers/agegrouprecords/male/hwt', - '/rowers/agegrouprecords/male/hwt/2000m', - '/rowers/agegrouprecords/male/hwt/2000min', - '/rowers/ajax_agegroup/45/hwt/male/1', - '/rowers/analysis/', - '/rowers/analysis/user/1', - '/rowers/brochure', - '/rowers/c2listug/', - '/rowers/c2listug/2', - '/rowers/courses/upload', - '/rowers/createplan/', - '/rowers/createplan/user/1/', - '/rowers/cumstats/', - '/rowers/cumstats/2016-01-01/2016-12-31', - '/rowers/cumstats/user/1', - '/rowers/cumstats/user/1/2016-01-01/2016-12-31', - '/rowers/developers', - '/rowers/email/', - '/rowers/email/thankyou/', - '/rowers/fitness-progress/', - '/rowers/fitness-progress/user/1', - '/rowers/fitness-progress/user/1/rower', - '/rowers/flexall/', - '/rowers/flexall/spm/hr/None/', - '/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/', - '/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/user/1', - '/rowers/flexall/user/1/', - '/rowers/flexalldata/', - '/rowers/help', - '/rowers/histo/', - '/rowers/histo/user/1', - '/rowers/histo/user/1/2016-01-01/2016-12-31', - '/rowers/histodata', - '/rowers/job-kill/1', - '/rowers/jobs-status/', - '/rowers/laboratory/', - '/rowers/laboratory/user/1', - '/rowers/legal', - '/rowers/list-courses/', - '/rowers/list-graphs/', - '/rowers/list-jobs/', - '/rowers/list-workouts/', - '/rowers/list-workouts/2016-01-01/2016-12-31', - '/rowers/list-workouts/2016-01-01/2016-12-31/user/1/', - '/rowers/list-workouts/ranking', - '/rowers/list-workouts/user/1/', - '/rowers/me/calcdps/', - '/rowers/me/edit/', - '/rowers/me/edit/user/1', - '/rowers/me/exportsettings/', - '/rowers/me/exportsettings/user/1', - '/rowers/me/favoritecharts/', - '/rowers/me/favoritecharts/user/1', - '/rowers/me/invitation/', - '/rowers/me/preferences/', - '/rowers/me/preferences/user/1', - '/rowers/me/request/', - '/rowers/me/teams/', - '/rowers/me/workflowconfig2/', - '/rowers/me/workflowconfig2/user/1', - '/rowers/me/workflowdefault', - '/rowers/multi-compare', - '/rowers/ote-bests/', - '/rowers/ote-bests/2016-01-01/2016-12-31', - '/rowers/ote-bests/user/1', - '/rowers/ote-bests/user/1/2016-01-01/2016-12-31', - '/rowers/ote-bests2/', - '/rowers/ote-bests2/2016-01-01/2016-12-31', - '/rowers/ote-bests2/user/1', - '/rowers/ote-ranking/', - '/rowers/ote-ranking/2016-01-01/2016-12-31', - '/rowers/ote-ranking/user/1/', - '/rowers/ote-ranking/user/1/2016-01-01/2016-12-31', - '/rowers/otw-bests/', - '/rowers/otw-bests/2016-01-01/2016-12-31', - '/rowers/otw-bests/user/1/2016-01-01/2016-12-31', - '/rowers/partners', - '/rowers/physics', - '/rowers/planrequired', - '/rowers/promembership', - '/rowers/record-progress', - '/rowers/register', - '/rowers/register/thankyou/', - '/rowers/sessions/', - '/rowers/sessions/2016-01-01/2016-12-31', - '/rowers/sessions/2016-01-01/2016-12-31/user/1', - '/rowers/sessions/coach/', - '/rowers/sessions/coach/user/1/', - '/rowers/sessions/create/', - '/rowers/sessions/create/user/1', - '/rowers/sessions/manage/', - '/rowers/sessions/manage/user/1/', - '/rowers/sessions/multiclone/', - '/rowers/sessions/multiclone/user/1/', - '/rowers/sessions/multicreate/', - '/rowers/sessions/multicreate/user/1/', - '/rowers/sessions/print/', - '/rowers/sessions/print/user/1', - '/rowers/sessions/teamcreate/', - '/rowers/sessions/user/1', - '/rowers/team-compare-select/', - '/rowers/team-compare-select/2016-01-01/2016-12-31', - '/rowers/test-job/2', - '/rowers/test-job2/2', - '/rowers/test_callback', - '/rowers/testreverse/', - '/rowers/updatefitness', - '/rowers/updatefitness/rower', - '/rowers/updatefitness/rower/50', - '/rowers/user-boxplot', - '/rowers/user-boxplot-data', - '/rowers/user-boxplot-select/', - '/rowers/user-boxplot-select/user/1/', - '/rowers/user-boxplot/user/1', - '/rowers/user-multiflex-data', - '/rowers/user-multiflex-select/', - '/rowers/user-multiflex-select/2016-01-01/2016-12-31', - '/rowers/user-multiflex-select/user/1/', - '/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31', - '/rowers/user-multiflex/', - '/rowers/user-multiflex/user/1', - '/rowers/workout/1/', - '/rowers/workout/1/adddistanceplot', - '/rowers/workout/1/adddistanceplot2', - '/rowers/workout/1/addotwpowerplot', - '/rowers/workout/1/addpiechart', - '/rowers/workout/1/addpowerpiechart', - '/rowers/workout/1/addstatic', - '/rowers/workout/1/addstatic/3', - '/rowers/workout/1/addtimeplot', - '/rowers/workout/1/addtimeplot2', - '/rowers/workout/1/comment', - '/rowers/workout/1/darkskywind', - '/rowers/workout/1/data', - '/rowers/workout/1/edit', - '/rowers/workout/1/editintervals', - '/rowers/workout/1/flexchart', - '/rowers/workout/1/flexchart/spm/hr/None', - '/rowers/workout/1/flexchart/spm/hr/None/scatter', - '/rowers/workout/1/flexchart/spm/hr/None/scatter/', - '/rowers/workout/1/forcecurve', - '/rowers/workout/1/get-testscript', - '/rowers/workout/1/get-thumbnails', - '/rowers/workout/1/histo', - '/rowers/workout/1/image', - '/rowers/workout/1/instroke', - '/rowers/workout/1/interactiveotwplot', - '/rowers/workout/1/map', - '/rowers/workout/1/otwsetpower', - '/rowers/workout/1/recalcsummary/', - '/rowers/workout/1/restore', - '/rowers/workout/1/smoothenpace', - '/rowers/workout/1/split', - '/rowers/workout/1/stats', - '/rowers/workout/1/stream', - '/rowers/workout/1/task', - '/rowers/workout/1/test_strokedata', - '/rowers/workout/1/toggle-ranking', - '/rowers/workout/1/undosmoothenpace', - '/rowers/workout/1/unsubscribe', - '/rowers/workout/1/updatecp', - '/rowers/workout/1/view', - '/rowers/workout/1/wind', - '/rowers/workout/1/workflow', - '/rowers/workout/compare/1/2016-01-01/2016-12-31', - '/rowers/workout/fusion/1/', - '/rowers/workout/fusion/1/2016-01-01/2016-12-31', - '/rowers/workout/upload/', - '/rowers/workout/upload/team/', - '/rowers/workouts-join', - '/rowers/workouts-join-select/', - '/rowers/workouts-join-select/2016-01-01/2016-12-31', - ] - - for url in urlstotest: - response = self.c.get(url,follow=True) - self.assertEqual(response.status_code, 200) def test_upload_view_notloggedin(self): @@ -2173,6 +1980,251 @@ class ViewTest(TestCase): # f_to_be_deleted = w.csvfilename # os.remove(f_to_be_deleted+'.gz') +class URLTests(TestCase): + def setUp(self): + redis_connection.publish('tasks','KILL') + u = User.objects.create_user('john', + 'sander@ds.ds', + 'koeinsloot', + ) + r = Rower.objects.create(user=u,rowerplan='coach') + self.c = Client() + self.c.login(username='john',password='koeinsloot') + + self.nu = datetime.datetime.now() + filename = 'rowers/testdata/testdata.csv' + self.wotw = Workout.objects.create(name='testworkout', + workouttype='On-water', + user=r,date=self.nu.strftime('%Y-%m-%d'), + starttime=self.nu.strftime('%H:%M:%S'), + duration="0:55:00",distance=8000, + csvfilename=filename) + + self.wote = Workout.objects.create(name='testworkout', + workouttype='Indoor Rower', + user=r,date=self.nu.strftime('%Y-%m-%d'), + starttime=self.nu.strftime('%H:%M:%S'), + duration="0:55:00",distance=8000, + csvfilename=filename) + + powerperc = 100*np.array([r.pw_ut2, + r.pw_ut1, + r.pw_at, + r.pw_tr,r.pw_an])/r.ftp + + + self.hrdata = { + 'hrmax':r.max, + 'hrut2':r.ut2, + 'hrut1':r.ut1, + 'hrat':r.at, + 'hrtr':r.tr, + 'hran':r.an, + 'ftp':r.ftp, + 'powerperc':serialize_list(powerperc), + 'powerzones':serialize_list(r.powerzones), + } + + urlstotest = [ + '/rowers/400/', + '/rowers/403/', + '/rowers/404/', + '/rowers/500/', + '/rowers/502/', + '/rowers/1/list-workouts/', + '/rowers/1/list-workouts/2016-01-01/2016-12-31', + '/rowers/1/ote-bests/', + '/rowers/1/ote-bests2/2016-01-01/2016-12-31', + '/rowers/about', + '/rowers/addmanual/', + '/rowers/agegroupcp/30', + '/rowers/agegroupcp/30/1', + '/rowers/agegrouprecords/male/hwt', + '/rowers/agegrouprecords/male/hwt/2000m', + '/rowers/agegrouprecords/male/hwt/2000min', + '/rowers/ajax_agegroup/45/hwt/male/1', + '/rowers/analysis/', + '/rowers/analysis/user/1', + '/rowers/brochure', + '/rowers/courses/upload', + '/rowers/createplan/', + '/rowers/createplan/user/1/', + '/rowers/cumstats/', + '/rowers/cumstats/2016-01-01/2016-12-31', + '/rowers/cumstats/user/1', + '/rowers/cumstats/user/1/2016-01-01/2016-12-31', + '/rowers/developers', + '/rowers/email/', + '/rowers/email/thankyou/', + '/rowers/fitness-progress/', + '/rowers/fitness-progress/user/1', + '/rowers/fitness-progress/user/1/rower', + '/rowers/flexall/', + '/rowers/flexall/spm/hr/None/', + '/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/', + '/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/user/1', + '/rowers/flexall/user/1/', + '/rowers/flexalldata/', + '/rowers/help', + '/rowers/histo/', + '/rowers/histo/user/1', + '/rowers/histo/user/1/2016-01-01/2016-12-31', + '/rowers/histodata', + '/rowers/job-kill/1', + '/rowers/jobs-status/', + '/rowers/laboratory/', + '/rowers/laboratory/user/1', + '/rowers/legal', + '/rowers/list-courses/', + '/rowers/list-graphs/', + '/rowers/list-jobs/', + '/rowers/list-workouts/', + '/rowers/list-workouts/2016-01-01/2016-12-31', + '/rowers/list-workouts/2016-01-01/2016-12-31/user/1/', + '/rowers/list-workouts/ranking', + '/rowers/list-workouts/user/1/', + '/rowers/me/calcdps/', + '/rowers/me/edit/', + '/rowers/me/edit/user/1', + '/rowers/me/exportsettings/', + '/rowers/me/exportsettings/user/1', + '/rowers/me/favoritecharts/', + '/rowers/me/favoritecharts/user/1', + '/rowers/me/invitation/', + '/rowers/me/preferences/', + '/rowers/me/preferences/user/1', + '/rowers/me/request/', + '/rowers/me/teams/', + '/rowers/me/workflowconfig2/', + '/rowers/me/workflowconfig2/user/1', + '/rowers/me/workflowdefault', + '/rowers/multi-compare', + '/rowers/ote-bests/', + '/rowers/ote-bests/2016-01-01/2016-12-31', + '/rowers/ote-bests/user/1', + '/rowers/ote-bests/user/1/2016-01-01/2016-12-31', + '/rowers/ote-bests2/', + '/rowers/ote-bests2/2016-01-01/2016-12-31', + '/rowers/ote-bests2/user/1', + '/rowers/ote-ranking/', + '/rowers/ote-ranking/2016-01-01/2016-12-31', + '/rowers/ote-ranking/user/1/', + '/rowers/ote-ranking/user/1/2016-01-01/2016-12-31', + '/rowers/otw-bests/', + '/rowers/otw-bests/2016-01-01/2016-12-31', + '/rowers/otw-bests/user/1/2016-01-01/2016-12-31', + '/rowers/partners', + '/rowers/physics', + '/rowers/planrequired', + '/rowers/promembership', + '/rowers/register', + '/rowers/register/thankyou/', + '/rowers/sessions/', + '/rowers/sessions/2016-01-01/2016-12-31', + '/rowers/sessions/2016-01-01/2016-12-31/user/1', + '/rowers/sessions/coach/', + '/rowers/sessions/coach/user/1/', + '/rowers/sessions/create/', + '/rowers/sessions/create/user/1', + '/rowers/sessions/manage/', + '/rowers/sessions/manage/user/1/', + '/rowers/sessions/multiclone/', + '/rowers/sessions/multiclone/user/1/', + '/rowers/sessions/multicreate/', + '/rowers/sessions/multicreate/user/1/', + '/rowers/sessions/print/', + '/rowers/sessions/print/user/1', + '/rowers/sessions/teamcreate/', + '/rowers/sessions/user/1', + '/rowers/team-compare-select/', + '/rowers/team-compare-select/2016-01-01/2016-12-31', + '/rowers/test-job/2', + '/rowers/test-job2/2', + '/rowers/test_callback', + '/rowers/updatefitness', + '/rowers/updatefitness/rower', + '/rowers/updatefitness/rower/50', + '/rowers/user-boxplot', + '/rowers/user-boxplot-data', + '/rowers/user-boxplot-select/', + '/rowers/user-boxplot-select/user/1/', + '/rowers/user-boxplot/user/1', + '/rowers/user-multiflex-data', + '/rowers/user-multiflex-select/', + '/rowers/user-multiflex-select/2016-01-01/2016-12-31', + '/rowers/user-multiflex-select/user/1/', + '/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31', + '/rowers/user-multiflex/', + '/rowers/user-multiflex/user/1', + '/rowers/workout/1/', + '/rowers/workout/1/adddistanceplot', + '/rowers/workout/1/adddistanceplot2', + '/rowers/workout/1/addotwpowerplot', + '/rowers/workout/1/addpiechart', + '/rowers/workout/1/addpowerpiechart', + '/rowers/workout/1/addstatic', + '/rowers/workout/1/addstatic/3', + '/rowers/workout/1/addtimeplot', + '/rowers/workout/1/addtimeplot2', + '/rowers/workout/1/comment', + '/rowers/workout/1/darkskywind', + '/rowers/workout/1/data', + '/rowers/workout/1/edit', + '/rowers/workout/1/editintervals', + '/rowers/workout/1/flexchart', + '/rowers/workout/1/flexchart/spm/hr/None', + '/rowers/workout/1/flexchart/spm/hr/None/scatter', + '/rowers/workout/1/flexchart/spm/hr/None/scatter/', + '/rowers/workout/1/forcecurve', + '/rowers/workout/1/get-testscript', + '/rowers/workout/1/get-thumbnails', + '/rowers/workout/1/histo', + '/rowers/workout/1/image', + '/rowers/workout/1/instroke', + '/rowers/workout/1/interactiveotwplot', + '/rowers/workout/1/map', + '/rowers/workout/1/otwsetpower', + '/rowers/workout/1/recalcsummary/', + '/rowers/workout/1/restore', + '/rowers/workout/1/smoothenpace', + '/rowers/workout/1/split', + '/rowers/workout/1/stats', + '/rowers/workout/1/stream', + '/rowers/workout/1/task', + '/rowers/workout/1/test_strokedata', + '/rowers/workout/1/toggle-ranking', + '/rowers/workout/1/undosmoothenpace', + '/rowers/workout/1/unsubscribe', + '/rowers/workout/1/updatecp', + '/rowers/workout/1/view', + '/rowers/workout/1/wind', + '/rowers/workout/1/workflow', + '/rowers/workout/compare/1/2016-01-01/2016-12-31', + '/rowers/workout/fusion/1/', + '/rowers/workout/fusion/1/2016-01-01/2016-12-31', + '/rowers/workout/upload/', + '/rowers/workout/upload/team/', + '/rowers/workouts-join', + '/rowers/workouts-join-select/', + '/rowers/workouts-join-select/2016-01-01/2016-12-31', + ] + + lijst = [] + for url in urlstotest: + lijst.append( + (url,200) + ) + + @parameterized.expand(lijst) + def test_url_generator(self,url,expected): + response = self.c.get(url,follow=True) + if response.status_code != expected: + print response.status_code + self.assertEqual(response.status_code, + expected, + msg=url+' response status code not 200') + + class subroutinetests(TestCase): def setUp(self): redis_connection.publish('tasks','KILL') diff --git a/rowers/views.py b/rowers/views.py index 41372305..eddf1520 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -247,6 +247,8 @@ def getrequestrower(request,rowerid=0,userid=0,notpermanent=False): def getrower(user): + if user.is_anonymous(): + return None try: r = Rower.objects.get(user=user) except Rower.DoesNotExist: