diff --git a/tests/test_users.py b/tests/test_users.py index b8144067..e2e2f762 100644 --- a/tests/test_users.py +++ b/tests/test_users.py @@ -187,7 +187,7 @@ def test_list_users_returns_metadata( assert dict_users["metadata"]["params"]["email"] == "marcelina@foo-corp.com" assert dict_users["metadata"]["params"]["organization"] == "foo-corp.com" - def test_delete_user(self, mock_user, capture_and_mock_request): + def test_delete_user(self, capture_and_mock_request): url, request_kwargs = capture_and_mock_request("delete", None, 200) user = self.users.delete_user("user_01H7ZGXFP5C6BBQY6Z7277ZCT0") @@ -195,6 +195,17 @@ def test_delete_user(self, mock_user, capture_and_mock_request): assert url[0].endswith("users/user_01H7ZGXFP5C6BBQY6Z7277ZCT0") assert user is None + def test_update_user_password(self, mock_user, capture_and_mock_request): + url, request = capture_and_mock_request("put", mock_user, 200) + + user = self.users.update_user_password( + "user_01H7ZGXFP5C6BBQY6Z7277ZCT0", "pass_123" + ) + + assert url[0].endswith("users/user_01H7ZGXFP5C6BBQY6Z7277ZCT0/password") + assert user["id"] == "user_01H7ZGXFP5C6BBQY6Z7277ZCT0" + assert request["json"]["password"] == "pass_123" + def test_add_user_to_organization(self, capture_and_mock_request, mock_user): url, _ = capture_and_mock_request("post", mock_user, 200) diff --git a/workos/users.py b/workos/users.py index e397afc1..bb8ae260 100644 --- a/workos/users.py +++ b/workos/users.py @@ -11,12 +11,14 @@ REQUEST_METHOD_POST, REQUEST_METHOD_GET, REQUEST_METHOD_DELETE, + REQUEST_METHOD_PUT, ) from workos.utils.validation import validate_settings, USERS_MODULE USER_PATH = "users" USER_DETAIL_PATH = "users/{0}" USER_ORGANIZATION_PATH = "users/{0}/organization/{1}" +USER_PASSWORD_PATH = "users/{0}/password" USER_AUTHENTICATE_PATH = "users/authenticate" USER_PASSWORD_RESET_CHALLENGE_PATH = "users/password_reset_challenge" USER_PASSWORD_RESET_PATH = "users/password_reset" @@ -162,6 +164,27 @@ def delete_user(self, user): token=workos.api_key, ) + def update_user_password(self, user, password): + """Update user password. + + Args: + user (str) - A user unique identifier + password (str) - The new password to be set + + Returns: + dict: Updated User response from WorkOS. + """ + payload = {"password": password} + + response = self.request_helper.request( + USER_PASSWORD_PATH.format(user), + method=REQUEST_METHOD_PUT, + params=payload, + token=workos.api_key, + ) + + return WorkOSUser.construct_from_response(response).to_dict() + def add_user_to_organization(self, user, organization): """Adds a User as a member of the given Organization.