Skip to content

Commit

Permalink
Modernize groups API unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
seanh committed Sep 5, 2024
1 parent a0d3045 commit 480717d
Show file tree
Hide file tree
Showing 3 changed files with 457 additions and 330 deletions.
3 changes: 2 additions & 1 deletion h/traversal/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"""

from h.traversal.annotation import AnnotationContext, AnnotationRoot
from h.traversal.group import GroupRequiredRoot, GroupRoot
from h.traversal.group import GroupContext, GroupRequiredRoot, GroupRoot
from h.traversal.organization import OrganizationContext, OrganizationRoot
from h.traversal.user import UserByIDRoot, UserByNameRoot, UserContext, UserRoot

Expand All @@ -76,4 +76,5 @@
"UserByNameRoot",
"UserByIDRoot",
"UserRoot",
"GroupContext",
)
17 changes: 7 additions & 10 deletions h/views/api/groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from h.presenters import GroupJSONPresenter, GroupsJSONPresenter, UserJSONPresenter
from h.schemas.api.group import CreateGroupAPISchema, UpdateGroupAPISchema
from h.security import Permission
from h.traversal import GroupContext
from h.views.api.config import api_config
from h.views.api.exceptions import PayloadError

Expand Down Expand Up @@ -80,7 +81,7 @@ def create(request):
link_name="group.read",
description="Fetch a group",
)
def read(context, request):
def read(context: GroupContext, request):
"""Fetch a group."""

expand = request.GET.getall("expand") or []
Expand All @@ -96,7 +97,7 @@ def read(context, request):
link_name="group.update",
description="Update a group",
)
def update(context, request):
def update(context: GroupContext, request):
"""Update a group from a PATCH payload."""
appstruct = UpdateGroupAPISchema(
default_authority=request.default_authority,
Expand Down Expand Up @@ -128,7 +129,7 @@ def update(context, request):
link_name="group.create_or_update",
description="Create or update a group",
)
def upsert(context, request):
def upsert(context: GroupContext, request):
"""
Create or update a group from a PUT payload.
Expand All @@ -137,9 +138,6 @@ def upsert(context, request):
Otherwise, replace the existing group's resource properties entirely and update
the object.
:arg context:
:type context: h.traversal.GroupUpsertContext
"""
if context.group is None:
return create(request)
Expand Down Expand Up @@ -177,7 +175,6 @@ def upsert(context, request):

group = group_update_service.update(group, **update_properties)

# Note that this view takes a ``GroupUpsertContext`` but uses a ``GroupContext`` here
return GroupJSONPresenter(group, request).asdict(expand=["organization", "scopes"])


Expand All @@ -189,7 +186,7 @@ def upsert(context, request):
description="Fetch all members of a group",
permission=Permission.Group.READ,
)
def read_members(context, _request):
def read_members(context: GroupContext, _request):
"""Fetch the members of a group."""
return [UserJSONPresenter(user).asdict() for user in context.group.members]

Expand All @@ -202,7 +199,7 @@ def read_members(context, _request):
description="Remove the current user from a group",
is_authenticated=True,
)
def remove_member(context, request):
def remove_member(context: GroupContext, request):
"""Remove a member from the given group."""
# Currently, we only support removing the requesting user
if request.matchdict.get("userid") == "me":
Expand All @@ -224,7 +221,7 @@ def remove_member(context, request):
permission=Permission.Group.MEMBER_ADD,
description="Add the user in the request params to a group.",
)
def add_member(context, request):
def add_member(context: GroupContext, request):
"""
Add a member to a given group.
Expand Down
Loading

0 comments on commit 480717d

Please sign in to comment.