Просмотр исходного кода

fix(api): close coverage edges in media-references route

_Kerman 5 дней назад
Родитель
Сommit
f81c5072bd

+ 2 - 6
packages/api/session-controller/src/media-references.ts

@@ -126,20 +126,16 @@ export async function serveMediaReference(
   }
   if (registry === undefined) return new Response('file serving is unavailable', { status: 403 })
   let canonical: string
+  let info
   try {
     canonical = await realpath(path)
+    info = await stat(canonical)
   } catch {
     return new Response('not found', { status: 404 })
   }
   const insideWorkspace = registry.list().some(root =>
     canonical === root.path || canonical.startsWith(root.path + sep))
   if (!insideWorkspace) return new Response('outside workspace roots', { status: 403 })
-  let info
-  try {
-    info = await stat(canonical)
-  } catch {
-    return new Response('not found', { status: 404 })
-  }
   if (!info.isFile()) return new Response('not a regular file', { status: 403 })
   const mediaType = mediaTypeForPath(canonical)
   if (mediaType === undefined) {

+ 2 - 0
packages/api/session-controller/tests/media-references.host.spec.ts

@@ -55,6 +55,8 @@ describe('parseByteRange', () => {
 
   it('refuses malformed and unsatisfiable ranges', () => {
     expect(parseByteRange('bytes=abc', 100)).toBeUndefined()
+    expect(parseByteRange('bytes=-', 100)).toBeUndefined()
+    expect(parseByteRange('bytes=-0', 100)).toBeUndefined()
     expect(parseByteRange('bytes=5-2', 100)).toBeUndefined()
     expect(parseByteRange('bytes=100-', 100)).toBeUndefined()
     expect(parseByteRange('bytes=0-', 0)).toBeUndefined()