File tree Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Expand file tree Collapse file tree 2 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -217,6 +217,10 @@ export interface FirebaseNamespace {
217217 }
218218}
219219
220+ const contains = function ( obj , key ) {
221+ return Object . prototype . hasOwnProperty . call ( obj , key ) ;
222+ } ;
223+
220224let LocalPromise = local . Promise as typeof Promise ;
221225
222226const DEFAULT_ENTRY_NAME = '[DEFAULT]' ;
@@ -438,11 +442,10 @@ export function createFirebaseNamespace(): FirebaseNamespace {
438442 */
439443 function app ( name ?: string ) : FirebaseApp {
440444 name = name || DEFAULT_ENTRY_NAME ;
441- let result = apps_ [ name ] ;
442- if ( result === undefined ) {
445+ if ( ! contains ( apps_ , name ) ) {
443446 error ( 'no-app' , { 'name' : name } ) ;
444447 }
445- return result ;
448+ return apps_ [ name ] ;
446449 }
447450
448451 patchProperty ( app , 'App' , FirebaseAppImpl ) ;
@@ -458,7 +461,7 @@ export function createFirebaseNamespace(): FirebaseNamespace {
458461 error ( 'bad-app-name' , { 'name' : name + '' } ) ;
459462 }
460463 }
461- if ( apps_ [ name ! ] !== undefined ) {
464+ if ( contains ( apps_ , name ) ) {
462465 error ( 'duplicate-app' , { 'name' : name } ) ;
463466 }
464467
Original file line number Diff line number Diff line change @@ -143,6 +143,19 @@ describe("Firebase App Class", () => {
143143 } ) ;
144144 } ) ;
145145
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+
146159 it ( "Only calls createService on first use (per app)." , ( ) => {
147160 let registrations = 0 ;
148161 firebase . INTERNAL . registerService ( 'test' , ( app : FirebaseApp ) => {
You can’t perform that action at this time.
0 commit comments