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

50 lines
1.4 KiB
Python

from collections.abc import Mapping
from functools import cached_property
from typing import Any
import pytest
from sentry.auth.exceptions import IdentityNotValid
from sentry.auth.providers.oauth2 import OAuth2Provider
from sentry.models.authidentity import AuthIdentity
from sentry.models.authprovider import AuthProvider
from sentry.testutils.cases import TestCase
from sentry.testutils.silo import control_silo_test
class DummyOAuth2Provider(OAuth2Provider):
name = "dummy"
def get_client_id(self):
raise NotImplementedError
def get_client_secret(self):
raise NotImplementedError
def get_refresh_token_url(self) -> str:
raise NotImplementedError
def build_identity(self, state: Mapping[str, Any]) -> Mapping[str, Any]:
raise NotImplementedError
def build_config(self, state):
pass
@control_silo_test
class OAuth2ProviderTest(TestCase):
@cached_property
def auth_provider(self):
return AuthProvider.objects.create(provider="oauth2", organization_id=self.organization.id)
def test_refresh_identity_without_refresh_token(self):
auth_identity = AuthIdentity.objects.create(
auth_provider=self.auth_provider,
user=self.user,
data={"access_token": "access_token"},
)
provider = DummyOAuth2Provider(key=self.auth_provider.provider)
with pytest.raises(IdentityNotValid):
provider.refresh_identity(auth_identity)