Files
2024-02-15 17:01:50 +00:00

68 lines
2.9 KiB
Python

from sentry.auth.providers.fly.provider import FlyOAuth2Provider
from sentry.models.authidentity import AuthIdentity
from sentry.models.authprovider import AuthProvider
from sentry.models.user import User
from sentry.services.hybrid_cloud.user.service import user_service
from sentry.testutils.cases import TestCase
from sentry.testutils.silo import control_silo_test
@control_silo_test
class DatabaseBackedUserService(TestCase):
def setUp(self) -> None:
super().setUp()
def test_create_new_user(self):
old_user_count = User.objects.all().count()
rpc_user, created = user_service.get_or_create_user_by_email(email="[email protected]")
user = User.objects.get(id=rpc_user.id)
new_user_count = User.objects.all().count()
assert new_user_count == old_user_count + 1
assert user.flags.newsletter_consent_prompt
assert created
def test_get_no_existing(self):
rpc_user = user_service.get_user_by_email(email="[email protected]")
assert rpc_user is None
def test_get_or_create_user(self):
user1 = self.create_user(email="[email protected]", username="1")
user2 = self.create_user(email="[email protected]", username="2")
user, created = user_service.get_or_create_user_by_email(email="[email protected]")
assert user1.id == user.id
assert user2.id != user.id
assert created is False
def test_get_active_user(self):
inactive_user = self.create_user(
email="[email protected]", username="inactive", is_active=False
)
active_user = self.create_user(email="[email protected]", username="active")
user, created = user_service.get_or_create_user_by_email(email="[email protected]")
assert active_user.id == user.id
assert inactive_user.id != user.id
assert created is False
def test_get_user_ci(self):
user = self.create_user(email="[email protected]")
fetched_user, created = user_service.get_or_create_user_by_email(email="[email protected]")
assert user.id == fetched_user.id
assert created is False
def test_get_user_with_ident(self):
user1 = self.create_user(email="[email protected]", username="1")
user2 = self.create_user(email="[email protected]", username="2")
org = self.create_organization(slug="test")
config_data = FlyOAuth2Provider.build_config(resource={"id": "x1234x"})
partner_user_id = "u4567u"
provider = AuthProvider.objects.create(
organization_id=org.id, provider="fly", config=config_data
)
AuthIdentity.objects.create(auth_provider=provider, user=user2, ident=partner_user_id)
fetched_user, created = user_service.get_or_create_user_by_email(
email="[email protected]", ident=partner_user_id
)
assert user2.id == fetched_user.id
assert user1.id != fetched_user.id
assert created is False