From 9b8355e75808c628596d75eb7d6f5c31c2e7df99 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 14:59:45 -0700 Subject: [PATCH 01/16] test --- packages/database/test/database.test.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/database/test/database.test.ts b/packages/database/test/database.test.ts index 0cc9f6c9d83..d7ad1b28a9e 100644 --- a/packages/database/test/database.test.ts +++ b/packages/database/test/database.test.ts @@ -50,6 +50,13 @@ describe('Database Tests', () => { expect(db.ref().toString()).to.equal('https://foo.bar.com/'); }); + it('Can get database with custom URL', () => { + const db = defaultApp.database('http://foo.euw1.firebasedatabase.app'); + expect(db).to.be.ok; + // The URL is assumed to be secure if no port is specified. + expect(db.ref().toString()).to.equal('http://foo.euw1.firebasedatabase.app/'); + }); + it('Can get database with custom URL and port', () => { const db = defaultApp.database('http://foo.bar.com:80'); expect(db).to.be.ok; From fde052e3f62ae2c29e0541be01aa2afcff64c62c Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 15:26:30 -0700 Subject: [PATCH 02/16] pass --- packages/database/src/core/util/libs/parser.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index bb789c08fb7..d7552c744a9 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -175,7 +175,11 @@ export const parseDatabaseURL = function( } const parts = host.split('.'); - if (parts.length === 3) { + if (parts.length === 4) { + domain = parts[1] + "." + parts[2]; + subdomain = parts[0].toLowerCase(); + namespace = subdomain; + } else if (parts.length === 3) { // Normalize namespaces to lowercase to share storage / connection. domain = parts[1]; subdomain = parts[0].toLowerCase(); From e223614f032923a31078e89ef48c4105c98cb84d Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 15:58:21 -0700 Subject: [PATCH 03/16] pass --- packages/database/test/database.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/database/test/database.test.ts b/packages/database/test/database.test.ts index d7ad1b28a9e..d8f68eabc20 100644 --- a/packages/database/test/database.test.ts +++ b/packages/database/test/database.test.ts @@ -53,8 +53,7 @@ describe('Database Tests', () => { it('Can get database with custom URL', () => { const db = defaultApp.database('http://foo.euw1.firebasedatabase.app'); expect(db).to.be.ok; - // The URL is assumed to be secure if no port is specified. - expect(db.ref().toString()).to.equal('http://foo.euw1.firebasedatabase.app/'); + expect(db.ref().toString()).to.equal('https://foo.euw1.firebasedatabase.app/'); }); it('Can get database with custom URL and port', () => { From 149438800040b1e6b4ab0e65075ce9286ed3b131 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 16:18:10 -0700 Subject: [PATCH 04/16] generalize --- .../database/src/core/util/libs/parser.ts | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index d7552c744a9..b75cbde3ecc 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -72,7 +72,7 @@ export const parseRepoInfo = function( const parsedUrl = parseDatabaseURL(dataURL), namespace = parsedUrl.namespace; - if (parsedUrl.domain === 'firebase') { + if (parsedUrl.domain === 'firebase.com') { fatal( parsedUrl.host + ' is no longer supported. ' + @@ -174,21 +174,18 @@ export const parseDatabaseURL = function( colonInd = dataURL.length; } - const parts = host.split('.'); - if (parts.length === 4) { - domain = parts[1] + "." + parts[2]; - subdomain = parts[0].toLowerCase(); - namespace = subdomain; - } else if (parts.length === 3) { + let dotInd = host.indexOf('.'); + if (dotInd === -1) { + dotInd = colonInd; + } + const hostFirstPart = host.substring(0, dotInd); + if (hostFirstPart.toLowerCase() === 'localhost') { + domain = 'localhost'; + } else { + domain = host.substring(dotInd+1); // Normalize namespaces to lowercase to share storage / connection. - domain = parts[1]; - subdomain = parts[0].toLowerCase(); - // We interpret the subdomain of a 3 component URL as the namespace name. + subdomain = hostFirstPart.toLowerCase(); namespace = subdomain; - } else if (parts.length === 2) { - domain = parts[0]; - } else if (parts[0].slice(0, colonInd).toLowerCase() === 'localhost') { - domain = 'localhost'; } // Always treat the value of the `ns` as the namespace name if it is present. if ('ns' in queryParams) { From 1488424cf831254e18268d4bc07ca168d42f62b1 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 16:37:45 -0700 Subject: [PATCH 05/16] pass --- packages/database/src/core/util/libs/parser.ts | 2 ++ packages/database/test/database.test.ts | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index b75cbde3ecc..440207f875f 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -181,6 +181,8 @@ export const parseDatabaseURL = function( const hostFirstPart = host.substring(0, dotInd); if (hostFirstPart.toLowerCase() === 'localhost') { domain = 'localhost'; + } else if (dotInd === colonInd) { + return; // Not a valid URL. } else { domain = host.substring(dotInd+1); // Normalize namespaces to lowercase to share storage / connection. diff --git a/packages/database/test/database.test.ts b/packages/database/test/database.test.ts index d8f68eabc20..fb14f80fadc 100644 --- a/packages/database/test/database.test.ts +++ b/packages/database/test/database.test.ts @@ -50,12 +50,6 @@ describe('Database Tests', () => { expect(db.ref().toString()).to.equal('https://foo.bar.com/'); }); - it('Can get database with custom URL', () => { - const db = defaultApp.database('http://foo.euw1.firebasedatabase.app'); - expect(db).to.be.ok; - expect(db.ref().toString()).to.equal('https://foo.euw1.firebasedatabase.app/'); - }); - it('Can get database with custom URL and port', () => { const db = defaultApp.database('http://foo.bar.com:80'); expect(db).to.be.ok; @@ -68,6 +62,13 @@ describe('Database Tests', () => { expect(db.ref().toString()).to.equal('https://foo.bar.com/'); }); + it('Can get database with multi-region URL', () => { + const db = defaultApp.database('http://foo.euw1.firebasedatabase.app'); + expect(db).to.be.ok; + expect(db.repo_.repoInfo_.namespace).to.equal('foo'); + expect(db.ref().toString()).to.equal('https://foo.euw1.firebasedatabase.app/'); + }); + it('Can get database with localhost URL and port', () => { const db = defaultApp.database('http://localhost:80'); expect(db).to.be.ok; From 2e8e3d710b6b745c49c92d187466f86d7d8dde42 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 16:42:39 -0700 Subject: [PATCH 06/16] check localhost first --- packages/database/src/core/util/libs/parser.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index 440207f875f..4419aa8ef0a 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -174,16 +174,14 @@ export const parseDatabaseURL = function( colonInd = dataURL.length; } - let dotInd = host.indexOf('.'); - if (dotInd === -1) { - dotInd = colonInd; - } - const hostFirstPart = host.substring(0, dotInd); - if (hostFirstPart.toLowerCase() === 'localhost') { + if (host.slice(0, colonInd).toLowerCase() === 'localhost') { domain = 'localhost'; - } else if (dotInd === colonInd) { - return; // Not a valid URL. } else { + let dotInd = host.indexOf('.'); + if (dotInd === -1) { + return; // Not a valid URL. + } + const hostFirstPart = host.substring(0, dotInd); domain = host.substring(dotInd+1); // Normalize namespaces to lowercase to share storage / connection. subdomain = hostFirstPart.toLowerCase(); From b7146d516596e65321f8fafc0b29166bd213b8a3 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 17:02:40 -0700 Subject: [PATCH 07/16] m --- packages/database/src/core/util/libs/parser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index 4419aa8ef0a..1fa8955ea83 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -166,7 +166,7 @@ export const parseDatabaseURL = function( ); // If we have a port, use scheme for determining if it's secure. - colonInd = host.indexOf(':'); + const colonInd = host.indexOf(':'); if (colonInd >= 0) { secure = scheme === 'https' || scheme === 'wss'; port = parseInt(host.substring(colonInd + 1), 10); From 343b1f47c8fde939e6d9446ed3a8b2107ce3ff7a Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 17:07:11 -0700 Subject: [PATCH 08/16] m --- packages/database/src/core/util/.util.ts.swp | Bin 0 -> 16384 bytes .../database/src/core/util/libs/.parser.ts.swp | Bin 0 -> 16384 bytes packages/database/src/core/util/libs/parser.ts | 8 ++++---- packages/database/test/.database.test.ts.swp | Bin 0 -> 20480 bytes packages/database/test/database.test.ts | 6 ++++-- 5 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 packages/database/src/core/util/.util.ts.swp create mode 100644 packages/database/src/core/util/libs/.parser.ts.swp create mode 100644 packages/database/test/.database.test.ts.swp diff --git a/packages/database/src/core/util/.util.ts.swp b/packages/database/src/core/util/.util.ts.swp new file mode 100644 index 0000000000000000000000000000000000000000..3007d3d279c399643d0cdda58ec503045e4d0c41 GIT binary patch literal 16384 zcmeHNU2Ggz6`q6=lG0FA9zcjnCx*nk{+YEyR4NBIah#uSacsys2~m`!vom*hZ#+A* znYm+UYrFiks1kx!RFF4R!UM1L9SMX4hzcY`k*LHILO>CPDlG`{5PrUM@16azqo}Cx zg2vM4nYlmbp7Y&v&%JYI>r>~dr|DsL+QHv@9VdEb;quG(e8lSOz3I+-W3I+-W3I+-W z3I+-W3I_g97*L&E&SzlDPHWFo_PS%s^TPjxDHtdiC>SUhC>SUhC>SUhC>SUhC>SUhC>SUh zxB~-T;5hv4{{p{H;v`!dw|`*-*&+s;7#Cl;Jd(0 z;Ol?@0^o6AKkxvs3)l(#>7B3-coldacnJ8_J&yBB;M>4D5CD$@=YS6ZuOV6Td*G+Q zO&|lV029Cg;P060-vF-wKLBn3&jXxOc^3F0@Cy}cL$f&t7mo&4sh*VnMq*X7$V~UneWo*oGHV->Qn*dQwq^XRfnu-(rK*UW%J6;u~ z(J*c{A?1pQym}~t(K7cS;$o4|EJaxuY9S=TRM7fxt!Z{;pn+^qNp(9SZde&tXm)m% zMjKh=D~vx{wla)X+w@9>+OE_DsU#CtH6EcOl2oP&R_Ee+3gc!zl&EoW=hkHulzK&d zu)8E%zM$OB9$c(#S!^gs^Yda zJf*&tVb>ke%HdSM`$&cK^f&duM>{A-iZ@MejKHWj0=DVb_g(%Pgx1>G~|4C#M#XO3+a4I zs1{r%PAG~&Nt{<|wOAsiR^ghG=O=NRQX=pJrnDv4U3-pgWp5nmjc%3S%*~@YYJ^^s zN62|+!y$Qs2ls|&fn_hZ1j%+M6ueA4_CkVto|K8;Ur4#bc9#OtkdX)o#t0syo(OM+ z0?`psAR=Fiv}_hvC=@khk}6OJ|Ij`PugSSeYzd{Y@ z4I9W?^kmU8lLfimhr!o$U;>VrQ|)RZFH? zCoc?Pcs*;99X}-*^@$sZF^SM~VVfOx;EiU1+Y%Z_44_e7RCx{MLb=XMnzn8*&I~m% zejpp&5*pj}w`p1r1Rd0wfD_lR3SafY&5)>iCc^-;cG|Fd#q~O!uv^k=f>p87^Vq^V z+nB~tL)v~at8axu4YBal5d^qQf$Zfd%5n9G~81^R(w zBqBOid?!;@dAs7v#zcL(AjEOK_GK_W&R%36d-1#PE;4{+(_0K)I9ok_N<<>@a56z4 z)4P;eO=w*j7BdvU`c*U7&UpE4l9hz;T|Mryrf-Xem+IQ^IN238*HeQSdIwFu3^JWGy<_XQ$T5U1Vk4E z=F;d<#BjaM^nQ`cM=U20e&}I;F`dujloGF{GaOb9J8v^`42xdVqG!kqfswHh@|M4D zHJs=jd}z~HJD{@JU9hx!orX`5y)Ld>!O4dYmiZN(w#(z6Afo~Yt8@`dvKFl1-nby* zI-hgQ!@wHhLUu{Mn)Td24o&p*>fO+%GLdu#^@3_%M^#?C`bDBIGU1yY2f00$TL z^#$pR2uA|;oSNXBuvey|BR{7d;md~fDfFUd29v3YlXMcX$KYVrminB{TSUNO&R3To zT{^o==jYCxnOj`0o~Y5%8Jb^OJYHR{E-m8eB+V^epifj6k57=07$PBr1T5l|&og{* zks{D4VJAThsb>lvyG?13N`nn>e()k1nX6H?HbTedYSkL3!ww&XEIJX_GPtI8ect}0 z&zlsCTGOYfW+G6BxPT3REs?w)CMb;?Y7K4+F)WFwrBr98QdwJD!xoA)BHTD>Rv?R6 zOe+i3`4fw^6O#wsDcj{joKf4u;ij%UNXB6;?%>Hp8p}R;ilujLQ$9^*y;F&Vj^es6 zI=oiVo7wRqU(gzu8=Nmqn3Xul)|}QepXmuY$FCCL3OeG=1@k*%JB@Jc*LKcB$3!+; ziVjXqe~eD)pW{AIBZH!JGG(7HJ^h%nZ(HLsBX#3>I6j? Uegavvrcg65>=d%$o0!#q11N|YBme*a literal 0 HcmV?d00001 diff --git a/packages/database/src/core/util/libs/.parser.ts.swp b/packages/database/src/core/util/libs/.parser.ts.swp new file mode 100644 index 0000000000000000000000000000000000000000..e812154e4ea638c8c6a1fbaa39d44df5e8a331dc GIT binary patch literal 16384 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 S5!JyTipR(mlpVGzr1o#^@VZ+7 literal 0 HcmV?d00001 diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index 1fa8955ea83..ecb46ac4468 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -1,6 +1,6 @@ /** * @license - * Copyright 2017 Google Inc. + * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -166,7 +166,7 @@ export const parseDatabaseURL = function( ); // If we have a port, use scheme for determining if it's secure. - const colonInd = host.indexOf(':'); + colonInd = host.indexOf(':'); if (colonInd >= 0) { secure = scheme === 'https' || scheme === 'wss'; port = parseInt(host.substring(colonInd + 1), 10); @@ -177,12 +177,12 @@ export const parseDatabaseURL = function( if (host.slice(0, colonInd).toLowerCase() === 'localhost') { domain = 'localhost'; } else { - let dotInd = host.indexOf('.'); + const dotInd = host.indexOf('.'); if (dotInd === -1) { return; // Not a valid URL. } const hostFirstPart = host.substring(0, dotInd); - domain = host.substring(dotInd+1); + domain = host.substring(dotInd + 1); // Normalize namespaces to lowercase to share storage / connection. subdomain = hostFirstPart.toLowerCase(); namespace = subdomain; diff --git a/packages/database/test/.database.test.ts.swp b/packages/database/test/.database.test.ts.swp new file mode 100644 index 0000000000000000000000000000000000000000..aaa68708ff69733f20b732efb4d2694017216403 GIT binary patch literal 20480 zcmeI3eT*Ds9mfaCJ7Rqa#vtfJ>9Kp)cJ{7lL`adfccmLktM}51AUM1G?C!L)Gt10u zuP-SC6cR+E)&vzJh>1wh7zuv}q7Wp$U?eE=2Z)JL5fdUl>ex7;T*_XS$>y<#v zT=MDN?#?{(d%n-h?`5Bs$9I-473b>{8b5E*w1dyxf92uTYqjf-IYz6wvU=d^rut;j zpXfT>t2uhbaa(%baq5=j@9ulAi7qTu<=%o<-BZ}@6+3;k+m!6-z z($y>7_ZEGA_F<+#roa#d+J0@r`KM{;ZJZcaSDv%xZ1MKD%?-IJ`#4h|Qy^0yQy^0y zQy^0yQy^0yQ{ewe0l&3MyOs_e8+B?b`h85#@8hD^Bhl|IJ)f_NUfa>{-94X2FSB2n z0+|At0+|At0+|At0+|At0+|At0+|At0+|A@g91iX(_T4V)7G8H!}F&6@UC_y$}KtKk=?Y1*CeO}GQDhb!O=I1x^OKfg)SegnUT2jHvl zB{&S%z?JYZ*ah!{li=A?HSMSH5IhKn;aa!|-U_F}De&|unsz(f2wUJd_|M6j_9{FA zH$oFe;T%{4|2Rq0egL<@6|fWL;N9>9n%oc9g3{+oI2)cjLDL?Co8bodG<*c!3I9dQ zhv0s=5553J$iv?$qI?(bgl~a_v*0-RB?Xl0;2<1;33#5O%w6z#n1j>dcNAuxgx|tb zagnBH-UxAM^g>PWQGqD)osJd=PajUSnACSJ}^E$ zo{Jv6@cp*Ylpg0kWV(^E;r87bd|sBivnMpE;@F-qs%5c>j@68|pB3ZptR^ZfBQ zfJR;BMDm>5w%eYpZt~r>497xAwb`(Ri(EZwtyB`VI1(fJ1v$c@Pg?A@zb;v;(V;Fe zZ~6_9Tqx$Ix2?1<>8@NbXn0rJ8yfBIklIkw3vBpGW%}!~JwK7`MzJ2c(Q5VU-?!7g z){Ayg`?@>dKblSUUvq;i>!xELjR94YQyHXoZ?^1yd5&a2dm0_qr(lac8lCCx%h8;l zDT(@KX#XHp+Me$;RgZ*WS4GQlSG=$GNScgOp&(`(GI$glxZ!#2rmPCz5oO7CUTM2h zm^EQLff2zTPk>?8Oj*@&g{h@=B;(wz_po8^s4{pLIuw}TH(X~vU#L2E&KHC@mayf# zn2gVANQZh5XVKGD34IAfEa!oV`of#bvgWw5_ijSo z)YC51s?w{tW?ANQvHU`{;-$?sn`&u@oURv4MA?_SP>bF=D3Un2I5{~zH8Zom+Z1s~ z)LhnBPA@d1)sn7PX#1wsX(5>o;bj-cuM0SV&Q%8^-;y*}X&5FSYhtVb!ZMqtZ}@Ds zo>1fF3ZK=s&8$e7mQ2w~5f;*2QGtPx};rJ420pgG%8O}nHU z1oc%>-Y-zjGAl;el5}cbJ=LhYGTd$mAm?4vr+4dx=hXap!<96nS`tES@az@y^Ygf1 zW*y0eTQAU-Qqe1HD{Y?IJ~Oppqdp$pa+%W>O=G`s%DxIs4HkQgSG6vs4PUjsKf08~ zC5Y*`f)3V9Y?S*dvgHfz$FX6#VOL}r67`N@G@fa-ih-T+NUs+=nPJN1Vx!2b``1J_ ztx+p8=;vl^bj^Ch7aPYX-Y+f*j^m4xT?yvN#Zh;)!q}Lm^8XR?$d}12RsL^Bx#Xkd z_@9H1!fEg*`TZmC6Zi_4uoKq83*_~GfoI_!xDEEgCGcKY1y7R4KMV(99gM(QQ2G5c zTuoLDW4>@>- z-2QuT7knG8hgmomM&MZZ6M6n0LFNBngqz_r@JToi1pJMB|6zCleh7zQ7n}+2f|tno z{|V2+<8TLj4Q_=tY=z_D59I$(!&7iK9D?0Y0#zG$g<8O4@N@VX+yW--gfUnJuQGmW z3|~^?nEeb_AoMY@r|I(eQ$gti-|Y)a8k8I+3O&Bwl{GvP#gW9t^UfB$0D)HMng+P_ zu0UZa4mRB;WdzG4eUO;t)(Nfb1p>LQo>U#KSNl=Z@GA{{j0VF0WYY;=lAZ~X6j0R8 zWqRDl)@fL=ze=*0u%^O)-SHa*-wFP&P7bfFe!@^FlqV=1C8}uZ<0wdpUA=lM6+Ep# zldy7-_UN4`B6=uB>3by6Sf_HOQ=)acQ!BVAC6 zT;iP@_ayJFBmGj?O|lubrQS<#u<6ANCK8bve>hOvKkB$I!MGhtYty9a;R)#+pc z8^ds#KL!tWr_;TCuDgV=8x~NA=*#m};6?1VutEB?tVvgLS)7Hc!d%x{P!_7?l3Fc= zo+qa?U-A@*cY~^wEfMrVZ4Aqm;C1MH-&UbKW9%~${}_9o{`7JAeI1n8s!@4OM!0t) zTxRcF2k$#5jxgs?YUetJS@ohxZ-*l%9tTo_SrKXfm$us`65kN)x3W z)Am)(Lgghv*I8|b*b;piGpKm7m{ZxO*UCZBSowzF+oizodIjPVzU2wLRB9hghZS9h zvbIzZ#5WG4Wr;DAU<#c$XfZodR>a}L0H1Jl9*LnFj19xeL$UN;m`0j*5FUz7VQT@; z(q&`Z2=k46nfUSm8FWzAZIQJ4CSTJnRiK6Iw&_7xRO3z)p~jI{Py?s3X^(FWgW{q; zPqsdIc1D8|hd*jvEcQhjrPPfJmz%?IXbEjh^tBNOf=dXR5(DCi72i87YQp&B!5zUS z&065URIwp+ca$I~k5rTQS*z)}q4NI+$%$=pXO;htM48jS$oXG}AHj9dfOA2>d*B7~ z{(Iq8_&ChM46K9SlkYzQH-V}F6yajf;6C#G+d;ya@D4Z~enozN18jydcoBQP4{dND zuy1%)mtB!5kSUNUkSUNUkSUNUkSXxSQlL}g%8n*xM-#*Iq_6cUr~c!h+0n$Pauc4J xrF@?p%~MB}vZIMBJEYsIXPnw6<%zhqyqts0J&kr!{-kgmSL6E6S}t<->wkwt>>2<7 literal 0 HcmV?d00001 diff --git a/packages/database/test/database.test.ts b/packages/database/test/database.test.ts index fb14f80fadc..6f0ae939787 100644 --- a/packages/database/test/database.test.ts +++ b/packages/database/test/database.test.ts @@ -1,6 +1,6 @@ /** * @license - * Copyright 2017 Google Inc. + * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,7 +66,9 @@ describe('Database Tests', () => { const db = defaultApp.database('http://foo.euw1.firebasedatabase.app'); expect(db).to.be.ok; expect(db.repo_.repoInfo_.namespace).to.equal('foo'); - expect(db.ref().toString()).to.equal('https://foo.euw1.firebasedatabase.app/'); + expect(db.ref().toString()).to.equal( + 'https://foo.euw1.firebasedatabase.app/' + ); }); it('Can get database with localhost URL and port', () => { From e5bf5ead62345c4e4ee12364dbbd16e0d72552bd Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 17:07:59 -0700 Subject: [PATCH 09/16] m --- .../src/core/util/libs/.parser.ts.swp | Bin 16384 -> 16384 bytes .../database/src/core/util/libs/parser.ts | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/database/src/core/util/libs/.parser.ts.swp b/packages/database/src/core/util/libs/.parser.ts.swp index e812154e4ea638c8c6a1fbaa39d44df5e8a331dc..fde650c869448155b2ec463b75c19f6b771c4d34 100644 GIT binary patch delta 212 zcmZo@U~Fh$6ihM*^Ym4)&@*HJ0s#hw(;Efl1sFXx8wy;O=dEI6VA#eEk?@!-XmCC< zjFW*u8i@aKFfd#N;`2aU3&e3iYzf51K&%hMdO)lU#F9YF55&ws`~_&z3n0D&#Akqb z9}w>ZVvr3pHd`77v+>kgGbkv42?d48KIU>jtT}m$`Jc&dmYS0{Sm=uC6_+LzmlS2@ arE3`ID5T_bG&mob z$;rUr0L0%o7#NNN@hTu*0>nW;Yz)MFK+FNeEI`Z*#6N(#-vRLxAie>_CxLh`5N`zH zg+M$Ri2H!Jd$XlsFxzBbbB)RO&HqehvDD>s%PcA`2}mp|ne1knF!{EHrf_n8UU7*+ UMt*S#LQcz4hS7TSe9J^O0Q7e-#sB~S diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index ecb46ac4468..2ef51788b01 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -181,11 +181,10 @@ export const parseDatabaseURL = function( if (dotInd === -1) { return; // Not a valid URL. } - const hostFirstPart = host.substring(0, dotInd); - domain = host.substring(dotInd + 1); // Normalize namespaces to lowercase to share storage / connection. - subdomain = hostFirstPart.toLowerCase(); + subdomain = host.substring(0, dotInd).toLowerCase(); namespace = subdomain; + domain = host.substring(dotInd + 1); } // Always treat the value of the `ns` as the namespace name if it is present. if ('ns' in queryParams) { From 5a368acd0c30bb2cca9958489e539cee35142488 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 17:11:51 -0700 Subject: [PATCH 10/16] m --- packages/database/src/core/util/.util.ts.swp | Bin 16384 -> 0 bytes .../database/src/core/util/libs/.parser.ts.swp | Bin 16384 -> 0 bytes packages/database/test/.database.test.ts.swp | Bin 20480 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 packages/database/src/core/util/.util.ts.swp delete mode 100644 packages/database/src/core/util/libs/.parser.ts.swp delete mode 100644 packages/database/test/.database.test.ts.swp diff --git a/packages/database/src/core/util/.util.ts.swp b/packages/database/src/core/util/.util.ts.swp deleted file mode 100644 index 3007d3d279c399643d0cdda58ec503045e4d0c41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHNU2Ggz6`q6=lG0FA9zcjnCx*nk{+YEyR4NBIah#uSacsys2~m`!vom*hZ#+A* znYm+UYrFiks1kx!RFF4R!UM1L9SMX4hzcY`k*LHILO>CPDlG`{5PrUM@16azqo}Cx zg2vM4nYlmbp7Y&v&%JYI>r>~dr|DsL+QHv@9VdEb;quG(e8lSOz3I+-W3I+-W3I+-W z3I+-W3I_g97*L&E&SzlDPHWFo_PS%s^TPjxDHtdiC>SUhC>SUhC>SUhC>SUhC>SUhC>SUh zxB~-T;5hv4{{p{H;v`!dw|`*-*&+s;7#Cl;Jd(0 z;Ol?@0^o6AKkxvs3)l(#>7B3-coldacnJ8_J&yBB;M>4D5CD$@=YS6ZuOV6Td*G+Q zO&|lV029Cg;P060-vF-wKLBn3&jXxOc^3F0@Cy}cL$f&t7mo&4sh*VnMq*X7$V~UneWo*oGHV->Qn*dQwq^XRfnu-(rK*UW%J6;u~ z(J*c{A?1pQym}~t(K7cS;$o4|EJaxuY9S=TRM7fxt!Z{;pn+^qNp(9SZde&tXm)m% zMjKh=D~vx{wla)X+w@9>+OE_DsU#CtH6EcOl2oP&R_Ee+3gc!zl&EoW=hkHulzK&d zu)8E%zM$OB9$c(#S!^gs^Yda zJf*&tVb>ke%HdSM`$&cK^f&duM>{A-iZ@MejKHWj0=DVb_g(%Pgx1>G~|4C#M#XO3+a4I zs1{r%PAG~&Nt{<|wOAsiR^ghG=O=NRQX=pJrnDv4U3-pgWp5nmjc%3S%*~@YYJ^^s zN62|+!y$Qs2ls|&fn_hZ1j%+M6ueA4_CkVto|K8;Ur4#bc9#OtkdX)o#t0syo(OM+ z0?`psAR=Fiv}_hvC=@khk}6OJ|Ij`PugSSeYzd{Y@ z4I9W?^kmU8lLfimhr!o$U;>VrQ|)RZFH? zCoc?Pcs*;99X}-*^@$sZF^SM~VVfOx;EiU1+Y%Z_44_e7RCx{MLb=XMnzn8*&I~m% zejpp&5*pj}w`p1r1Rd0wfD_lR3SafY&5)>iCc^-;cG|Fd#q~O!uv^k=f>p87^Vq^V z+nB~tL)v~at8axu4YBal5d^qQf$Zfd%5n9G~81^R(w zBqBOid?!;@dAs7v#zcL(AjEOK_GK_W&R%36d-1#PE;4{+(_0K)I9ok_N<<>@a56z4 z)4P;eO=w*j7BdvU`c*U7&UpE4l9hz;T|Mryrf-Xem+IQ^IN238*HeQSdIwFu3^JWGy<_XQ$T5U1Vk4E z=F;d<#BjaM^nQ`cM=U20e&}I;F`dujloGF{GaOb9J8v^`42xdVqG!kqfswHh@|M4D zHJs=jd}z~HJD{@JU9hx!orX`5y)Ld>!O4dYmiZN(w#(z6Afo~Yt8@`dvKFl1-nby* zI-hgQ!@wHhLUu{Mn)Td24o&p*>fO+%GLdu#^@3_%M^#?C`bDBIGU1yY2f00$TL z^#$pR2uA|;oSNXBuvey|BR{7d;md~fDfFUd29v3YlXMcX$KYVrminB{TSUNO&R3To zT{^o==jYCxnOj`0o~Y5%8Jb^OJYHR{E-m8eB+V^epifj6k57=07$PBr1T5l|&og{* zks{D4VJAThsb>lvyG?13N`nn>e()k1nX6H?HbTedYSkL3!ww&XEIJX_GPtI8ect}0 z&zlsCTGOYfW+G6BxPT3REs?w)CMb;?Y7K4+F)WFwrBr98QdwJD!xoA)BHTD>Rv?R6 zOe+i3`4fw^6O#wsDcj{joKf4u;ij%UNXB6;?%>Hp8p}R;ilujLQ$9^*y;F&Vj^es6 zI=oiVo7wRqU(gzu8=Nmqn3Xul)|}QepXmuY$FCCL3OeG=1@k*%JB@Jc*LKcB$3!+; ziVjXqe~eD)pW{AIBZH!JGG(7HJ^h%nZ(HLsBX#3>I6j? Uegavvrcg65>=d%$o0!#q11N|YBme*a diff --git a/packages/database/src/core/util/libs/.parser.ts.swp b/packages/database/src/core/util/libs/.parser.ts.swp deleted file mode 100644 index fde650c869448155b2ec463b75c19f6b771c4d34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 PKU9yAD=2@~QAzFJ<+Zit diff --git a/packages/database/test/.database.test.ts.swp b/packages/database/test/.database.test.ts.swp deleted file mode 100644 index aaa68708ff69733f20b732efb4d2694017216403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI3eT*Ds9mfaCJ7Rqa#vtfJ>9Kp)cJ{7lL`adfccmLktM}51AUM1G?C!L)Gt10u zuP-SC6cR+E)&vzJh>1wh7zuv}q7Wp$U?eE=2Z)JL5fdUl>ex7;T*_XS$>y<#v zT=MDN?#?{(d%n-h?`5Bs$9I-473b>{8b5E*w1dyxf92uTYqjf-IYz6wvU=d^rut;j zpXfT>t2uhbaa(%baq5=j@9ulAi7qTu<=%o<-BZ}@6+3;k+m!6-z z($y>7_ZEGA_F<+#roa#d+J0@r`KM{;ZJZcaSDv%xZ1MKD%?-IJ`#4h|Qy^0yQy^0y zQy^0yQy^0yQ{ewe0l&3MyOs_e8+B?b`h85#@8hD^Bhl|IJ)f_NUfa>{-94X2FSB2n z0+|At0+|At0+|At0+|At0+|At0+|At0+|A@g91iX(_T4V)7G8H!}F&6@UC_y$}KtKk=?Y1*CeO}GQDhb!O=I1x^OKfg)SegnUT2jHvl zB{&S%z?JYZ*ah!{li=A?HSMSH5IhKn;aa!|-U_F}De&|unsz(f2wUJd_|M6j_9{FA zH$oFe;T%{4|2Rq0egL<@6|fWL;N9>9n%oc9g3{+oI2)cjLDL?Co8bodG<*c!3I9dQ zhv0s=5553J$iv?$qI?(bgl~a_v*0-RB?Xl0;2<1;33#5O%w6z#n1j>dcNAuxgx|tb zagnBH-UxAM^g>PWQGqD)osJd=PajUSnACSJ}^E$ zo{Jv6@cp*Ylpg0kWV(^E;r87bd|sBivnMpE;@F-qs%5c>j@68|pB3ZptR^ZfBQ zfJR;BMDm>5w%eYpZt~r>497xAwb`(Ri(EZwtyB`VI1(fJ1v$c@Pg?A@zb;v;(V;Fe zZ~6_9Tqx$Ix2?1<>8@NbXn0rJ8yfBIklIkw3vBpGW%}!~JwK7`MzJ2c(Q5VU-?!7g z){Ayg`?@>dKblSUUvq;i>!xELjR94YQyHXoZ?^1yd5&a2dm0_qr(lac8lCCx%h8;l zDT(@KX#XHp+Me$;RgZ*WS4GQlSG=$GNScgOp&(`(GI$glxZ!#2rmPCz5oO7CUTM2h zm^EQLff2zTPk>?8Oj*@&g{h@=B;(wz_po8^s4{pLIuw}TH(X~vU#L2E&KHC@mayf# zn2gVANQZh5XVKGD34IAfEa!oV`of#bvgWw5_ijSo z)YC51s?w{tW?ANQvHU`{;-$?sn`&u@oURv4MA?_SP>bF=D3Un2I5{~zH8Zom+Z1s~ z)LhnBPA@d1)sn7PX#1wsX(5>o;bj-cuM0SV&Q%8^-;y*}X&5FSYhtVb!ZMqtZ}@Ds zo>1fF3ZK=s&8$e7mQ2w~5f;*2QGtPx};rJ420pgG%8O}nHU z1oc%>-Y-zjGAl;el5}cbJ=LhYGTd$mAm?4vr+4dx=hXap!<96nS`tES@az@y^Ygf1 zW*y0eTQAU-Qqe1HD{Y?IJ~Oppqdp$pa+%W>O=G`s%DxIs4HkQgSG6vs4PUjsKf08~ zC5Y*`f)3V9Y?S*dvgHfz$FX6#VOL}r67`N@G@fa-ih-T+NUs+=nPJN1Vx!2b``1J_ ztx+p8=;vl^bj^Ch7aPYX-Y+f*j^m4xT?yvN#Zh;)!q}Lm^8XR?$d}12RsL^Bx#Xkd z_@9H1!fEg*`TZmC6Zi_4uoKq83*_~GfoI_!xDEEgCGcKY1y7R4KMV(99gM(QQ2G5c zTuoLDW4>@>- z-2QuT7knG8hgmomM&MZZ6M6n0LFNBngqz_r@JToi1pJMB|6zCleh7zQ7n}+2f|tno z{|V2+<8TLj4Q_=tY=z_D59I$(!&7iK9D?0Y0#zG$g<8O4@N@VX+yW--gfUnJuQGmW z3|~^?nEeb_AoMY@r|I(eQ$gti-|Y)a8k8I+3O&Bwl{GvP#gW9t^UfB$0D)HMng+P_ zu0UZa4mRB;WdzG4eUO;t)(Nfb1p>LQo>U#KSNl=Z@GA{{j0VF0WYY;=lAZ~X6j0R8 zWqRDl)@fL=ze=*0u%^O)-SHa*-wFP&P7bfFe!@^FlqV=1C8}uZ<0wdpUA=lM6+Ep# zldy7-_UN4`B6=uB>3by6Sf_HOQ=)acQ!BVAC6 zT;iP@_ayJFBmGj?O|lubrQS<#u<6ANCK8bve>hOvKkB$I!MGhtYty9a;R)#+pc z8^ds#KL!tWr_;TCuDgV=8x~NA=*#m};6?1VutEB?tVvgLS)7Hc!d%x{P!_7?l3Fc= zo+qa?U-A@*cY~^wEfMrVZ4Aqm;C1MH-&UbKW9%~${}_9o{`7JAeI1n8s!@4OM!0t) zTxRcF2k$#5jxgs?YUetJS@ohxZ-*l%9tTo_SrKXfm$us`65kN)x3W z)Am)(Lgghv*I8|b*b;piGpKm7m{ZxO*UCZBSowzF+oizodIjPVzU2wLRB9hghZS9h zvbIzZ#5WG4Wr;DAU<#c$XfZodR>a}L0H1Jl9*LnFj19xeL$UN;m`0j*5FUz7VQT@; z(q&`Z2=k46nfUSm8FWzAZIQJ4CSTJnRiK6Iw&_7xRO3z)p~jI{Py?s3X^(FWgW{q; zPqsdIc1D8|hd*jvEcQhjrPPfJmz%?IXbEjh^tBNOf=dXR5(DCi72i87YQp&B!5zUS z&065URIwp+ca$I~k5rTQS*z)}q4NI+$%$=pXO;htM48jS$oXG}AHj9dfOA2>d*B7~ z{(Iq8_&ChM46K9SlkYzQH-V}F6yajf;6C#G+d;ya@D4Z~enozN18jydcoBQP4{dND zuy1%)mtB!5kSUNUkSUNUkSUNUkSXxSQlL}g%8n*xM-#*Iq_6cUr~c!h+0n$Pauc4J xrF@?p%~MB}vZIMBJEYsIXPnw6<%zhqyqts0J&kr!{-kgmSL6E6S}t<->wkwt>>2<7 From 92dc48b0412c887cc7c231d54cd52f7f3ed51618 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 17:41:22 -0700 Subject: [PATCH 11/16] x --- packages/database/src/core/util/libs/parser.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index 2ef51788b01..2f2cff8f4be 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -178,13 +178,12 @@ export const parseDatabaseURL = function( domain = 'localhost'; } else { const dotInd = host.indexOf('.'); - if (dotInd === -1) { - return; // Not a valid URL. + if (dotInd !== -1) { + // Normalize namespaces to lowercase to share storage / connection. + subdomain = host.substring(0, dotInd).toLowerCase(); + namespace = subdomain; + domain = host.substring(dotInd + 1); } - // Normalize namespaces to lowercase to share storage / connection. - subdomain = host.substring(0, dotInd).toLowerCase(); - namespace = subdomain; - domain = host.substring(dotInd + 1); } // Always treat the value of the `ns` as the namespace name if it is present. if ('ns' in queryParams) { From 86e50b9e26635a77185b59546c606d75a431b617 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 19:14:19 -0700 Subject: [PATCH 12/16] at least 2 --- packages/database/src/core/util/libs/parser.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index 2f2cff8f4be..1693d9e991b 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -174,16 +174,17 @@ export const parseDatabaseURL = function( colonInd = dataURL.length; } - if (host.slice(0, colonInd).toLowerCase() === 'localhost') { + const hostWithoutPort = host.slice(0, colonInd); + if (hostWithoutPort.toLowerCase() === 'localhost') { domain = 'localhost'; + } else if (hostWithoutPort.split('.').length <= 2) { + domain = hostWithoutPort; // Domain is at least 2 parts. } else { const dotInd = host.indexOf('.'); - if (dotInd !== -1) { - // Normalize namespaces to lowercase to share storage / connection. - subdomain = host.substring(0, dotInd).toLowerCase(); - namespace = subdomain; - domain = host.substring(dotInd + 1); - } + domain = host.substring(dotInd + 1); + subdomain = host.substring(0, dotInd).toLowerCase(); + // Normalize namespaces to lowercase to share storage / connection. + namespace = subdomain; } // Always treat the value of the `ns` as the namespace name if it is present. if ('ns' in queryParams) { From 756b239d883a8e96fd106f052c1039a76efeccf6 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 23:40:09 -0700 Subject: [PATCH 13/16] more tests --- .../database/src/core/util/libs/parser.ts | 4 ++-- packages/database/test/database.test.ts | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index 1693d9e991b..f1e514f369f 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -171,7 +171,7 @@ export const parseDatabaseURL = function( secure = scheme === 'https' || scheme === 'wss'; port = parseInt(host.substring(colonInd + 1), 10); } else { - colonInd = dataURL.length; + colonInd = host.length; } const hostWithoutPort = host.slice(0, colonInd); @@ -181,8 +181,8 @@ export const parseDatabaseURL = function( domain = hostWithoutPort; // Domain is at least 2 parts. } else { const dotInd = host.indexOf('.'); - domain = host.substring(dotInd + 1); subdomain = host.substring(0, dotInd).toLowerCase(); + domain = host.substring(dotInd + 1); // Normalize namespaces to lowercase to share storage / connection. namespace = subdomain; } diff --git a/packages/database/test/database.test.ts b/packages/database/test/database.test.ts index 6f0ae939787..ab9f0901d36 100644 --- a/packages/database/test/database.test.ts +++ b/packages/database/test/database.test.ts @@ -71,12 +71,27 @@ describe('Database Tests', () => { ); }); + it('Can get database with upper case URL', () => { + const db = defaultApp.database('http://fOO.EUW1.firebaseDATABASE.app'); + expect(db).to.be.ok; + expect(db.repo_.repoInfo_.namespace).to.equal('foo'); + expect(db.ref().toString()).to.equal( + 'https://foo.euw1.firebasedatabase.app/' + ); + }); + it('Can get database with localhost URL and port', () => { const db = defaultApp.database('http://localhost:80'); expect(db).to.be.ok; expect(db.ref().toString()).to.equal('http://localhost:80/'); }); + it('Can get database with a upper case localhost URL', () => { + const db = defaultApp.database('http://LOCALHOST'); + expect(db).to.be.ok; + expect(db.ref().toString()).to.equal('https://localhost/'); + }); + it('Can get database with localhost URL', () => { const db = defaultApp.database('http://localhost'); expect(db).to.be.ok; @@ -120,10 +135,19 @@ describe('Database Tests', () => { }).to.throw(/Database initialized multiple times/i); }); + it('Databases with legacy domain', () => { + expect(() => { + defaultApp.database('http://foo.firebase.com/'); + }).to.throw(/is no longer supported/i); + }); + it('Databases with invalid custom URLs', () => { expect(() => { defaultApp.database('not-a-url'); }).to.throw(/Cannot parse Firebase url/i); + expect(() => { + defaultApp.database('http://foo.com'); + }).to.throw(/Cannot parse Firebase url/i); expect(() => { defaultApp.database('http://fblocal.com'); }).to.throw(/Cannot parse Firebase url/i); From 0240e176ac1252328be3efd42e73628cb15450c1 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Mon, 11 May 2020 23:54:43 -0700 Subject: [PATCH 14/16] more --- packages/database/src/core/util/libs/parser.ts | 3 ++- packages/database/test/database.test.ts | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/database/src/core/util/libs/parser.ts b/packages/database/src/core/util/libs/parser.ts index f1e514f369f..0ef62fd11ba 100644 --- a/packages/database/src/core/util/libs/parser.ts +++ b/packages/database/src/core/util/libs/parser.ts @@ -178,8 +178,9 @@ export const parseDatabaseURL = function( if (hostWithoutPort.toLowerCase() === 'localhost') { domain = 'localhost'; } else if (hostWithoutPort.split('.').length <= 2) { - domain = hostWithoutPort; // Domain is at least 2 parts. + domain = hostWithoutPort; } else { + // Interpret the subdomain of a 3 or more component URL as the namespace name. const dotInd = host.indexOf('.'); subdomain = host.substring(0, dotInd).toLowerCase(); domain = host.substring(dotInd + 1); diff --git a/packages/database/test/database.test.ts b/packages/database/test/database.test.ts index ab9f0901d36..1187032eb32 100644 --- a/packages/database/test/database.test.ts +++ b/packages/database/test/database.test.ts @@ -80,6 +80,12 @@ describe('Database Tests', () => { ); }); + it('Can get database with localhost URL', () => { + const db = defaultApp.database('http://localhost'); + expect(db).to.be.ok; + expect(db.ref().toString()).to.equal('https://localhost/'); + }); + it('Can get database with localhost URL and port', () => { const db = defaultApp.database('http://localhost:80'); expect(db).to.be.ok; @@ -92,9 +98,10 @@ describe('Database Tests', () => { expect(db.ref().toString()).to.equal('https://localhost/'); }); - it('Can get database with localhost URL', () => { - const db = defaultApp.database('http://localhost'); + it('Can get database with a upper case localhost URL and ns', () => { + const db = defaultApp.database('http://LOCALHOST?ns=foo'); expect(db).to.be.ok; + expect(db.repo_.repoInfo_.namespace).to.equal('foo'); expect(db.ref().toString()).to.equal('https://localhost/'); }); From 02c5c8b16e117ec50fdae33a9163b0723e9fa3d7 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Tue, 12 May 2020 13:16:09 -0700 Subject: [PATCH 15/16] Update CHANGELOG.md --- packages/database/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/database/CHANGELOG.md b/packages/database/CHANGELOG.md index d2d6d5b62a0..1df0545636e 100644 --- a/packages/database/CHANGELOG.md +++ b/packages/database/CHANGELOG.md @@ -1,6 +1,7 @@ # Unreleased - [feature] Added ServerValue.increment() to support atomic field value increments without transactions. +- [bug] Fixed Realtime Database URL parsing bug to support domains with more than 3 components. # Released - [fixed] Fixed an issue that caused large numeric values with leading zeros to From 46b6d5067840b9f72445c80b92ada647d0849f57 Mon Sep 17 00:00:00 2001 From: Fred Zhang Date: Tue, 12 May 2020 13:17:06 -0700 Subject: [PATCH 16/16] Update CHANGELOG.md --- packages/database/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/database/CHANGELOG.md b/packages/database/CHANGELOG.md index 1df0545636e..19219c0d2db 100644 --- a/packages/database/CHANGELOG.md +++ b/packages/database/CHANGELOG.md @@ -1,7 +1,7 @@ # Unreleased - [feature] Added ServerValue.increment() to support atomic field value increments without transactions. -- [bug] Fixed Realtime Database URL parsing bug to support domains with more than 3 components. +- [fixed] Fixed Realtime Database URL parsing bug to support domains with more than 3 components. # Released - [fixed] Fixed an issue that caused large numeric values with leading zeros to