File tree 2 files changed +20
-4
lines changed
2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -217,6 +217,10 @@ export interface FirebaseNamespace {
217
217
}
218
218
}
219
219
220
+ const contains = function ( obj , key ) {
221
+ return Object . prototype . hasOwnProperty . call ( obj , key ) ;
222
+ } ;
223
+
220
224
let LocalPromise = local . Promise as typeof Promise ;
221
225
222
226
const DEFAULT_ENTRY_NAME = '[DEFAULT]' ;
@@ -438,11 +442,10 @@ export function createFirebaseNamespace(): FirebaseNamespace {
438
442
*/
439
443
function app ( name ?: string ) : FirebaseApp {
440
444
name = name || DEFAULT_ENTRY_NAME ;
441
- let result = apps_ [ name ] ;
442
- if ( result === undefined ) {
445
+ if ( ! contains ( apps_ , name ) ) {
443
446
error ( 'no-app' , { 'name' : name } ) ;
444
447
}
445
- return result ;
448
+ return apps_ [ name ] ;
446
449
}
447
450
448
451
patchProperty ( app , 'App' , FirebaseAppImpl ) ;
@@ -458,7 +461,7 @@ export function createFirebaseNamespace(): FirebaseNamespace {
458
461
error ( 'bad-app-name' , { 'name' : name + '' } ) ;
459
462
}
460
463
}
461
- if ( apps_ [ name ! ] !== undefined ) {
464
+ if ( contains ( apps_ , name ) ) {
462
465
error ( 'duplicate-app' , { 'name' : name } ) ;
463
466
}
464
467
Original file line number Diff line number Diff line change @@ -143,6 +143,19 @@ describe("Firebase App Class", () => {
143
143
} ) ;
144
144
} ) ;
145
145
146
+ it ( "OK to use Object.prototype member names as app name." , ( ) => {
147
+ let app = firebase . initializeApp ( { } , 'toString' ) ;
148
+ assert . equal ( firebase . apps . length , 1 ) ;
149
+ assert . equal ( app . name , 'toString' ) ;
150
+ assert . strictEqual ( firebase . app ( 'toString' ) , app ) ;
151
+ } ) ;
152
+
153
+ it ( "Error to get uninitialized app using Object.prototype member name." , ( ) => {
154
+ assert . throws ( ( ) => {
155
+ firebase . app ( 'toString' ) ;
156
+ } , / ' t o S t r i n g ' .* c r e a t e d / i) ;
157
+ } ) ;
158
+
146
159
it ( "Only calls createService on first use (per app)." , ( ) => {
147
160
let registrations = 0 ;
148
161
firebase . INTERNAL . registerService ( 'test' , ( app : FirebaseApp ) => {
You can’t perform that action at this time.
0 commit comments