From 16c8d9a155efebd25885fdc3b428956de7070412 Mon Sep 17 00:00:00 2001 From: Stacy Curry Date: Mon, 6 Oct 2025 16:58:23 -0500 Subject: [PATCH 1/2] add locale to user --- tests/test_user_management.py | 23 +++++++++++++++++++++++ tests/utils/fixtures/mock_user.py | 1 + workos/types/user_management/user.py | 1 + workos/user_management.py | 6 ++++++ 4 files changed, 31 insertions(+) diff --git a/tests/test_user_management.py b/tests/test_user_management.py index bedbaaec..6f5a12a7 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,27 @@ 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 5c7640d0..1ccec065 100644 --- a/workos/user_management.py +++ b/workos/user_management.py @@ -216,6 +216,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. @@ -228,6 +229,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. @@ -979,6 +981,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, @@ -990,6 +993,7 @@ def update_user( "password_hash_type": password_hash_type, "external_id": external_id, "metadata": metadata, + "locale": locale, } response = self._http_client.request( @@ -1617,6 +1621,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, @@ -1628,6 +1633,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( From de9ae5bae9c1318a03c26d728ddf3dc847b53695 Mon Sep 17 00:00:00 2001 From: Stacy Curry Date: Mon, 6 Oct 2025 17:12:13 -0500 Subject: [PATCH 2/2] fix lint --- tests/test_user_management.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_user_management.py b/tests/test_user_management.py index 6f5a12a7..f5105afc 100644 --- a/tests/test_user_management.py +++ b/tests/test_user_management.py @@ -494,7 +494,9 @@ 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): + 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 )