mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
50 lines
1.4 KiB
Python
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)
|