82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Run just this suite:
|
|
python manage.py test allauth.socialaccount.providers.trainingpeaks.tests.TrainingPeaksTests
|
|
"""
|
|
from __future__ import unicode_literals
|
|
|
|
from collections import namedtuple
|
|
|
|
from django.test.utils import override_settings
|
|
|
|
from allauth.socialaccount.tests import OAuth2TestsMixin
|
|
from allauth.tests import MockedResponse, TestCase
|
|
|
|
from .provider import TrainingPeaksProvider
|
|
from .views import TrainingPeaksOAuth2Adapter
|
|
|
|
|
|
class TrainingPeaksTests(OAuth2TestsMixin, TestCase):
|
|
provider_id = TrainingPeaksProvider.id
|
|
|
|
def get_mocked_response(self):
|
|
return MockedResponse(
|
|
200,
|
|
"""{
|
|
"Id": 123456,
|
|
"FirstName": "John",
|
|
"LastName": "Doe",
|
|
"Email": "user@example.com",
|
|
"DateOfBirth": "1986-02-01T00:00:00",
|
|
"CoachedBy": 987654,
|
|
"Weight": 87.5223617553711
|
|
}""",
|
|
) # noqa
|
|
|
|
def get_login_response_json(self, with_refresh_token=True):
|
|
rtoken = ""
|
|
if with_refresh_token:
|
|
rtoken = ',"refresh_token": "testrf"'
|
|
return (
|
|
"""{
|
|
"access_token" : "testac",
|
|
"token_type" : "bearer",
|
|
"expires_in" : 600,
|
|
"scope": "scopes granted"
|
|
%s }"""
|
|
% rtoken
|
|
)
|
|
|
|
def test_default_use_sandbox_uri(self):
|
|
adapter = TrainingPeaksOAuth2Adapter(None)
|
|
self.assertTrue(".sandbox." in adapter.authorize_url)
|
|
self.assertTrue(".sandbox." in adapter.access_token_url)
|
|
self.assertTrue(".sandbox." in adapter.profile_url)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_PROVIDERS={"trainingpeaks": {"USE_PRODUCTION": True}}
|
|
)
|
|
def test_use_production_uri(self):
|
|
adapter = TrainingPeaksOAuth2Adapter(None)
|
|
self.assertFalse(".sandbox." in adapter.authorize_url)
|
|
self.assertFalse(".sandbox." in adapter.access_token_url)
|
|
self.assertFalse(".sandbox." in adapter.profile_url)
|
|
|
|
def test_scope_from_default(self):
|
|
Request = namedtuple("request", ["GET"])
|
|
mock_request = Request(GET={})
|
|
scope = self.provider.get_scope(mock_request)
|
|
self.assertTrue("athlete:profile" in scope)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_PROVIDERS={
|
|
"trainingpeaks": {"SCOPE": ["athlete:profile", "workouts", "workouts:wod"]}
|
|
}
|
|
)
|
|
def test_scope_from_settings(self):
|
|
Request = namedtuple("request", ["GET"])
|
|
mock_request = Request(GET={})
|
|
scope = self.provider.get_scope(mock_request)
|
|
for item in ("athlete:profile", "workouts", "workouts:wod"):
|
|
self.assertTrue(item in scope)
|