|
1 | 1 | from sentry.api.serializers import ApiTokenSerializer
|
| 2 | +from sentry.models.apitoken import ApiToken |
| 3 | +from sentry.silo.base import SiloMode |
2 | 4 | from sentry.testutils.cases import TestCase
|
| 5 | +from sentry.testutils.helpers.options import override_options |
| 6 | +from sentry.testutils.silo import assume_test_silo_mode |
3 | 7 |
|
4 | 8 |
|
5 | 9 | class TestApiTokenSerializer(TestCase):
|
@@ -38,6 +42,33 @@ def test_when_flag_is_false(self) -> None:
|
38 | 42 | assert "token" not in serialized_object
|
39 | 43 |
|
40 | 44 |
|
| 45 | +class TestRefreshTokens(TestApiTokenSerializer): |
| 46 | + def setUp(self) -> None: |
| 47 | + super().setUp() |
| 48 | + attrs = self._serializer.get_attrs(item_list=[self._token], user=self._user) |
| 49 | + attrs["application"] = None |
| 50 | + self._attrs = attrs |
| 51 | + |
| 52 | + def test_no_refresh_token_on_user_token(self) -> None: |
| 53 | + serialized_object = self._serializer.serialize( |
| 54 | + obj=self._token, user=self._user, attrs=self._attrs |
| 55 | + ) |
| 56 | + |
| 57 | + assert "refreshToken" not in serialized_object |
| 58 | + |
| 59 | + @override_options({"apitoken.save-hash-on-create": True}) |
| 60 | + def test_refresh_token_on_non_user_token(self) -> None: |
| 61 | + with assume_test_silo_mode(SiloMode.CONTROL): |
| 62 | + token = ApiToken.objects.create(user=self._user) |
| 63 | + assert token.hashed_refresh_token is not None |
| 64 | + |
| 65 | + serialized_object = self._serializer.serialize( |
| 66 | + obj=token, user=self._user, attrs=self._attrs |
| 67 | + ) |
| 68 | + |
| 69 | + assert "refreshToken" in serialized_object |
| 70 | + |
| 71 | + |
41 | 72 | class TestLastTokenCharacters(TestApiTokenSerializer):
|
42 | 73 | def test_field_is_returned(self) -> None:
|
43 | 74 | attrs = self._serializer.get_attrs(item_list=[self._token], user=self._user)
|
|
0 commit comments