minor rearrangement in serveFile
authorJustin Wind <justin.wind+git@gmail.com>
Fri, 29 Apr 2022 00:54:13 +0000 (17:54 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Fri, 29 Apr 2022 00:54:13 +0000 (17:54 -0700)
lib/dingus.js
test/lib/dingus.js

index 3ca710e463db4fe614f469ea227b09bbc41e8325..79cee2c448e6d61e7d641b45072c532bc52b8237 100644 (file)
@@ -565,18 +565,20 @@ class Dingus {
         break;
       }
       const suffix = Enum.EncodingTypeSuffix[encoding];
-      if (suffix) {
-        const encodedFilePath = `${filePath}${suffix}`;
-        const [ encodedStat, encodedData ] = await this._readFileInfo(encodedFilePath);
-        if (encodedStat) {
-          ([ stat, data ] = [ encodedStat, encodedData ]);
-          ctx.selectedEncoding = encoding;
-          Dingus.addEncodingHeader(res, encoding);
-          res.setHeader(Enum.Header.Vary, Enum.Header.AcceptEncoding);
-          this.logger.debug(_scope, 'serving encoded version', { ctx, encodedFilePath });
-        }
-        break;
+      if (!suffix) {
+        this.logger.error(_scope, 'supported encoding missing mapped suffix', { ctx, encoding });
+        continue;
+      }
+      const encodedFilePath = `${filePath}${suffix}`;
+      const [ encodedStat, encodedData ] = await this._readFileInfo(encodedFilePath);
+      if (encodedStat) {
+        ([ stat, data ] = [ encodedStat, encodedData ]);
+        ctx.selectedEncoding = encoding;
+        Dingus.addEncodingHeader(res, encoding);
+        res.setHeader(Enum.Header.Vary, Enum.Header.AcceptEncoding);
+        this.logger.debug(_scope, 'serving encoded version', { ctx, encodedFilePath });
       }
+      break;
     }
 
     const lastModifiedDate = new Date(stat.mtimeMs);
index c88921556db4b0d9abcd2decc95abc038f5fd459..ab61256b3a89162c17bfb002a0569f7975786efc 100644 (file)
@@ -821,6 +821,13 @@ Content-Type: image/sgi
       await dingus.serveFile(req, res, ctx, directory, fileName);
       assert(res.end.called);
     });
+    it('handles misconfigured encoding', async function () {
+      Enum.EncodingType.Flarp = 'flarp';
+      req._headers[Enum.Header.AcceptEncoding] = 'flarp, gzip';
+      await dingus.serveFile(req, res, ctx, directory, fileName);
+      delete Enum.EncodingType.Flarp;
+      assert(res.end.called);
+    });
   }); // serveFile
 
   describe('renderError', function () {