Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions tests/test_user_management.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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(
Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions tests/utils/fixtures/mock_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"},
Expand Down
1 change: 1 addition & 0 deletions workos/types/user_management/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions workos/user_management.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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.
Expand Down Expand Up @@ -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,
Expand All @@ -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(
Expand Down Expand Up @@ -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,
Expand All @@ -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(
Expand Down