Skip to content

Commit 7d8b751

Browse files
i-zhivetievnijel
authored andcommitted
fix: #571 coerce uid to str
1 parent 0b64a56 commit 7d8b751

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

social_django/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Django ORM models for Social Auth"""
22

3+
from typing import Union
4+
35
from django.conf import settings
46
from django.db import models
57
from django.db.utils import IntegrityError
@@ -54,7 +56,9 @@ class Meta:
5456
abstract = True
5557

5658
@classmethod
57-
def get_social_auth(cls, provider: str, uid: str):
59+
def get_social_auth(cls, provider: str, uid: Union[str, int]):
60+
if not isinstance(uid, str):
61+
uid = str(uid)
5862
for social in cls.objects.select_related("user").filter(
5963
provider=provider, uid=uid
6064
):

tests/test_models.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def test_get_social_auth(self):
144144
self.assertEqual(
145145
UserSocialAuth.get_social_auth(provider=usa.provider, uid=usa.uid), usa
146146
)
147-
self.assertIsNone(UserSocialAuth.get_social_auth(provider="a", uid=1))
147+
self.assertIsNone(UserSocialAuth.get_social_auth(provider="a", uid="1"))
148148

149149
# Mixin
150150
self.assertEqual(
@@ -154,15 +154,38 @@ def test_get_social_auth(self):
154154
usa,
155155
)
156156
self.assertIsNone(
157-
super(AbstractUserSocialAuth, usa).get_social_auth(provider="a", uid=1)
157+
super(AbstractUserSocialAuth, usa).get_social_auth(provider="a", uid="1")
158158
)
159159

160160
# Manager
161161
self.assertEqual(
162162
UserSocialAuth.objects.get_social_auth(provider=usa.provider, uid=usa.uid),
163163
usa,
164164
)
165-
self.assertIsNone(UserSocialAuth.objects.get_social_auth(provider="a", uid=1))
165+
self.assertIsNone(UserSocialAuth.objects.get_social_auth(provider="a", uid="1"))
166+
167+
def test_get_social_auth_int_uid(self):
168+
usa = self.usa
169+
int_uid = int(usa.uid)
170+
171+
# Model
172+
self.assertEqual(
173+
UserSocialAuth.get_social_auth(provider=usa.provider, uid=int_uid), usa
174+
)
175+
176+
# Mixin
177+
self.assertEqual(
178+
super(AbstractUserSocialAuth, usa).get_social_auth(
179+
provider=usa.provider, uid=usa.uid
180+
),
181+
usa,
182+
)
183+
184+
# Manager
185+
self.assertEqual(
186+
UserSocialAuth.get_social_auth(provider=usa.provider, uid=int_uid),
187+
usa,
188+
)
166189

167190
def test_get_social_auth_for_user(self):
168191
qs = UserSocialAuth.get_social_auth_for_user(

0 commit comments

Comments
 (0)