input: Write a python function to create user roles and test if they are created correctly.
  ```python
  def create_role(name, description, uid=None, system=False, protected=False):
      roles = {
          "Administrator": {"description": "System Administrator - can access & make changes to any data", "uid": "ADMIN", "system": True, "protected": True},
          "Authenticated": {"description": "Authenticated - all logged-in users", "uid": "AUTHENTICATED", "system": False, "protected": True},
          "Anonymous": {"description": "Unauthenticated users", "uid": "ANONYMOUS", "system": False, "protected": True},
          "Editor": {"description": "Editor - can access & make changes to any unprotected data", "uid": "EDITOR", "system": True, "protected": True},
          "MapAdmin": {"description": "MapAdmin - allowed access to edit the MapService Catalogue", "uid": "MAP_ADMIN", "system": True, "protected": True},
          "OrgAdmin": {"description": "OrgAdmin - allowed to manage user roles for entity realms", "uid": "ORG_ADMIN", "system": True, "protected": True}
      }
      if name in roles:
          role = roles[name]
          return role
      return None
  
  assert create_role("Administrator", "") == {"description": "System Administrator - can access & make changes to any data", "uid": "ADMIN", "system": True, "protected": True}
  assert create_role("Authenticated", "") == {"description": "Authenticated - all logged-in users", "uid": "AUTHENTICATED", "system": False, "protected": True}
  assert create_role("Editor", "") == {"description": "Editor - can access & make changes to any unprotected data", "uid": "EDITOR", "system": True, "protected": True}
output: def create_role(name, description, uid=None, system=False, protected=False):
      roles = {
          "Administrator": {"description": "System Administrator - can access & make changes to any data", "uid": "ADMIN", "system": True, "protected": True},
          "Authenticated": {"description": "Authenticated - all logged-in users", "uid": "AUTHENTICATED", "system": False, "protected": True},
          "Anonymous": {"description": "Unauthenticated users", "uid": "ANONYMOUS", "system": False, "protected": True},
          "Editor": {"description": "Editor - can access & make changes to any unprotected data", "uid": "EDITOR", "system": True, "protected": True},
          "MapAdmin": {"description": "MapAdmin - allowed access to edit the MapService Catalogue", "uid": "MAP_ADMIN", "system": True, "protected": True},
          "OrgAdmin": {"description": "OrgAdmin - allowed to manage user roles for entity realms", "uid": "ORG_ADMIN", "system": True, "protected": True}
      }
      if name in roles:
          role = roles[name]
          return role
      roles[name] = {
          "description": description,
          "uid": uid,
          "system": system,
          "protected": protected
      }
      return roles[name]
  
  assert create_role("Administrator", "") == {"description": "System Administrator - can access & make changes to any data", "uid": "ADMIN", "system": True, "protected": True}
  assert create_role("Authenticated", "") == {"description": "Authenticated - all logged-in users", "uid": "AUTHENTICATED", "system": False, "protected": True}
  assert create_role("Editor", "") == {"description": "Editor - can access & make changes to any unprotected data", "uid": "EDITOR", "system": True, "protected": True}
  assert create_role("CustomRole", "Custom Role Description", "CUSTOM_UID", True, False) == {"description": "Custom Role Description", "uid": "CUSTOM_UID", "system": True, "protected": False}