From d69c15254fda622c886c06ce69f42241fd2c6356 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 1 Jul 2018 22:15:36 +0200 Subject: [PATCH] mocked all c2stuff except workout export --- rowers/c2stuff.py | 14 ++------- rowers/tests.py | 78 +++++++++++++++++++++++++++++++++++++++++------ rowers/views.py | 3 +- 3 files changed, 73 insertions(+), 22 deletions(-) diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index ce5f1fa9..3b9b95dc 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -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 diff --git a/rowers/tests.py b/rowers/tests.py index d1445e1b..93365c87 100644 --- a/rowers/tests.py +++ b/rowers/tests.py @@ -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) diff --git a/rowers/views.py b/rowers/views.py index acdf5a72..d38ef51b 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -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)