File tree Expand file tree Collapse file tree 6 files changed +89
-10
lines changed Expand file tree Collapse file tree 6 files changed +89
-10
lines changed Original file line number Diff line number Diff line change 11import { expect } from 'chai' ;
2+ import { CloudEvent } from '../../../../src/v2' ;
23import * as options from '../../../../src/v2/options' ;
34import * as alerts from '../../../../src/v2/providers/alerts' ;
45import { FULL_ENDPOINT , FULL_OPTIONS } from '../fixtures' ;
@@ -174,4 +175,39 @@ describe('alerts', () => {
174175 expect ( appId ) . to . be . equal ( myOpts . appId ) ;
175176 } ) ;
176177 } ) ;
178+
179+ describe ( 'convertAlertAndApp' , ( ) => {
180+ const event : CloudEvent < string > = {
181+ specversion : '1.0' ,
182+ id : 'id' ,
183+ source : 'source' ,
184+ type : 'type' ,
185+ time : 'now' ,
186+ data : 'data' ,
187+ } ;
188+
189+ it ( 'should leave event unchanged if alerttype & appid are missing' , ( ) => {
190+ const raw = { ...event } ;
191+
192+ const converted = alerts . convertAlertAndApp ( raw ) ;
193+
194+ expect ( raw ) . to . deep . eq ( converted ) ;
195+ } ) ;
196+
197+ it ( 'should convert alerttype & appid when present' , ( ) => {
198+ const raw = {
199+ ...event ,
200+ alerttype : 'my-alert' ,
201+ appid : 'my-app' ,
202+ } ;
203+
204+ const converted = alerts . convertAlertAndApp ( raw ) ;
205+
206+ expect ( converted ) . to . deep . eq ( {
207+ ...event ,
208+ alertType : 'my-alert' ,
209+ appId : 'my-app' ,
210+ } ) ;
211+ } ) ;
212+ } ) ;
177213} ) ;
Original file line number Diff line number Diff line change @@ -207,7 +207,7 @@ export function onAlertPublished<T extends { ['@type']: string } = any>(
207207 const [ opts , alertType , appId ] = getOptsAndAlertTypeAndApp ( alertTypeOrOpts ) ;
208208
209209 const func = ( raw : CloudEvent < unknown > ) => {
210- return handler ( raw as AlertEvent < T > ) ;
210+ return handler ( convertAlertAndApp ( raw ) as AlertEvent < T > ) ;
211211 } ;
212212
213213 func . run = handler ;
@@ -271,3 +271,24 @@ export function getOptsAndAlertTypeAndApp(
271271 }
272272 return [ opts , alertType , appId ] ;
273273}
274+
275+ /**
276+ * Helper function to covert alert type & app id in the CloudEvent to camel case.
277+ * @internal
278+ */
279+ export function convertAlertAndApp (
280+ raw : CloudEvent < unknown >
281+ ) : CloudEvent < unknown > {
282+ const event = { ...raw } ;
283+
284+ if ( 'alerttype' in event ) {
285+ ( event as any ) . alertType = ( event as any ) . alerttype ;
286+ delete ( event as any ) . alerttype ;
287+ }
288+ if ( 'appid' in event ) {
289+ ( event as any ) . appId = ( event as any ) . appid ;
290+ delete ( event as any ) . appid ;
291+ }
292+
293+ return event ;
294+ }
Original file line number Diff line number Diff line change 2828import { CloudEvent , CloudFunction } from '../../core' ;
2929import * as options from '../../options' ;
3030import { Expression } from '../../params' ;
31- import { FirebaseAlertData , getEndpointAnnotation } from './alerts' ;
31+ import {
32+ convertAlertAndApp ,
33+ FirebaseAlertData ,
34+ getEndpointAnnotation ,
35+ } from './alerts' ;
3236
3337/**
3438 * The internal payload object for adding a new tester device to app distribution.
@@ -253,7 +257,9 @@ export function onNewTesterIosDevicePublished(
253257 const [ opts , appId ] = getOptsAndApp ( appIdOrOptsOrHandler ) ;
254258
255259 const func = ( raw : CloudEvent < unknown > ) => {
256- return handler ( raw as AppDistributionEvent < NewTesterDevicePayload > ) ;
260+ return handler (
261+ convertAlertAndApp ( raw ) as AppDistributionEvent < NewTesterDevicePayload >
262+ ) ;
257263 } ;
258264
259265 func . run = handler ;
@@ -326,7 +332,9 @@ export function onInAppFeedbackPublished(
326332 const [ opts , appId ] = getOptsAndApp ( appIdOrOptsOrHandler ) ;
327333
328334 const func = ( raw : CloudEvent < unknown > ) => {
329- return handler ( raw as AppDistributionEvent < InAppFeedbackPayload > ) ;
335+ return handler (
336+ convertAlertAndApp ( raw ) as AppDistributionEvent < InAppFeedbackPayload >
337+ ) ;
330338 } ;
331339
332340 func . run = handler ;
Original file line number Diff line number Diff line change 2525 * @packageDocumentation
2626 */
2727
28- import { FirebaseAlertData , getEndpointAnnotation } from '.' ;
2928import { CloudEvent , CloudFunction } from '../../core' ;
3029import * as options from '../../options' ;
30+ import {
31+ convertAlertAndApp ,
32+ FirebaseAlertData ,
33+ getEndpointAnnotation ,
34+ } from './alerts' ;
3135
3236/**
3337 * The internal payload object for billing plan updates.
@@ -167,7 +171,7 @@ export function onOperation<T>(
167171 }
168172
169173 const func = ( raw : CloudEvent < unknown > ) => {
170- return handler ( raw as BillingEvent < T > ) ;
174+ return handler ( convertAlertAndApp ( raw ) as BillingEvent < T > ) ;
171175 } ;
172176
173177 func . run = handler ;
Original file line number Diff line number Diff line change 2525 * @packageDocumentation
2626 */
2727
28- import { FirebaseAlertData , getEndpointAnnotation } from '.' ;
2928import { CloudEvent , CloudFunction } from '../../core' ;
3029import * as options from '../../options' ;
3130import { Expression } from '../../params' ;
31+ import {
32+ convertAlertAndApp ,
33+ FirebaseAlertData ,
34+ getEndpointAnnotation ,
35+ } from './alerts' ;
3236
3337/** Generic Crashlytics issue interface */
3438export interface Issue {
@@ -631,7 +635,7 @@ export function onOperation<T>(
631635 ) ;
632636
633637 const func = ( raw : CloudEvent < unknown > ) => {
634- return handler ( raw as CrashlyticsEvent < T > ) ;
638+ return handler ( convertAlertAndApp ( raw ) as CrashlyticsEvent < T > ) ;
635639 } ;
636640
637641 func . run = handler ;
Original file line number Diff line number Diff line change 2525 * @packageDocumentation
2626 */
2727
28- import { FirebaseAlertData , getEndpointAnnotation } from '.' ;
2928import { CloudEvent , CloudFunction } from '../../core' ;
3029import { EventHandlerOptions } from '../../options' ;
30+ import {
31+ convertAlertAndApp ,
32+ FirebaseAlertData ,
33+ getEndpointAnnotation ,
34+ } from './alerts' ;
3135
3236/**
3337 * The internal payload object for a performance threshold alert.
@@ -142,7 +146,9 @@ export function onThresholdAlertPublished(
142146 const [ opts , appId ] = getOptsAndApp ( appIdOrOptsOrHandler ) ;
143147
144148 const func = ( raw : CloudEvent < unknown > ) => {
145- const event = raw as PerformanceEvent < ThresholdAlertPayload > ;
149+ const event = convertAlertAndApp ( raw ) as PerformanceEvent <
150+ ThresholdAlertPayload
151+ > ;
146152 const convertedPayload = convertPayload ( event . data . payload ) ;
147153 event . data . payload = convertedPayload ;
148154 return handler ( event ) ;
You can’t perform that action at this time.
0 commit comments