Private
Public Access
1
0

mocked all c2stuff except workout export

This commit is contained in:
Sander Roosendaal
2018-07-01 22:15:36 +02:00
parent 6a0c819ea3
commit d69c15254f
3 changed files with 73 additions and 22 deletions

View File

@@ -424,6 +424,7 @@ def do_refresh_token(refreshtoken):
prepped.body+=scope
response = s.send(prepped)
token_json = response.json()
try:
thetoken = token_json['access_token']
@@ -461,19 +462,8 @@ def get_token(code):
prepped.body+="&scope="
prepped.body+=scope
print prepped.body
response = s.send(prepped)
with open("media/c2authorize.log","a") as f:
try:
f.write(reponse.status_code+"\n")
f.write(reponse.text+"\n")
f.write(response.json+"\n\n")
except:
pass
token_json = response.json()
try:
@@ -541,6 +531,7 @@ def get_workout(user,c2id):
splitdata = data['workout']['intervals']
# Check if workout has stroke data, and get the stroke data
if data['stroke_data']:
res2 = get_c2_workout_strokes(user,c2id)
if res2.status_code == 200:
@@ -692,7 +683,6 @@ def workout_c2_upload(user,w):
c2id = 0
else:
print response.status_code
message = "Something went wrong in workout_c2_upload_view. Response code 200/201 but C2 sync failed: "+response.text
c2id = 0

View File

@@ -1,4 +1,4 @@
from __future__ import print_function
#from __future__ import print_function
from bs4 import BeautifulSoup
import re
@@ -52,9 +52,7 @@ class DjangoTestCase(TestCase, MockTestCase):
MockTestCase.tearDown(self)
delete_strokedata(1)
# Create your tests here.
def mocked_requests_get(*args, **kwargs):
def mocked_requests(*args, **kwargs):
with open('rowers/testdata/c2jsonworkoutdata.txt','r') as infile:
c2workoutdata = json.load(infile)
@@ -71,11 +69,58 @@ def mocked_requests_get(*args, **kwargs):
def json(self):
return self.json_data
if 'log.concept2.com/' in args[0]:
if 'strokes' in args[0]:
class MockSession:
def send(self,prepped):
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
if not args:
return MockSession()
c2tester = re.compile('.*?log\.concept2\.com')
c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+'
c2importtester = re.compile(c2importregex)
c2strokesregex = '.*?concept2.com\/api\/users\/me\/results\/\d+\/strokes'
c2strokestester = re.compile(c2strokesregex)
c2workoutlistregex = '.*?concept2\.com\/api\/users\/me\/results\?page=\d'
c2workoutlisttester = re.compile(c2workoutlistregex)
if c2tester.match(args[0]):
if c2strokestester.match(args[0]):
return MockResponse(c2strokedata,200)
elif 'page' in args[0]:
elif c2importtester.match(args[0]):
return MockResponse(c2workoutdata,200)
elif c2workoutlisttester(args[0]):
return MockResponse(c2workoutlist,200)
elif 'access_token' in args[0]:
json_data = {
'access_token': 'TA3n1vrNjuQJWw0TdCDHnjSmrjIPULhTlejMIWqq',
'expires_in': 604800,
'refresh_token': 'jHJhFzCfOOKB8oyiayubhLAlxaMkG3ruC1E8YxaR'
}
return MockResponse(json_data,200)
elif 'users/me' in args[0]:
json_data = {
'data': {
'username': 'john',
'id': 1234,
}
}
return MockResponse(json_data,200)
elif 'results' in args[0]:
json_data = {
'data': {
'id': 1223,
}
}
else:
return MockResponse(c2workoutdata,200)
@@ -100,15 +145,30 @@ class C2Objects(DjangoTestCase):
self.r.tokenexpirydate = datetime.datetime.now()+datetime.timedelta(days=1)
self.r.save()
self.c.login(username='john',password='koeinsloot')
@patch('rowers.c2stuff.requests.Session', side_effect=mocked_requests)
def test_c2_callback(self, mock_post):
response = self.c.get('/call_back?code=dsdoij232s',follow=True)
self.assertEqual(response.status_code, 200)
@patch('rowers.c2stuff.Session', side_effect=mocked_requests)
def test_c2_token_refresh(self, mock_post):
response = self.c.get('/rowers/me/c2refresh/',follow=True)
self.assertEqual(response.status_code, 200)
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests_get)
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
def test_c2_list(self, mock_get):
response = self.c.get('/rowers/workout/c2list',follow=True)
self.assertEqual(response.status_code,200)
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests_get)
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
def test_c2_import(self, mock_get):
response = self.c.get('/rowers/workout/c2import/12/',follow=True)

View File

@@ -1993,6 +1993,7 @@ def rower_tp_authorize(request):
def rower_c2_token_refresh(request):
r = getrower(request.user)
res = c2stuff.do_refresh_token(r.c2refreshtoken)
if res[0] != None:
access_token = res[0]
expires_in = res[1]
@@ -2009,7 +2010,7 @@ def rower_c2_token_refresh(request):
messages.info(request,successmessage)
else:
message = "Something went wrong (refreshing tokens). Please reauthorize:"
messages.error(request,successmessage)
messages.error(request,message)
return imports_view(request)