code: def test_user_view_set_role(
      worker: Worker, guest_client: DomainClient
  ) -> None:
      admin_client = get_mock_client(
          worker.root_client, ServiceRole.ADMIN
      )
      assert admin_client.me.role == ServiceRole.ADMIN
      admin_client.register(
          name="Sheldon Cooper",
          email="sheldon@caltech.edu",
          password="changethis",
          password_verify="changethis",
          institution="Caltech",
          website="https://www.caltech.edu/",
      )
      sheldon = admin_client.users[-1]
      assert (
          sheldon.syft_client_verify_key
          == admin_client.me.syft_client_verify_key
          == admin_client.verify_key
      )
      assert sheldon.role == ServiceRole.DATA_SCIENTIST
      sheldon.update(role="guest")
      assert sheldon.role == ServiceRole.GUEST
      sheldon.update(role="data_owner")
      assert sheldon.role == ServiceRole.DATA_OWNER
      # the data scientist (Sheldon) log in the domain, he should not
      # be able to change his role, even if he is a data owner now
      ds_client = guest_client.login(
          email="sheldon@caltech.edu", password="changethis"
      )
      assert (
          ds_client.me.syft_client_verify_key
          == ds_client.verify_key
          != admin_client.verify_key
      )
      assert ds_client.me.role == sheldon.role
      assert ds_client.me.role == ServiceRole.DATA_OWNER
      assert isinstance(ds_client.me.update(role="guest"), SyftError)
      assert isinstance(
          ds_client.me.update(role="data_scientist"), SyftError
      )
      # now we set sheldon's role to admin. Only now he can change his role
      sheldon.update(role="admin")
      assert sheldon.role == ServiceRole.ADMIN
      # QA: this is different than when running in the notebook
      assert len(ds_client.users.get_all()) == len(
          admin_client.users.get_all()
      )
      assert isinstance(ds_client.me.update(role="guest"), SyftSuccess)
      assert isinstance(ds_client.me.update(role="admin"), SyftError)
  
imports: from faker import Faker
  import pytest
  import syft
  from syft import SyftError
  from syft import SyftSuccess
  from syft.client.api import SyftAPICall
  from syft.client.domain_client import DomainClient
  from syft.node.node import get_default_root_email
  from syft.node.worker import Worker
  from syft.service.context import AuthedServiceContext
  from syft.service.user.user import ServiceRole
  from syft.service.user.user import UserCreate
  from syft.service.user.user import UserUpdate
  from syft.service.user.user import UserView
label_desc: Use image node_id 21 for calling a global function with example usage: test_user_view_set_role(worker, guest_client) without return types