async def METHOD_NAME(
    access_model: RoleBasedAccessModel, tests_data_dir: Path
):
    R = UserRole  # alias
    current: ProjectDict = json.loads(
        (tests_data_dir / "fake-template-projects.isan.ucdavis.json").read_text()
    )
    assert (
        current["uuid"] == "de2578c5-431e-1234-a1a7-f7d4f3a8f26b"
    ), "Did uuids of the fake changed"
    # updates both allowed and not allowed fields
    candidate = copy.deepcopy(current)
    candidate["workbench"]["de2578c5-431e-409d-998c-c1f04de67f8b"]["inputs"][
        "Kr"
    ] = 66  # ReadOnly!
    candidate["workbench"]["de2578c5-431e-409d-998c-c1f04de67f8b"]["inputs"][
        "Na"
    ] = 66  # ReadWrite
    assert not await access_model.can(
        R.ANONYMOUS,
        "study.pipeline.node.inputs.update",
        context={"current": current, "candidate": candidate},
    )
    # updates allowed fields
    candidate = copy.deepcopy(current)
    candidate["workbench"]["de2578c5-431e-409d-998c-c1f04de67f8b"]["inputs"][
        "Na"
    ] = 66  # ReadWrite
    assert await access_model.can(
        R.ANONYMOUS,
        "study.pipeline.node.inputs.update",
        context={"current": current, "candidate": candidate},
    )
    # udpates not permitted fields
    candidate = copy.deepcopy(current)
    candidate["description"] = "not allowed to write here"
    assert not await access_model.can(
        R.ANONYMOUS,
        "study.pipeline.node.inputs.update",
        context={"current": current, "candidate": candidate},
    )