Files
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

100 lines
3.4 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib.auth.models import User
from allauth.socialaccount.models import SocialAccount
from allauth.socialaccount.tests import OAuth2TestsMixin
from allauth.tests import MockedResponse, TestCase
from .provider import StravaProvider
class StravaTests(OAuth2TestsMixin, TestCase):
provider_id = StravaProvider.id
def get_mocked_response(self):
return MockedResponse(
200,
"""{
"id": 32641234,
"username": null,
"resource_state": 2,
"firstname": "georges",
"lastname": "camembert",
"city": "London",
"state": "England",
"country": "United Kingdom",
"sex": "M",
"premium": false,
"summit": false,
"created_at": "2017-07-12T12:42:52Z",
"updated_at": "2017-10-21T11:01:23Z",
"badge_type_id": 0,
"profile_medium": "avatar/athlete/medium.png",
"profile": "avatar/athlete/large.png",
"friend": null,
"follower": null,
"email": "bill@example.com"
}""",
) # noqa
def get_mocked_response_avatar_invalid_id(self):
"""Profile including realistic avatar URL
user ID set to 0 to test edge case where id would be missing"""
return MockedResponse(
200,
"""{
"id": 0,
"username": null,
"resource_state": 2,
"firstname": "georges",
"lastname": "camembert",
"city": "London",
"state": "England",
"country": "United Kingdom",
"sex": "M",
"premium": false,
"summit": false,
"created_at": "2017-07-12T12:42:52Z",
"updated_at": "2017-10-21T11:01:23Z",
"badge_type_id": 0,
"profile_medium": "https://cloudfront.net/1/medium.jpg",
"profile": "https://cloudfront.net/1/large.jpg",
"friend": null,
"follower": null,
"email": "bill@example.com"
}""",
) # noqa
def test_valid_avatar(self):
"""test response with Avatar URL"""
self.login(self.get_mocked_response_avatar_invalid_id())
user = User.objects.get(email="bill@example.com")
soc_acc = SocialAccount.objects.filter(
user=user, provider=self.provider.id
).get()
provider_account = soc_acc.get_provider_account()
self.assertEqual(
provider_account.get_avatar_url(),
"https://cloudfront.net/1/large.jpg",
)
self.assertIsNone(provider_account.get_profile_url())
def get_login_response_json(self, with_refresh_token=True):
rt = ""
if with_refresh_token:
rt = ',"refresh_token": "testrf"'
return (
"""{
"uid":"weibo",
"access_token":"testac",
"livemode": false,
"token_type": "bearer",
"strava_publishable_key": "pk_test_someteskey",
"strava_user_id": "acct_sometestid",
"scope": "read_write"
%s }"""
% rt
)