diff --git a/rowers/tests/mocks.py b/rowers/tests/mocks.py index 8c040096..3021adb0 100644 --- a/rowers/tests/mocks.py +++ b/rowers/tests/mocks.py @@ -292,6 +292,8 @@ def StravaActivity(): def wait(*args, **kwargs): return 1 + + class MockStravalibClient(): def upload_activity(*args, **kwargs): return StravaActivity() @@ -356,6 +358,7 @@ def mock_cancel_subscription(*args, **kwargs): def mock_mocktest(*args, **kwargs): return '121' + ## Gateway stuff (not working) class gatewayresult(): @@ -635,6 +638,21 @@ def mocked_requests(*args, **kwargs): self.headers = header_data self.status_code = status_code + class MockStreamResponse: + def __init__(self, file_name, status_code): + data = open(file_name,'rb') + self.raw = data + self.status_code = status_code + self.ok = True + + class MockOAuth1Session(): + def __init__(self,*args, **kwargs): + pass + + def get(*args,**kwargs): + return MockStreamResponse('rowers/tests/testdata/3x250m.fit',200) + + class MockSession: def send(self,prepped): # prepped.url @@ -651,9 +669,14 @@ def mocked_requests(*args, **kwargs): return MockResponse(json_data,200) + if 'garmin' in args: + return MockOAuth1Session() + + if not args: return MockSession() + polartester = re.compile('.*?polaraccesslink\.com') c2tester = re.compile('.*?log\.concept2\.com') stravatester = re.compile('.*?strava\.com') @@ -661,6 +684,7 @@ def mocked_requests(*args, **kwargs): rktester = re.compile('.*?runkeeper\.com') uatester = re.compile('.*?mapmyfitness\.com') tptester = re.compile('.*?trainingpeaks\.com') + garmintester = re.compile('.*?garmin\.com') c2importregex = '.*?concept2.com\/api\/users\/me\/results\/\d+' c2importtester = re.compile(c2importregex) @@ -721,6 +745,13 @@ def mocked_requests(*args, **kwargs): tpuploadregex = '.*?trainingpeaks\.com\/v1\/file' tpuploadtester = re.compile(tpuploadregex) + garmindownloadregex = '.*?garmin\.com\/mockfile?id=1' + garmindownloadtester = re.compile(garmindownloadregex) + + if garmintester.match(args[0]): + if garmindownloadtester.match(args[0]): + return MockStreamResponse('rowers/tests/testdata/3x250m.fit',200) + if stravaathletetester.match(args[0]): json_data = stravaathletejson return MockResponse(json_data,200) diff --git a/rowers/tests/test_imports.py b/rowers/tests/test_imports.py index ef9e3935..1c4cf58b 100644 --- a/rowers/tests/test_imports.py +++ b/rowers/tests/test_imports.py @@ -12,6 +12,7 @@ nu = datetime.datetime.now() import rowers from rowers import dataprep +from rowers import tasks @pytest.mark.django_db @override_settings(TESTING=True) @@ -115,6 +116,22 @@ class GarminObjects(DjangoTestCase): self.assertEqual(response.status_code,200) + @patch('rowers.tasks.OAuth1Session',side_effect=mocked_requests) + def test_handle_get_garmin_file(self, MockOAuth1Session): + client_id = 'garmin' + client_secret = 'noot' + garmintoken = 'mies' + garminrefreshtoken = 'jet' + userid = self.r.user.id + url = 'fake_url' + filetype = 'fit' + + res = tasks.handle_get_garmin_file( + client_id,client_secret,garmintoken,garminrefreshtoken,userid,url,filetype + ) + + self.assertEqual(res,1) + @pytest.mark.django_db