custom-content-type-file.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. 'use strict';
  2. const test = require('tap').test;
  3. const http = require('http');
  4. const request = require('request');
  5. const ecstatic = require('../');
  6. function setup(opts) {
  7. return http.createServer(ecstatic(opts));
  8. }
  9. test('throws when custom contentType .types file does not exist', (t) => {
  10. t.plan(1);
  11. t.throws(
  12. setup.bind(null, {
  13. root: `${__dirname}/public/`,
  14. mimeTypes: 'this_file_does_not_exist.types',
  15. })
  16. );
  17. });
  18. test('custom contentType via .types file', (t) => {
  19. let server = null;
  20. try {
  21. server = setup({
  22. root: `${__dirname}/public`,
  23. 'mime-types': `${__dirname}/public/custom_mime_type.types`,
  24. });
  25. } catch (e) {
  26. t.fail(e.message);
  27. t.end();
  28. }
  29. t.plan(3);
  30. server.listen(0, () => {
  31. const port = server.address().port;
  32. request.get(`http://localhost:${port}/custom_mime_type.opml`, (err, res) => {
  33. t.ifError(err);
  34. t.equal(res.statusCode, 200, 'custom_mime_type.opml should be found');
  35. t.equal(res.headers['content-type'], 'application/foo; charset=utf-8');
  36. server.close(() => { t.end(); });
  37. });
  38. });
  39. });