All files / lib/lambda/user-management getUserProfile.ts

85.71% Statements 6/7
75% Branches 3/4
100% Functions 1/1
85.71% Lines 6/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37            1x                   1x             4x   4x       4x   4x          
import { APIGatewayEvent } from "shared-types";
import { z } from "zod";
 
import { authenticatedMiddy, canViewUser, ContextWithAuthenticatedUser } from "../middleware";
import { getAllUserRolesByEmail } from "./userManagementService";
 
export const getUserProfileEventSchema = z
  .object({
    body: z.object({
      userEmail: z.string().email().optional(),
    }),
  })
  .passthrough();
 
export type GetUserProfileEvent = APIGatewayEvent & z.infer<typeof getUserProfileEventSchema>;
 
export const handler = authenticatedMiddy({
  opensearch: true,
  setToContext: true,
  eventSchema: getUserProfileEventSchema,
})
  .use(canViewUser())
  .handler(async (event: GetUserProfileEvent, context: ContextWithAuthenticatedUser) => {
    const email = event?.body?.userEmail || context?.authenticatedUser?.email;
 
    Iif (!email) {
      throw new Error("Email is undefined");
    }
 
    const userRoles = await getAllUserRolesByEmail(email);
 
    return {
      statusCode: 200,
      body: userRoles,
    };
  });