242 lines
9.0 KiB
Python
242 lines
9.0 KiB
Python
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()
|
|
|
|
import rowers.courses as courses
|
|
|
|
|
|
tested = [
|
|
'/rowers/me/delete/',
|
|
# '/rowers/performancemanager/'
|
|
|
|
]
|
|
|
|
#@pytest.mark.django_db
|
|
@override_settings(TESTING=True)
|
|
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='pro',gdproptin=True, ftpset=True,
|
|
gdproptindate=timezone.now())
|
|
self.c = Client()
|
|
cs = courses.kmltocourse('rowers/tests/testdata/thyro.kml')
|
|
course = cs[0]
|
|
cname = course['name']
|
|
cnotes = course['description']
|
|
polygons = course['polygons']
|
|
self.ThyroBaantje = courses.createcourse(r,cname,polygons,notes=cnotes)
|
|
self.ThyroBaantje.save()
|
|
|
|
|
|
self.nu = datetime.datetime.now()
|
|
filename = 'rowers/tests/testdata/testdata.csv'
|
|
self.wotw = Workout.objects.create(name='testworkout',
|
|
workouttype='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/about/',
|
|
'/rowers/workout/addmanual/',
|
|
'/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/developers/',
|
|
'/rowers/email/',
|
|
'/rowers/email/thankyou/',
|
|
'/rowers/help/',
|
|
'/rowers/laboratory/',
|
|
'/rowers/laboratory/user/1/',
|
|
'/rowers/legal/',
|
|
'/rowers/workouts/setrpe/',
|
|
'/boatmovers/',
|
|
'/boatmovers/faq/',
|
|
'/boatmovers/compare/',
|
|
'/rowers/list-courses/',
|
|
'/rowers/list-graphs/',
|
|
'/rowers/list-jobs/',
|
|
'/rowers/list-workouts/',
|
|
'/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/partners/',
|
|
'/rowers/physics/',
|
|
'/rowers/register/',
|
|
'/rowers/register/thankyou/',
|
|
'/rowers/sessions/',
|
|
'/rowers/sessions/coach/',
|
|
'/rowers/sessions/create/',
|
|
'/rowers/sessions/manage/',
|
|
'/rowers/sessions/multiclone/',
|
|
'/rowers/sessions/multicreate/',
|
|
'/rowers/sessions/print/',
|
|
'/rowers/sessions/teamcreate/',
|
|
'/rowers/workout/'+encoded1+'/',
|
|
'/rowers/workout/'+encoded1+'/adddistanceplot/',
|
|
'/rowers/workout/'+encoded1+'/adddistanceplot2/',
|
|
'/rowers/workout/'+encoded1+'/addotwpowerplot/',
|
|
'/rowers/workout/'+encoded1+'/addpiechart/',
|
|
'/rowers/workout/'+encoded1+'/addpowerpiechart/',
|
|
'/rowers/workout/'+encoded1+'/addstatic/',
|
|
'/rowers/workout/'+encoded1+'/addstatic/3/',
|
|
'/rowers/workout/'+encoded1+'/addtimeplot/',
|
|
'/rowers/workout/'+encoded1+'/addtimeplot2/',
|
|
'/rowers/workout/'+encoded1+'/comment/',
|
|
'/rowers/workout/'+encoded1+'/data/',
|
|
'/rowers/workout/'+encoded1+'/edit/',
|
|
'/rowers/workout/'+encoded1+'/editintervals/',
|
|
'/rowers/workout/'+encoded1+'/flexchart/',
|
|
'/rowers/workout/'+encoded1+'/forcecurve/',
|
|
'/rowers/workout/'+encoded1+'/get-thumbnails/',
|
|
'/rowers/workout/'+encoded1+'/image/',
|
|
'/rowers/workout/'+encoded1+'/instroke/',
|
|
'/rowers/workout/'+encoded1+'/map/',
|
|
'/rowers/workout/'+encoded1+'/recalcsummary/',
|
|
'/rowers/workout/'+encoded1+'/restore/',
|
|
'/rowers/workout/'+encoded1+'/smoothenpace/',
|
|
'/rowers/workout/'+encoded1+'/split/',
|
|
'/rowers/workout/'+encoded1+'/stats/',
|
|
'/rowers/workout/'+encoded1+'/undosmoothenpace/',
|
|
'/rowers/workout/'+encoded1+'/unsubscribe/',
|
|
'/rowers/workout/'+encoded1+'/view/',
|
|
'/rowers/workout/'+encoded1+'/workflow/',
|
|
'/rowers/workout/fusion/'+encoded1+'/',
|
|
'/rowers/workout/upload/',
|
|
'/rowers/workout/upload/team/',
|
|
'/rowers/workouts-join/',
|
|
'/rowers/workouts-join-select/',
|
|
# '/rowers/api/courses/',
|
|
# '/rowers/api/courses/?name=Brno',
|
|
# '/rowers/api/courses/?course_distance=2000',
|
|
# '/rowers/api/courses/?course_distance=aap',
|
|
# '/rowers/api/courses/?distance_from=52&latitude=42&longitude=7',
|
|
# '/rowers/api/courses/?distance_from=50&latitude=42&longitude=-aap',
|
|
# '/rowers/api/courses/',
|
|
# '/rowers/api/courses/1/',
|
|
# '/rowers/list-workouts/?selectworkouts=true',
|
|
# '/rowers/api/courses/kml/',
|
|
# '/rowers/api/courses/kml/liked/',
|
|
# '/rowers/api/courses/kml/?id=1',
|
|
# '/rowers/api/courses/kml?id=1&id=4/',
|
|
# '/rowers/api/courses/kml/?id=aap',
|
|
]
|
|
|
|
|
|
|
|
|
|
lijst = []
|
|
for url in urlstotest:
|
|
lijst.append(
|
|
(url,200)
|
|
)
|
|
|
|
|
|
@parameterized.expand(lijst)
|
|
@patch('rowers.dataprep.create_engine')
|
|
@patch('rowers.dataprep.read_df_sql')
|
|
@patch('rowers.dataprep.read_data')
|
|
@patch('requests.get',side_effect=mocked_requests)
|
|
@patch('requests.post',side_effect=mocked_requests)
|
|
@patch('rowers.dataprep.get_video_data',side_effect=mocked_get_video_data)
|
|
@patch('rowers.views.statements.sendmail',side_effect=mocked_sendmail)
|
|
@patch('django.contrib.gis.geoip2.GeoIP2.city', side_effect=mocked_requests)
|
|
def test_url_generator(self,url,expected,
|
|
mocked_sqlalchemy,
|
|
mocked_read_df_sql,
|
|
mocked_read_data,
|
|
mock_get,
|
|
mock_post,
|
|
mocked_get_video_data,
|
|
mocked_sendmail,
|
|
mock_get2):
|
|
|
|
if url not in tested:
|
|
login = self.c.login(username='john',password='koeinsloot')
|
|
self.assertTrue(login)
|
|
response = self.c.get(url,follow=True)
|
|
if response.status_code != expected:
|
|
print(url)
|
|
print(response.status_code)
|
|
|
|
self.assertEqual(response.status_code,
|
|
expected)
|
|
|
|
html = BeautifulSoup(response.content,'html.parser')
|
|
|
|
|
|
urls = [a['href'] for a in html.find_all('a')]
|
|
|
|
|
|
for u in urls:
|
|
if u not in tested and 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u:
|
|
response2 = self.c.get(u)
|
|
if response2.status_code not in [200,302,301]:
|
|
print(len(tested))
|
|
print(response.templates[0].name)
|
|
print(url)
|
|
print(u)
|
|
print(response2.status_code)
|
|
tested.append(u)
|
|
self.assertIn(response2.status_code,
|
|
[200,302,301])
|
|
else:
|
|
tested.append(u)
|