http.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * Module dependencies.
  3. */
  4. var fs = require('fs');
  5. var st = require('st');
  6. var path = require('path');
  7. var http = require('http');
  8. var getUri = require('../');
  9. var assert = require('assert');
  10. var streamToArray = require('stream-to-array');
  11. describe('get-uri', function () {
  12. describe('"http:" protocol', function () {
  13. var port;
  14. var cache;
  15. var server;
  16. before(function (done) {
  17. // setup target HTTP server
  18. server = http.createServer(st(__dirname));
  19. server.listen(function () {
  20. port = server.address().port;
  21. done();
  22. });
  23. });
  24. after(function (done) {
  25. server.once('close', function () { done(); });
  26. server.close();
  27. });
  28. it('should work for HTTP endpoints', function (done) {
  29. var uri = 'http://127.0.0.1:' + port + '/' + path.basename(__filename);
  30. fs.readFile(__filename, 'utf8', function (err, real) {
  31. if (err) return done(err);
  32. getUri(uri, function (err, rs) {
  33. if (err) return done(err);
  34. cache = rs;
  35. streamToArray(rs, function (err, array) {
  36. if (err) return done(err);
  37. var str = Buffer.concat(array).toString('utf8');
  38. assert.equal(str, real);
  39. done();
  40. });
  41. });
  42. });
  43. });
  44. it('should return ENOTFOUND for bad filenames', function (done) {
  45. var uri = 'http://127.0.0.1:' + port + '/does-not-exist';
  46. getUri(uri, function (err, rs) {
  47. assert(err);
  48. assert.equal('ENOTFOUND', err.code);
  49. done();
  50. });
  51. });
  52. it('should return ENOTMODIFIED for the same URI with `cache`', function (done) {
  53. var uri = 'http://127.0.0.1:' + port + '/' + path.basename(__filename);
  54. getUri(uri, { cache: cache }, function (err, rs) {
  55. assert(err);
  56. assert.equal('ENOTMODIFIED', err.code);
  57. done();
  58. });
  59. });
  60. });
  61. });