Class TrueFoundryMockServiceHandler

java.lang.Object
edu.internet2.middleware.grouper.j2ee.MockServiceHandler
edu.internet2.middleware.grouper.app.truefoundry.TrueFoundryMockServiceHandler

public class TrueFoundryMockServiceHandler extends MockServiceHandler
  • Field Details

    • doNotLogHeaders

      public static final Set<String> doNotLogHeaders
  • Constructor Details

    • TrueFoundryMockServiceHandler

      public TrueFoundryMockServiceHandler()
  • Method Details

    • doNotLogHeaders

      public Set<String> doNotLogHeaders()
      Overrides:
      doNotLogHeaders in class MockServiceHandler
    • doNotLogParameters

      public Set<String> doNotLogParameters()
      Overrides:
      doNotLogParameters in class MockServiceHandler
    • ensureTrueFoundryMockTables

      public static void ensureTrueFoundryMockTables()
    • checkAuthorization

      public void checkAuthorization(MockServiceRequest mockServiceRequest)
      Check authorization by validating the Bearer token in the Authorization header. The accessTokenPassword is a JSON string with "apiToken" and "scimToken" fields. Accepts either token.
    • getSubjects

      public void getSubjects(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      GET /subjects - retrieve users, optionally filtered by query parameter (email search). Supports limit and offset for paging. showInvalidUsers includes inactive users. Response: {"users": [...], "totalUsers": N}
    • postRegisterUser

      public void postRegisterUser(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      POST /users/register - register a new user. Body: {"email": "...", "sendInviteEmail": false} Returns 200 {} (no user ID in response — caller must use GET /subjects to look up ID). Idempotent: if user already exists, returns 200 without error.
    • patchDeactivateUser

      public void patchDeactivateUser(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      PATCH /users/deactivate - set user active=false. Body: {"email": "..."}
    • patchActivateUser

      public void patchActivateUser(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      PATCH /users/activate - set user active=true. Body: {"email": "..."}
    • patchAssignUserRole

      public void patchAssignUserRole(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      PATCH /users/roles - assign a role to a user by email. Body: {"email": "...", "roles": ["roleName"], "resourceType": "account"} Looks up the role by name and upserts the membership.
    • patchScimUser

      public void patchScimUser(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse, String userId)
      PATCH /scim/v2/{tenantName}/{ssoId}/Users/{userId} - update display name via SCIM PatchOp. Body: {"schemas": [...], "Operations": [{"op": "replace", "path": "displayName", "value": "..."}]}
    • getRoleList

      public void getRoleList(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      GET /role/list - retrieve all roles. Response: {"data": [{"id": "...", "name": "...", "resourceType": "account", "isDefault": false, "manifest": {"displayName": "...", "description": "..."}}]}
    • putRole

      public void putRole(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      PUT /role - create or update a role (upsert by name). Body: {"manifest": {"type": "role", "name": "...", "displayName": "...", "resourceType": "account", "description": "...", "permissions": [...]}} Response: {"data": {...role...}}
    • deleteRole

      public void deleteRole(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse, String roleId)
      DELETE /role/{id} - delete a role by ID. Returns 200 on success, 404 if not found. Also deletes all memberships associated with the role.
    • getTeams

      public void getTeams(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      GET /teams/user - retrieve all teams with paging. Response: {"data": [{"id": "...", "teamName": "...", "manifest": {"managers": [...]}}]}
    • getTeamById

      public void getTeamById(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse, String teamId)
      GET /teams/{id} - get a team by its ID. Response: {"data": {"id": "...", "teamName": "...", "manifest": {"managers": [...]}}} Returns 404 if not found.
    • putTeam

      public void putTeam(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      PUT /teams - create or update a team (upsert by name), replacing the managers list. Body: {"manifest": {"type": "team", "name": "...", "managers": ["email1", "email2"]}} Response: {"data": {...team...}} Returns 201 for new teams, 200 for updates.
    • deleteTeam

      public void deleteTeam(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse, String teamId)
      DELETE /teams/{id} - delete a team by ID. Returns 200 on success, 404 if not found. Also deletes all memberships associated with the team.
    • deleteUser

      public void deleteUser(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse, String userId)
      DELETE /users/{userId} - hard-delete a user by their internal ID. Returns 200 on success, 404 if not found. Also deletes all memberships associated with the user. FOR TESTING/CLEANUP USE ONLY — mirrors the real TrueFoundry DELETE /api/svc/v1/users/{userId}.
    • handleRequest

      public void handleRequest(MockServiceRequest mockServiceRequest, MockServiceResponse mockServiceResponse)
      Specified by:
      handleRequest in class MockServiceHandler