- Notifications
You must be signed in to change notification settings - Fork 2.2k
/
Copy pathtestFunctionDefaultRegion.ts
73 lines (60 loc) · 1.77 KB
/
testFunctionDefaultRegion.ts
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
*
* Testing tools for invertase/react-native-firebase use only.
*
* Copyright (C) 2018-present Invertase Limited <oss@invertase.io>
*
* See License file for more information.
*/
import*asassertfrom'assert';
import{FirebaseError}from'firebase-admin';
import*asfunctionsfrom'firebase-functions/v2';
importSAMPLE_DATAfrom'./sample-data';
import{CallableRequest}from'firebase-functions/v2/https';
exportconsttestFunctionDefaultRegionV2=functions.https.onCall(
(req: CallableRequest<{type: string;asError: boolean;inputData: any}>)=>{
console.log(Date.now(),req.data);
if(typeofreq.data==='undefined'){
return'undefined';
}
if(typeofreq.data==='string'){
return'string';
}
if(typeofreq.data==='number'){
return'number';
}
if(typeofreq.data==='boolean'){
return'boolean';
}
if(req.data===null){
return'null';
}
if(Array.isArray(req.data)){
return'array';
}
const{ type, asError, inputData }=req.data;
if(!Object.hasOwnProperty.call(SAMPLE_DATA,type)){
thrownewfunctions.https.HttpsError('invalid-argument','Invalid test requested.');
}
constoutputData=SAMPLE_DATA[type];
try{
assert.deepEqual(outputData,inputData);
}catch(e){
console.error(e);
thrownewfunctions.https.HttpsError(
'invalid-argument',
'Input and Output types did not match.',
(easFirebaseError).message,
);
}
// all good
if(asError){
thrownewfunctions.https.HttpsError(
'cancelled',
'Response data was requested to be sent as part of an Error payload, so here we are!',
outputData,
);
}
returnoutputData;
},
);