Skip to content

Commit 50215df

Browse files
committed
chore: update types in tests
1 parent 15683ad commit 50215df

File tree

1 file changed

+81
-69
lines changed

1 file changed

+81
-69
lines changed

packages/runtime/src/templates/edge-shared/router.test.ts

Lines changed: 81 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { assert, assertEquals, assertFalse } from 'https://deno.land/[email protected]/testing/asserts.ts'
2-
import { Header, Redirect, Rewrite, RoutesManifest } from './next-utils.ts'
2+
import { HeaderRule, RedirectRule, RewriteRule, RoutesManifest } from './next-utils.ts'
33
import {
44
applyHeaderRule,
5-
applyHeaders,
5+
applyHeaderRules,
66
applyRedirectRule,
7-
applyRedirects,
7+
applyRedirectRules,
88
applyRewriteRule,
9-
applyRewrites,
9+
applyRewriteRules,
1010
matchesRule,
1111
runPostMiddleware,
1212
} from './router.ts'
@@ -46,7 +46,7 @@ Deno.test('rewrites paths', () => {
4646
})
4747

4848
Deno.test('rewrite matches headers "has" rule', () => {
49-
const rule: Rewrite = {
49+
const rule: RewriteRule = {
5050
source: '/has-rewrite-1',
5151
regex: '/has-rewrite-1(?:/)?$',
5252
has: [
@@ -71,7 +71,7 @@ Deno.test('rewrite matches headers "has" rule', () => {
7171
})
7272

7373
Deno.test('matches named regex param', () => {
74-
const rule: Rewrite = {
74+
const rule: RewriteRule = {
7575
source: '/old-blog/:post(\\d{1,})',
7676
destination: '/blog/:post', // Matched parameters can be used in the destination
7777
regex: '/old-blog/(?<post>\\d{1,})(?:/)?$',
@@ -83,7 +83,7 @@ Deno.test('matches named regex param', () => {
8383
})
8484

8585
Deno.test('applies headers', () => {
86-
const rule: Header = {
86+
const rule: HeaderRule = {
8787
source: '/apply-header',
8888
regex: '/apply-header(?:/)?$',
8989
headers: [
@@ -96,13 +96,13 @@ Deno.test('applies headers', () => {
9696

9797
const request = new Request('http://n/apply-header')
9898

99-
const result = applyHeaderRule({ request, rule })
99+
const result = applyHeaderRule({ request, rule, headers: new Map() })
100100
assert(result)
101-
assertEquals(result.headers.get('x-my-header'), 'my-value')
101+
assertEquals(result.get('x-my-header'), 'my-value')
102102
})
103103

104104
Deno.test('applies dynamic headers', () => {
105-
const rule: Header = {
105+
const rule: HeaderRule = {
106106
source: '/blog/:slug',
107107
regex: '/blog/(?<slug>[^/]+?)(?:/)?$',
108108
headers: [
@@ -119,14 +119,14 @@ Deno.test('applies dynamic headers', () => {
119119

120120
const request = new Request('http://n/blog/hello-world')
121121

122-
const result = applyHeaderRule({ request, rule })
122+
const result = applyHeaderRule({ request, rule, headers: new Map() })
123123
assert(result)
124-
assertEquals(result.headers.get('x-slug'), 'hello-world')
125-
assertEquals(result.headers.get('x-slug-hello-world'), 'my other custom header value')
124+
assertEquals(result.get('x-slug'), 'hello-world')
125+
assertEquals(result.get('x-slug-hello-world'), 'my other custom header value')
126126
})
127127

128128
Deno.test('applies wildcard headers', () => {
129-
const rule: Header = {
129+
const rule: HeaderRule = {
130130
source: '/blog/:slug*',
131131
regex: '/blog(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$',
132132
headers: [
@@ -143,14 +143,14 @@ Deno.test('applies wildcard headers', () => {
143143

144144
const request = new Request('http://n/blog/a/b/c/d/hello-world')
145145

146-
const result = applyHeaderRule({ request, rule })
146+
const result = applyHeaderRule({ request, rule, headers: new Map() })
147147
assert(result)
148-
assertEquals(result.headers.get('x-slug'), 'a/b/c/d/hello-world')
149-
assertEquals(result.headers.get('x-slug-abcdhello-world'), 'my other custom header value')
148+
assertEquals(result.get('x-slug'), 'a/b/c/d/hello-world')
149+
assertEquals(result.get('x-slug-abcdhello-world'), 'my other custom header value')
150150
})
151151

152152
Deno.test('applies regex headers', () => {
153-
const rule: Header = {
153+
const rule: HeaderRule = {
154154
source: '/blog/:post(\\d{1,})',
155155
regex: '/blog(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$',
156156
headers: [
@@ -163,13 +163,13 @@ Deno.test('applies regex headers', () => {
163163

164164
const request = new Request('http://localhost/blog/123')
165165

166-
const result = applyHeaderRule({ request, rule })
166+
const result = applyHeaderRule({ request, rule, headers: new Map() })
167167
assert(result)
168-
assertEquals(result.headers.get('x-post'), '123')
168+
assertEquals(result.get('x-post'), '123')
169169
})
170170

171171
Deno.test('applies header based on value of a cookie', () => {
172-
const rule: Header = {
172+
const rule: HeaderRule = {
173173
source: '/specific/:path*',
174174
regex: '/specific(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))?(?:/)?$',
175175
has: [
@@ -201,13 +201,13 @@ Deno.test('applies header based on value of a cookie', () => {
201201
}),
202202
})
203203

204-
const result = applyHeaderRule({ request, rule })
204+
const result = applyHeaderRule({ request, rule, headers: new Map() })
205205
assert(result)
206-
assertEquals(result.headers.get('x-authorized'), 'true')
206+
assertEquals(result.get('x-authorized'), 'true')
207207
})
208208

209209
Deno.test('applies "has" host rule', () => {
210-
const rule: Redirect = {
210+
const rule: RedirectRule = {
211211
source: '/has-redirect-6',
212212
regex: '/has-redirect-6(?:/)?$',
213213
has: [
@@ -229,122 +229,134 @@ Deno.test('applies "has" host rule', () => {
229229

230230
Deno.test('headers', async (t) => {
231231
await t.step('has headers rule', () => {
232-
const result = applyHeaders(
232+
const result = applyHeaderRules(
233233
new Request('http://localhost/has-header-1', {
234234
headers: {
235235
'x-my-header': 'hello world!!',
236236
},
237237
}),
238-
manifest.headers as Header[],
238+
manifest.headers as HeaderRule[],
239239
)
240240
assert(result)
241-
assertEquals(result.headers.get('x-another'), 'header')
241+
assertEquals(new Headers(result).get('x-another'), 'header')
242242

243-
const result2 = applyHeaders(new Request('http://localhost/has-header-1'), manifest.headers as Header[])
243+
const result2 = applyHeaderRules(new Request('http://localhost/has-header-1'), manifest.headers as HeaderRule[])
244244
assert(result2)
245-
assertFalse(result2.headers.get('x-another'))
245+
assertFalse(new Headers(result2).get('x-another'))
246246
})
247247

248248
await t.step('has query rule', () => {
249-
const result = applyHeaders(
249+
const result = applyHeaderRules(
250250
new Request('http://localhost/has-header-2?my-query=hellooo'),
251-
manifest.headers as Header[],
251+
manifest.headers as HeaderRule[],
252252
)
253253
assert(result)
254-
assertEquals(result.headers.get('x-added'), 'value')
254+
assertEquals(new Headers(result).get('x-added'), 'value')
255255

256-
const result2 = applyHeaders(new Request('http://localhost/has-header-2'), manifest.headers as Header[])
256+
const result2 = applyHeaderRules(new Request('http://localhost/has-header-2'), manifest.headers as HeaderRule[])
257257
assert(result2)
258-
assertFalse(result2.headers.get('x-added'))
258+
assertFalse(new Headers(result2).get('x-added'))
259259
})
260260

261261
await t.step('has cookie rule', () => {
262-
const result = applyHeaders(
262+
const result = applyHeaderRules(
263263
new Request('http://localhost/has-header-3', {
264264
headers: {
265265
cookie: 'loggedIn=true',
266266
},
267267
}),
268-
manifest.headers as Header[],
268+
manifest.headers as HeaderRule[],
269269
)
270270
assert(result)
271-
assertEquals(result.headers.get('x-is-user'), 'yuuuup')
271+
assertEquals(new Headers(result).get('x-is-user'), 'yuuuup')
272272

273-
const result2 = applyHeaders(new Request('http://localhost/has-header-3'), manifest.headers as Header[])
273+
const result2 = applyHeaderRules(new Request('http://localhost/has-header-3'), manifest.headers as HeaderRule[])
274274
assert(result2)
275-
assertFalse(result2.headers.get('x-is-user'))
275+
assertFalse(new Headers(result2).get('x-is-user'))
276276
})
277277

278278
await t.step('has host rule', () => {
279-
const result = applyHeaders(new Request('http://example.com/has-header-4'), manifest.headers as Header[])
279+
const result = applyHeaderRules(new Request('http://example.com/has-header-4'), manifest.headers as HeaderRule[])
280280
assert(result)
281-
assertEquals(result.headers.get('x-is-host'), 'yuuuup')
281+
assertEquals(new Headers(result).get('x-is-host'), 'yuuuup')
282282

283-
const result2 = applyHeaders(new Request('http://localhost/has-header-4'), manifest.headers as Header[])
283+
const result2 = applyHeaderRules(new Request('http://localhost/has-header-4'), manifest.headers as HeaderRule[])
284284
assert(result2)
285-
assertFalse(result2.headers.get('x-is-host'))
285+
assertFalse(new Headers(result2).get('x-is-host'))
286286
})
287287
})
288288
Deno.test('redirects', async (t) => {
289289
await t.step('chained redirects', () => {
290-
const result = applyRedirects(new Request('http://localhost/redir-chain1'), manifest.redirects as Redirect[])
290+
const result = applyRedirectRules(
291+
new Request('http://localhost/redir-chain1'),
292+
manifest.redirects as RedirectRule[],
293+
)
291294
assert(result)
292295
assertEquals(result.headers.get('location'), 'http://localhost/redir-chain2')
293296
assertEquals(result.status, 301)
294297

295-
const result2 = applyRedirects(new Request('http://localhost/redir-chain2'), manifest.redirects as Redirect[])
298+
const result2 = applyRedirectRules(
299+
new Request('http://localhost/redir-chain2'),
300+
manifest.redirects as RedirectRule[],
301+
)
296302
assert(result2)
297303
assertEquals(result2.headers.get('location'), 'http://localhost/redir-chain3')
298304
assertEquals(result2.status, 302)
299305

300-
const result3 = applyRedirects(new Request('http://localhost/redir-chain3'), manifest.redirects as Redirect[])
306+
const result3 = applyRedirectRules(
307+
new Request('http://localhost/redir-chain3'),
308+
manifest.redirects as RedirectRule[],
309+
)
301310
assert(result3)
302311
assertEquals(result3.headers.get('location'), 'http://localhost/')
303312
assertEquals(result3.status, 303)
304313
})
305314

306315
await t.step('does not match _next', () => {
307-
const result = applyRedirects(
316+
const result = applyRedirectRules(
308317
new Request('http://localhost/_next/has-redirect-5', {
309318
headers: {
310319
'x-test-next': 'true',
311320
},
312321
}),
313-
manifest.redirects as Redirect[],
322+
manifest.redirects as RedirectRule[],
314323
)
315324
assertFalse(result)
316325

317-
const result2 = applyRedirects(
326+
const result2 = applyRedirectRules(
318327
new Request('http://localhost/another/has-redirect-5', {
319328
headers: {
320329
'x-test-next': 'true',
321330
},
322331
}),
323-
manifest.redirects as Redirect[],
332+
manifest.redirects as RedirectRule[],
324333
)
325334

326335
assert(result2)
327336
assertEquals(result2.status, 307)
328337
})
329338

330339
await t.step('with permanent: false', () => {
331-
const result = applyRedirects(new Request('http://localhost/redirect1'), manifest.redirects as Redirect[])
340+
const result = applyRedirectRules(new Request('http://localhost/redirect1'), manifest.redirects as RedirectRule[])
332341
assert(result)
333342
assertEquals(result.headers.get('location'), 'http://localhost/')
334343
assertEquals(result.status, 307)
335344
})
336345

337346
await t.step('with params', () => {
338-
const result = applyRedirects(new Request('http://localhost/hello/123/another'), manifest.redirects as Redirect[])
347+
const result = applyRedirectRules(
348+
new Request('http://localhost/hello/123/another'),
349+
manifest.redirects as RedirectRule[],
350+
)
339351
assert(result)
340352
assertEquals(result.headers.get('location'), 'http://localhost/blog/123')
341353
assertEquals(result.status, 307)
342354
})
343355

344356
await t.step('to a URL with a hash', () => {
345-
const result = applyRedirects(
357+
const result = applyRedirectRules(
346358
new Request('http://localhost/docs/router-status/500'),
347-
manifest.redirects as Redirect[],
359+
manifest.redirects as RedirectRule[],
348360
)
349361
assert(result)
350362
const location = result.headers.get('location')
@@ -356,7 +368,7 @@ Deno.test('redirects', async (t) => {
356368
})
357369

358370
await t.step('with provided statusCode', () => {
359-
const result = applyRedirects(new Request('http://localhost/redirect2'), manifest.redirects as Redirect[])
371+
const result = applyRedirectRules(new Request('http://localhost/redirect2'), manifest.redirects as RedirectRule[])
360372
assert(result)
361373
const location = result.headers.get('location')
362374
assert(location)
@@ -367,9 +379,9 @@ Deno.test('redirects', async (t) => {
367379
})
368380

369381
await t.step('using a catchall', () => {
370-
const result = applyRedirects(
382+
const result = applyRedirectRules(
371383
new Request('http://localhost/catchall-redirect/hello/world'),
372-
manifest.redirects as Redirect[],
384+
manifest.redirects as RedirectRule[],
373385
)
374386
assert(result)
375387
const location = result.headers.get('location')
@@ -383,19 +395,19 @@ Deno.test('redirects', async (t) => {
383395

384396
Deno.test('rewrites', async (t) => {
385397
await t.step('afterFiles rewrite', () => {
386-
const result = applyRewrites({
398+
const result = applyRewriteRules({
387399
request: new Request('http://localhost/to-another'),
388-
rules: manifest.rewrites.afterFiles as Rewrite[],
400+
rules: manifest.rewrites.afterFiles as RewriteRule[],
389401
checkStaticRoutes: true,
390402
staticRoutes,
391403
})
392404
assert(result)
393405
assertEquals(result.url, 'http://localhost/another/one')
394406
})
395407
await t.step('afterFiles with params', () => {
396-
const result = applyRewrites({
408+
const result = applyRewriteRules({
397409
request: new Request('http://localhost/test/hello'),
398-
rules: manifest.rewrites.afterFiles as Rewrite[],
410+
rules: manifest.rewrites.afterFiles as RewriteRule[],
399411
checkStaticRoutes: true,
400412
staticRoutes,
401413
})
@@ -404,9 +416,9 @@ Deno.test('rewrites', async (t) => {
404416
})
405417

406418
await t.step('afterFiles matching static file', () => {
407-
const result = applyRewrites({
419+
const result = applyRewriteRules({
408420
request: new Request('http://localhost/hello-world'),
409-
rules: manifest.rewrites.afterFiles as Rewrite[],
421+
rules: manifest.rewrites.afterFiles as RewriteRule[],
410422
checkStaticRoutes: true,
411423
staticRoutes,
412424
})
@@ -416,9 +428,9 @@ Deno.test('rewrites', async (t) => {
416428
})
417429

418430
await t.step('afterFiles matching dynamic route', () => {
419-
const result = applyRewrites({
431+
const result = applyRewriteRules({
420432
request: new Request('http://localhost/test/nothing'),
421-
rules: manifest.rewrites.afterFiles as Rewrite[],
433+
rules: manifest.rewrites.afterFiles as RewriteRule[],
422434
checkStaticRoutes: true,
423435
staticRoutes,
424436
})
@@ -428,19 +440,19 @@ Deno.test('rewrites', async (t) => {
428440
})
429441

430442
await t.step('non-matching', () => {
431-
const result = applyRewrites({
443+
const result = applyRewriteRules({
432444
request: new Request('http://localhost/no-match'),
433-
rules: manifest.rewrites.afterFiles as Rewrite[],
445+
rules: manifest.rewrites.afterFiles as RewriteRule[],
434446
checkStaticRoutes: true,
435447
staticRoutes,
436448
})
437449
assertFalse(result)
438450
})
439451

440452
await t.step('preserves query params', () => {
441-
const result = applyRewrites({
453+
const result = applyRewriteRules({
442454
request: new Request('http://localhost/proxy-me/first?keep=me&and=me'),
443-
rules: manifest.rewrites.afterFiles as Rewrite[],
455+
rules: manifest.rewrites.afterFiles as RewriteRule[],
444456
checkStaticRoutes: true,
445457
staticRoutes,
446458
})

0 commit comments

Comments
 (0)