From a9ca41419e190755c024b5492f1ead961a964b7e Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Wed, 14 Sep 2022 09:35:51 -0400 Subject: [PATCH] await the result of handleRoute --- .../src/vite-plugin-astro-server/index.ts | 6 +- packages/astro/test/api-routes.test.js | 98 ++++++------------ .../api-routes/src/images/penguin.jpg | Bin 4430 -> 0 bytes .../fixtures/api-routes/src/pages/binary.js | 32 ------ .../fixtures/api-routes/src/pages/index.astro | 19 ---- 5 files changed, 34 insertions(+), 121 deletions(-) delete mode 100644 packages/astro/test/fixtures/api-routes/src/images/penguin.jpg delete mode 100644 packages/astro/test/fixtures/api-routes/src/pages/binary.js delete mode 100644 packages/astro/test/fixtures/api-routes/src/pages/index.astro diff --git a/packages/astro/src/vite-plugin-astro-server/index.ts b/packages/astro/src/vite-plugin-astro-server/index.ts index 845b5f6f81fd..a1448d553837 100644 --- a/packages/astro/src/vite-plugin-astro-server/index.ts +++ b/packages/astro/src/vite-plugin-astro-server/index.ts @@ -293,7 +293,7 @@ async function handleRequest( ); filePath = matchedRoute?.filePath; - return handleRoute( + return await handleRoute( matchedRoute, url, pathname, @@ -306,7 +306,7 @@ async function handleRequest( config, req, res - ) + ); } catch(_err) { const err = fixViteErrorMessage(_err, viteServer, filePath); const errorWithMetadata = collectErrorMetadata(err); @@ -329,8 +329,6 @@ async function handleRoute( req: http.IncomingMessage, res: http.ServerResponse ): Promise { - - if (!matchedRoute) { return handle404Response(origin, config, req, res); } diff --git a/packages/astro/test/api-routes.test.js b/packages/astro/test/api-routes.test.js index 9a3024c70426..a911de3327b5 100644 --- a/packages/astro/test/api-routes.test.js +++ b/packages/astro/test/api-routes.test.js @@ -1,81 +1,47 @@ import { expect } from 'chai'; +import * as cheerio from 'cheerio'; import { loadFixture } from './test-utils.js'; import * as fs from 'fs'; - -import { FormData, File } from 'node-fetch' +import { FormData, File } from 'node-fetch'; describe('API routes', () => { - describe('Development - SSR', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - /** @type {import('./test-utils').DevServer} */ - let devServer; - before(async () => { - fixture = await loadFixture({ - output: 'server', - root: './fixtures/api-routes/' - }); - devServer = await fixture.startDevServer(); - }); - - after(async () => { - await devServer.stop(); - }); + /** @type {import('./test-utils').Fixture} */ + let fixture; - it('Can be passed binary data from multipart formdata', async () => { - const formData = new FormData(); - const raw = await fs.promises.readFile(new URL('./fixtures/api-routes/src/images/penguin.jpg', import.meta.url)); - const file = new File([raw], 'penguin.jpg', { type: 'text/jpg' }); - formData.set('file', file, 'penguin.jpg'); + before(async () => { + fixture = await loadFixture({ root: './fixtures/api-routes/' }); + await fixture.build(); + }); - const res = await fixture.fetch('/binary', { - method: 'POST', - body: formData + describe('Deprecated API', () => { + it('two argument supported', async () => { + const one = JSON.parse(await fixture.readFile('/old-api/twoarg/one.json')); + expect(one).to.deep.equal({ + param: 'one', + pathname: '/old-api/twoarg/one.json', + }); + const two = JSON.parse(await fixture.readFile('/old-api/twoarg/two.json')); + expect(two).to.deep.equal({ + param: 'two', + pathname: '/old-api/twoarg/two.json', }); - - expect(res.status).to.equal(200); }); - }); - - describe('Build - SSG', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - before(async () => { - fixture = await loadFixture({ root: './fixtures/api-routes/' }); - await fixture.build(); - }); - - describe('Deprecated API', () => { - it('two argument supported', async () => { - const one = JSON.parse(await fixture.readFile('/old-api/twoarg/one.json')); - expect(one).to.deep.equal({ - param: 'one', - pathname: '/old-api/twoarg/one.json', - }); - const two = JSON.parse(await fixture.readFile('/old-api/twoarg/two.json')); - expect(two).to.deep.equal({ - param: 'two', - pathname: '/old-api/twoarg/two.json', - }); - }); - - it('param first argument is supported', async () => { - const one = JSON.parse(await fixture.readFile('/old-api/onearg/one.json')); - expect(one).to.deep.equal({ - param: 'one', - }); + it('param first argument is supported', async () => { + const one = JSON.parse(await fixture.readFile('/old-api/onearg/one.json')); + expect(one).to.deep.equal({ + param: 'one', }); }); - - describe('1.0 API', () => { - it('Receives a context argument', async () => { - const one = JSON.parse(await fixture.readFile('/context/data/one.json')); - expect(one).to.deep.equal({ - param: 'one', - pathname: '/context/data/one.json', - }); + }); + + describe('1.0 API', () => { + it('Receives a context argument', async () => { + const one = JSON.parse(await fixture.readFile('/context/data/one.json')); + expect(one).to.deep.equal({ + param: 'one', + pathname: '/context/data/one.json', }); }); - }) + }); }); diff --git a/packages/astro/test/fixtures/api-routes/src/images/penguin.jpg b/packages/astro/test/fixtures/api-routes/src/images/penguin.jpg deleted file mode 100644 index 89548d9261f98392bd1c04a815e7cf74c2517327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4430 zcmXw6cRbYpAOD=~gfq^#xa@VE%#08+FCAyxaUt0bWq*^AozBi)Wz*R!k%rM#MmD+1 zNW@tg5sII_zu)iqdcR+f_v`(9J)f_C-|v%;CvyM~yRq?!v6jBxe z0)xS9tZXm{1cnq86htDCh|~RVmi^!H-wJ{FZ}ngHZ->h1I;~D#0~}1iQxKFEBm&TI zfM_{DC%u3G0MO8aP67NMAR2&{j-G*$>6E<$0YJ1gbhHe#3=AOpza5}cDXlOar@Rj4 zrY}7MS7chTh{6v>Zr#SNc~NsmzmctOsF>oFho@rxzqY6Nzwy7~Q|nVonB(s~4b9)t z|D!=1G@P`;@;Y=}+!&D)3UG$@-%%XEWnkCH6@`inbaC(#DhJ6i_c|1CM{)kT zvzT6?*2HC9bFQKqJz-&Nw|N1omXSz*`RS@V&WMv!* zNVak({p5*m@P{K!YzZT6TXzN+Hm^FHEbGw`&0Y&uZEBoT~#po4S30@>^ zV&s#isw@r=pT1FP`|xOATGb$b zB<$cqSoDSg_>t)5nWEtzF0U?P;YjC2k7eGJ%=~qVDOxf_YryAOoZ2po0u5yIisR}U z92*I}EEpXQZ$&8sL)WJ581%LneO{UG#hUfq4jxJLZ~KVu-=6YtLW{gWl^Mow|H^%U zpZ64aY!gCw4ELW%_M) z{jDHGU)mtHo!X{pH`ncK^#Z@2nN=))t_i`Y5L3=-AyO~LpJB8FXh3(^d6oFgAsm>nH2f{;K0*}SWJQib_8?kpZ2ABsx~N3= zOMTPg4T-f2oLSjoK` z7gOT;6`zd^OeMTxRkSA3zo!dPlX`Gh+P)BMipz`i%QeSF@M;81`~+m84WPGE3mhXR zJf+5+>Ygf3T3<7>8mGosu@Q98@*vRy=!ICw!&Qpe)x@5?s|%tI9I3)x{8H1~niBS>d}HZ#vk> z$5{I@4tj|D6C7z1Y69Dk+4)1^g`xiIdCx2VtarKQALy+y0<~2`C8Vme!Sb|~R!ae* zBy##YylJWpVT?U+j!Y@{k9gLyVfZbUH|i*d2I;YjHz_QSen$-g)yZr83iGjVZj`y= z$0bJxMtg#h=|K49tJvyY1Ap`CHNk?}mmhIi+Z+1kN~sEkUkOXCs+< zNZl9DM@iTc8r?YOXkHnT9b%?HQcfCUeN(@Po1jbiY{rs>&wS%nlEqjB^flclZeo(5zkVio42aDgjJYb)=%Y|y&T>}3YE7zvJTQNr zrb?V=+?w1%7&D@HBpDk&;;BeT5H!ZxFeU27Zr6JbGgLG1n9Ct3CWHk4xp#x+G1A7$ zZk(i>eRo%;i0ytKF6rg>!vr>Cd(v!iE%*5r6`V%AtMSawns4`=08I-ETSA&eXD2-T z4J_KeYG_Oib=L0N*9=`HOg>0sIMS=(OEd)33Y}I-O{K`-g|hQj`Q9gho;Xy-WX2TE zq8e^ydx7TY-4`2teyqmGElhYPui8XSa1tkCym#DWIJ*6^t-JK@l%M8b4~4CVkLtFtDiZX%2moV7!F%*vnEUYa7BSM$klVKrPc*M zI$15-oR6@9)n#C+vrDg_{ymjmiB_n(wuf z`%}K%T@VY{3SA+~LFP8!<^c(SaBTH+5%X&ZMLl*m( zMvcAv?7eoWss)%iy3f?6i8p>Q!tHRP#?r{^oe@zFR%4zWG=ut2TbLfzc}=+mRPr6B zH(P*OS-9eV#Zmp!s#OZ-HcV}K#6j(dU61TJweLMQ_mTO4)qsxzH`)^xu%HEnrn9OS zdVB2J!l?^J%F=>otZ0-jvYi0LjmdD=$y+lVKZUyAehO*q-bmug-Bh2w{yB49%8LJX z(~jWi0lU?*J9~WWuIlWaZMUk9(+5db5ni=6ws?ibO1t_j<{Yz=F0suL!yE%C0AkoD zS15QDJ8fR6(daLi7ZGmz=5`um;M6DHvK~F?DYRb01YOlgAX@LBy_%senMD3#{{Cw% zyJ(bL?(3Ki@uRN%Zo~0R$BFfSln%07lL^C&+}7BZOo6XZXY#VDU}90tmIaX-F`8pY zXKR7ak7soGc7#nR#3UgvA5gX($OaGR+(z!=AWcCDHR@c5p``^yyU?HwHPtnZi3nE{ z!GH-Da^ce*JArF=0@k#J{kLS(CxQc~KX_{IOd}25HQQoKidaP7bbUu?(~3Qh%O0<3 zl}`5-`nePz*XK2_J*&5fd!Fd?B{+Prf={?8@W2{}o7|3_ zOzMwK+3FJPgTDrFgOUAI;Wnw;9J;^t*A>`x268@6ji}y5ruqh1$Bu&Ryqz{Wx6qpY7l<&Fjx8T}7BX`zj9;Zj?r!8~GNdb^@4l zDX}h)oG_JJA>1~W-U>nX$S`Qs<+9xg>=Nzqn0ooH;@iBNwkJTNi})?KhrR}r!uHg~ zZl*SE&Qa2cqd;x7FawNoh^iX#8NaPaT2X{tg!y{^Nec@rI<#?n;aTJGXZdNvV9&h^@2{Au%)=ujJE#NN)B64mm}de)-4-!H z^!(UGweEiNA93jAQ#rc|FD0!S z(V8khhIeJ_wD`X|G$`=hg0@7vPX_F4+cX=$Oj|NvAoUc5_jPXc=O_=~tulRW*jqGa z_1auI-!lJ2VX|N&Kldd-|SjA0j?iwJkIVv_I)U-BU7^PvyEM%#suE5 zXkH2w|0SJyt9aT9E}kgno638o`FSI@w0M@?H2%0>ptHbjFks>9Vz_8@n*PS8FJSNH z0?EVL<&yb7_LqOo9t1y?U(jWUv_~*KfUR;i#`C6zM!<>3ju&`lNjp=uH@|HN9nGZR$;clQ7cUcYwHmO5Kbe-t7vWqYGYP{F8PbO#9R1A1vc!_k?A;w`M_cHqCRR^f%2MR=;7gXnR;*x zo_rhjgY%J=hEp~&lvL|wAW>@lTN4`zs5YJeXIQ^5TC-G7|0y(k=PzS)F^-RAnGrnO za}aywNm^Tj)fP1y9-holRNdpW<+`}m&7@f4%qsi}8%C9w5cxTR)Q-^U!@ z7b!wI-#SzUuJeg7DyrC8XoSs?e&eq79z-Jw7ivFP?`A&NxsNrq#`wTiLuX#C>pz}? zt(DgZq%$OCVD1WxjJvqIFwN!>MaFZ@JXQAe^~J=}gx+>Q?hIL4n&@qD5!3uY7`@^4 z6gG;=Rr9LW42)}NO9nL=zWn-tAqO7nXTLPE|@MThl#3B z?oz?xC3sUwLLos^s_pt=36<6ZPLN8HAz+rOkkKJUCF8C&6>ddy_1e#pr8Wm - - - - - - Astro - - -
- - - -
- -