diff --git a/tests/test_user_management.py b/tests/test_user_management.py index 0aa5463d..eab3dee9 100644 --- a/tests/test_user_management.py +++ b/tests/test_user_management.py @@ -414,6 +414,7 @@ def test_get_user(self, mock_user, capture_and_mock_http_client_request): assert user.id == "user_01H7ZGXFP5C6BBQY6Z7277ZCT0" assert user.profile_picture_url == "https://example.com/profile-picture.jpg" assert user.last_sign_in_at == "2021-06-25T19:07:33.155Z" + assert user.locale == "en-US" def test_get_user_by_external_id( self, mock_user, capture_and_mock_http_client_request @@ -434,6 +435,7 @@ def test_get_user_by_external_id( assert user.id == "user_01H7ZGXFP5C6BBQY6Z7277ZCT0" assert user.profile_picture_url == "https://example.com/profile-picture.jpg" assert user.last_sign_in_at == "2021-06-25T19:07:33.155Z" + assert user.locale == "en-US" assert user.metadata == mock_user["metadata"] def test_list_users_auto_pagination( @@ -492,6 +494,29 @@ def test_update_user(self, mock_user, capture_and_mock_http_client_request): "password": "password", } + def test_update_user_with_locale( + self, mock_user, capture_and_mock_http_client_request + ): + request_kwargs = capture_and_mock_http_client_request( + self.http_client, mock_user, 200 + ) + + params = { + "first_name": "Marcelina", + "locale": "fr-FR", + } + user = syncify( + self.user_management.update_user( + user_id="user_01H7ZGXFP5C6BBQY6Z7277ZCT0", **params + ) + ) + + assert request_kwargs["url"].endswith("users/user_01H7ZGXFP5C6BBQY6Z7277ZCT0") + assert user.id == "user_01H7ZGXFP5C6BBQY6Z7277ZCT0" + assert request_kwargs["method"] == "put" + assert request_kwargs["json"]["first_name"] == "Marcelina" + assert request_kwargs["json"]["locale"] == "fr-FR" + def test_delete_user(self, capture_and_mock_http_client_request): request_kwargs = capture_and_mock_http_client_request( http_client=self.http_client, status_code=204 diff --git a/tests/utils/fixtures/mock_user.py b/tests/utils/fixtures/mock_user.py index 82bbfcfc..b8537832 100644 --- a/tests/utils/fixtures/mock_user.py +++ b/tests/utils/fixtures/mock_user.py @@ -15,6 +15,7 @@ def __init__(self, id): email_verified=False, profile_picture_url="https://example.com/profile-picture.jpg", last_sign_in_at="2021-06-25T19:07:33.155Z", + locale="en-US", created_at=now, updated_at=now, metadata={"key": "value"}, diff --git a/workos/types/user_management/user.py b/workos/types/user_management/user.py index 2bd72ae3..1c8cf8a3 100644 --- a/workos/types/user_management/user.py +++ b/workos/types/user_management/user.py @@ -15,6 +15,7 @@ class User(WorkOSModel): email_verified: bool profile_picture_url: Optional[str] = None last_sign_in_at: Optional[str] = None + locale: Optional[str] = None created_at: str updated_at: str external_id: Optional[str] = None diff --git a/workos/user_management.py b/workos/user_management.py index d06b90c7..e5558726 100644 --- a/workos/user_management.py +++ b/workos/user_management.py @@ -225,6 +225,7 @@ def update_user( password_hash_type: Optional[PasswordHashType] = None, external_id: Optional[str] = None, metadata: Optional[Metadata] = None, + locale: Optional[str] = None, ) -> SyncOrAsync[User]: """Update user attributes. @@ -237,6 +238,7 @@ def update_user( password (str): The password to set for the user. (Optional) password_hash (str): The hashed password to set for the user, used when migrating from another user store. Mutually exclusive with password. (Optional) password_hash_type (str): The algorithm originally used to hash the password, used when providing a password_hash. Valid values are 'bcrypt', `firebase-scrypt`, and `ssha`. (Optional) + locale (str): The user's locale. (Optional) Returns: User: Updated User response from WorkOS. @@ -1002,6 +1004,7 @@ def update_user( password_hash_type: Optional[PasswordHashType] = None, external_id: Optional[str] = None, metadata: Optional[Metadata] = None, + locale: Optional[str] = None, ) -> User: json = { "first_name": first_name, @@ -1013,6 +1016,7 @@ def update_user( "password_hash_type": password_hash_type, "external_id": external_id, "metadata": metadata, + "locale": locale, } response = self._http_client.request( @@ -1688,6 +1692,7 @@ async def update_user( password_hash_type: Optional[PasswordHashType] = None, external_id: Optional[str] = None, metadata: Optional[Metadata] = None, + locale: Optional[str] = None, ) -> User: json = { "first_name": first_name, @@ -1699,6 +1704,7 @@ async def update_user( "password_hash_type": password_hash_type, "external_id": external_id, "metadata": metadata, + "locale": locale, } response = await self._http_client.request(