diff --git a/CHANGELOG.md b/CHANGELOG.md index c40d2936dbe..723dd83e131 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,3 @@ - Support loading Firebase Functions packaged as an ES module. (#3485) -- Fixes Cloud Storage emulator missing classes (#3541) +- Fixes Cloud Storage emulator missing classes. (#3541) +- Add missing properties to Authentication functions `context` in the Functions emulator. (#3536) diff --git a/src/emulator/auth/cloudFunctions.ts b/src/emulator/auth/cloudFunctions.ts index 828f5a3ab2c..7804d012bf7 100644 --- a/src/emulator/auth/cloudFunctions.ts +++ b/src/emulator/auth/cloudFunctions.ts @@ -1,3 +1,6 @@ +import * as uuid from "uuid"; + +import { EventContext } from "firebase-functions"; import { Client } from "../../apiv2"; import { EmulatorInfo, Emulators } from "../types"; @@ -7,6 +10,10 @@ import { UserInfo } from "./state"; type AuthCloudFunctionAction = "create" | "delete"; +type CreateEvent = EventContext & { + data: UserInfoPayload; +}; + export class AuthCloudFunction { private logger = EmulatorLogger.forEmulator(Emulators.AUTH); private functionsEmulatorInfo?: EmulatorInfo; @@ -54,9 +61,16 @@ export class AuthCloudFunction { private createEventRequestBody( action: AuthCloudFunctionAction, userInfoPayload: UserInfoPayload - ): { eventType: string; data: UserInfoPayload } { + ): CreateEvent { return { + eventId: uuid.v4(), eventType: `providers/firebase.auth/eventTypes/user.${action}`, + resource: { + name: `projects/${this.projectId}`, + service: "firebaseauth.googleapis.com", + }, + params: {}, + timestamp: new Date().toISOString(), data: userInfoPayload, }; } diff --git a/src/test/emulators/cloudFunctions.spec.ts b/src/test/emulators/cloudFunctions.spec.ts index ec4b59c8588..83a9571a435 100644 --- a/src/test/emulators/cloudFunctions.spec.ts +++ b/src/test/emulators/cloudFunctions.spec.ts @@ -24,7 +24,14 @@ describe("cloudFunctions", () => { it("should make a request to the functions emulator", async () => { nock("http://1.1.1.1:4") .post("/functions/projects/project-foo/trigger_multicast", { - eventType: `providers/firebase.auth/eventTypes/user.create`, + eventId: /.*/, + eventType: "providers/firebase.auth/eventTypes/user.create", + resource: { + name: "projects/project-foo", + service: "firebaseauth.googleapis.com", + }, + params: {}, + timestamp: /.*/, data: { uid: "foobar", metadata: {}, customClaims: {} }, }) .reply(200, {});