under armour & trainingpeaks done
This commit is contained in:
260
rowers/tests.py
260
rowers/tests.py
@@ -84,6 +84,7 @@ def mocked_requests(*args, **kwargs):
|
||||
sporttracksworkoutlist = json.load(open('rowers/testdata/sporttracksworkouts.txt'))
|
||||
|
||||
rkworkoutlistjson = json.load(open('rowers/testdata/rkworkoutslist.txt','r'))
|
||||
uaworkoutlistjson = json.load(open('rowers/testdata/uaworkoutlist.txt','r'))
|
||||
|
||||
stravasummaryjson = json.load(open('rowers/testdata/stravaworkoutsummary.txt','r'))
|
||||
|
||||
@@ -94,6 +95,10 @@ def mocked_requests(*args, **kwargs):
|
||||
stravahrjson = json.load(open('rowers/testdata/stravahrtestdata.txt','r'))
|
||||
stravaspmjson = json.load(open('rowers/testdata/stravaspmtestdata.txt','r'))
|
||||
|
||||
uapostworkoutjson = json.load(open('rowers/testdata/uapostworkoutresponse.txt','r'))
|
||||
|
||||
tpuploadresponse = json.load(open('rowers/testdata/tpuploadresponse.txt','r'))
|
||||
|
||||
stravastreamjson = {
|
||||
'time':stravatimejson,
|
||||
'velocity_smooth':stravavelojson,
|
||||
@@ -107,6 +112,9 @@ def mocked_requests(*args, **kwargs):
|
||||
|
||||
rkstrokesjson = json.load(open('rowers/testdata/rkstrokes.txt','r'))
|
||||
|
||||
uastrokesjson = json.load(open('rowers/testdata/uastrokes.txt','r'))
|
||||
uauserjson = json.load(open('rowers/testdata/uauser.txt','r'))
|
||||
|
||||
class MockResponse:
|
||||
def __init__(self, json_data, status_code):
|
||||
self.json_data = json_data
|
||||
@@ -143,6 +151,8 @@ def mocked_requests(*args, **kwargs):
|
||||
stravatester = re.compile('.*?strava\.com')
|
||||
sttester = re.compile('.*?sporttracks\.mobi')
|
||||
rktester = re.compile('.*?runkeeper\.com')
|
||||
uatester = re.compile('.*?mapmyfitness\.com')
|
||||
tptester = re.compile('.*?trainingpeaks\.com')
|
||||
|
||||
c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+'
|
||||
c2importtester = re.compile(c2importregex)
|
||||
@@ -180,6 +190,64 @@ def mocked_requests(*args, **kwargs):
|
||||
rkusertester = re.compile(rkuserregex)
|
||||
rkstrokesregex = '.*?api\.runkeeper\.com\/fitnessActivities/\d+$'
|
||||
rkstrokestester = re.compile(rkstrokesregex)
|
||||
|
||||
uaapiregex = '.*?api\.ua\.com'
|
||||
uaapitester = re.compile(uaapiregex)
|
||||
|
||||
uauploadregex = '.*?api\.ua\.com\/v7.1\/workout\/$'
|
||||
uauploadtester = re.compile(uauploadregex)
|
||||
|
||||
uastrokesregex = '.*?api\.ua\.com\/v7.1\/workout\/\d+'
|
||||
uastrokestester = re.compile(uastrokesregex)
|
||||
|
||||
ualistregex = '.*?api\.ua\.com\/v7.1\/workout\/\?user'
|
||||
ualisttester = re.compile(ualistregex)
|
||||
|
||||
uauserregex = '.*?api\.ua\.com\/v7.1\/user\/self\/'
|
||||
uausertester = re.compile(uauserregex)
|
||||
|
||||
tpuploadregex = '.*?trainingpeaks\.com\/v1\/file'
|
||||
tpuploadtester = re.compile(tpuploadregex)
|
||||
|
||||
if tptester.match(args[0]):
|
||||
if 'token' in args[0]:
|
||||
json_data = {
|
||||
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
|
||||
'expires_in': 604800,
|
||||
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
|
||||
}
|
||||
return MockResponse(json_data,200)
|
||||
elif tpuploadtester.match(args[0]):
|
||||
return MockResponse(tpuploadresponse,200)
|
||||
|
||||
if uaapitester.match(args[0]):
|
||||
if 'access_token' in args[0]:
|
||||
json_data = {
|
||||
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
|
||||
'expires_in': 604800,
|
||||
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
|
||||
}
|
||||
return MockResponse(json_data,200)
|
||||
elif uauploadtester.match(args[0]):
|
||||
if 'data' in kwargs:
|
||||
return MockResponse(uapostworkoutjson,200)
|
||||
elif uastrokestester.match(args[0]):
|
||||
return MockResponse(uastrokesjson,200)
|
||||
elif ualisttester.match(args[0]):
|
||||
return MockResponse(uaworkoutlistjson,200)
|
||||
elif uausertester.match(args[0]):
|
||||
return MockResponse(uauserjson,200)
|
||||
|
||||
|
||||
if uatester.match(args[0]):
|
||||
if 'access_token' in args[0]:
|
||||
json_data = {
|
||||
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
|
||||
'expires_in': 604800,
|
||||
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
|
||||
}
|
||||
return MockResponse(json_data,200)
|
||||
|
||||
|
||||
if rktester.match(args[0]):
|
||||
if 'token' in args[0]:
|
||||
@@ -189,7 +257,7 @@ def mocked_requests(*args, **kwargs):
|
||||
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
|
||||
}
|
||||
return MockResponse(json_data,200)
|
||||
if rkuploadtester.match(args[0]):
|
||||
elif rkuploadtester.match(args[0]):
|
||||
if 'data' in kwargs:
|
||||
# post
|
||||
header_data = {
|
||||
@@ -199,7 +267,7 @@ def mocked_requests(*args, **kwargs):
|
||||
else:
|
||||
json_data = rkworkoutlistjson
|
||||
return MockResponse(json_data,200)
|
||||
if rkusertester.match(args[0]):
|
||||
elif rkusertester.match(args[0]):
|
||||
json_data = {
|
||||
"userID": 1234567890,
|
||||
"profile": "/profile",
|
||||
@@ -216,7 +284,7 @@ def mocked_requests(*args, **kwargs):
|
||||
"team": "/team"
|
||||
}
|
||||
return MockResponse(json_data, 200)
|
||||
if rkstrokestester.match(args[0]):
|
||||
elif rkstrokestester.match(args[0]):
|
||||
return MockResponse(rkstrokesjson,200)
|
||||
|
||||
if sttester.match(args[0]):
|
||||
@@ -661,6 +729,192 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
|
||||
class UAObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
|
||||
self.r.underarmourtoken = '12'
|
||||
self.r.underarmourrefreshtoken = '12'
|
||||
self.r.underarmourtokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1)
|
||||
self.r.save()
|
||||
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
filename = 'rowers/testdata/testdata.csv'
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
|
||||
|
||||
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
||||
|
||||
|
||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||
|
||||
self.w = Workout.objects.create(
|
||||
name='testworkout',workouttype='On-water',
|
||||
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=workoutstarttime,
|
||||
startdatetime=row.rowdatetime,
|
||||
duration=duration,distance=totaldist,
|
||||
csvfilename=filename
|
||||
)
|
||||
|
||||
@patch('rowers.imports.requests.post', side_effect=mocked_requests)
|
||||
def test_underarmour_callback(self, mock_post):
|
||||
response = self.c.get('/underarmour_callback?code=dsdoij232s',follow=True)
|
||||
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@patch('rowers.underarmourstuff.requests.post', side_effect=mocked_requests)
|
||||
def test_underarmour_token_refresh(self, mock_post):
|
||||
response = self.c.get('/rowers/me/underarmourrefresh/',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@patch('rowers.underarmourstuff.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.underarmourstuff.requests.get', side_effect=mocked_requests)
|
||||
def test_underarmour_upload(self, mock_get, mock_post):
|
||||
response = self.c.get('/rowers/workout/1/underarmouruploadw/')
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/1/export',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/1/export')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
@patch('rowers.underarmourstuff.requests.get', side_effect=mocked_requests)
|
||||
def test_underarmour_list(self, mock_get):
|
||||
response = self.c.get('/rowers/workout/underarmourimport',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.imports.requests.get', side_effect=mocked_requests)
|
||||
def test_underarmour_import(self, mock_get):
|
||||
|
||||
response = self.c.get('/rowers/workout/underarmourimport/12/',follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/workout/2/edit',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class TPObjects(DjangoTestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
|
||||
self.u.first_name = 'John'
|
||||
self.u.last_name = 'Sander'
|
||||
self.u.save()
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
|
||||
|
||||
self.r.tptoken = '12'
|
||||
self.r.tprefreshtoken = '12'
|
||||
self.r.tptokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1)
|
||||
self.r.save()
|
||||
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
filename = 'rowers/testdata/testdata.csv'
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
|
||||
|
||||
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
||||
|
||||
|
||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||
|
||||
self.w = Workout.objects.create(
|
||||
name='testworkout',workouttype='On-water',
|
||||
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=workoutstarttime,
|
||||
startdatetime=row.rowdatetime,
|
||||
duration=duration,distance=totaldist,
|
||||
csvfilename=filename
|
||||
)
|
||||
|
||||
@patch('rowers.imports.requests.post', side_effect=mocked_requests)
|
||||
def test_tp_callback(self, mock_post):
|
||||
response = self.c.get('/tp_callback?code=dsdoij232s',follow=True)
|
||||
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@patch('rowers.tpstuff.requests.post', side_effect=mocked_requests)
|
||||
def test_tp_token_refresh(self, mock_post):
|
||||
response = self.c.get('/rowers/me/tprefresh/',follow=True)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@patch('rowers.tpstuff.requests.post', side_effect=mocked_requests)
|
||||
@patch('rowers.tpstuff.requests.get', side_effect=mocked_requests)
|
||||
def test_tp_upload(self, mock_get, mock_post):
|
||||
response = self.c.get('/rowers/workout/1/tpuploadw/')
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/1/export',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/1/export')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
|
||||
|
||||
|
||||
class TestErrorPages(TestCase):
|
||||
def test_error_handlers(self):
|
||||
|
||||
Reference in New Issue
Block a user