From e9cc9f55d2b598c18353b5a0565a8c736eb9f7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B4natas=20Santos?= Date: Fri, 25 Aug 2023 11:23:58 -0300 Subject: [PATCH] Add `users.update_user()` method --- tests/test_users.py | 18 ++++++++++++++++++ workos/users.py | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/tests/test_users.py b/tests/test_users.py index e2e2f762..b0f21814 100644 --- a/tests/test_users.py +++ b/tests/test_users.py @@ -195,6 +195,24 @@ def test_delete_user(self, capture_and_mock_request): assert url[0].endswith("users/user_01H7ZGXFP5C6BBQY6Z7277ZCT0") assert user is None + def test_update_user(self, mock_user, capture_and_mock_request): + url, request = capture_and_mock_request("put", mock_user, 200) + + user = self.users.update_user( + "user_01H7ZGXFP5C6BBQY6Z7277ZCT0", + { + "first_name": "Marcelina", + "last_name": "Hoeger", + "email_verified": True, + }, + ) + + assert url[0].endswith("users/user_01H7ZGXFP5C6BBQY6Z7277ZCT0") + assert user["id"] == "user_01H7ZGXFP5C6BBQY6Z7277ZCT0" + assert request["json"]["first_name"] == "Marcelina" + assert request["json"]["last_name"] == "Hoeger" + assert request["json"]["email_verified"] == True + def test_update_user_password(self, mock_user, capture_and_mock_request): url, request = capture_and_mock_request("put", mock_user, 200) diff --git a/workos/users.py b/workos/users.py index bb8ae260..d6d2ff0b 100644 --- a/workos/users.py +++ b/workos/users.py @@ -164,6 +164,28 @@ def delete_user(self, user): token=workos.api_key, ) + def update_user(self, user, payload): + """Update user attributes. + + Args: + user (str) - The User unique identifier + payload (dict) - The User attributes to be updated + user[first_name] (string) - The user's first name. + user[last_name] (string) - The user's last name. + user[email_verified] (bool) - Whether the user's email address was previously verified. + + Returns: + dict: Updated User response from WorkOS. + """ + response = self.request_helper.request( + USER_DETAIL_PATH.format(user), + method=REQUEST_METHOD_PUT, + params=payload, + token=workos.api_key, + ) + + return WorkOSUser.construct_from_response(response).to_dict() + def update_user_password(self, user, password): """Update user password.