ftp.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /**
  2. * Module dependencies.
  3. */
  4. var fs = require('fs');
  5. var ftpd = require('ftpd');
  6. var path = require('path');
  7. var getUri = require('../');
  8. var assert = require('assert');
  9. var streamToArray = require('stream-to-array');
  10. describe('get-uri', function () {
  11. describe('"ftp:" protocol', function () {
  12. var port;
  13. var cache;
  14. var server;
  15. before(function (done) {
  16. var options = {
  17. logLevel: -1,
  18. getInitialCwd: function (socket, fn) {
  19. fn(null, '/');
  20. },
  21. getRoot: function (socket) {
  22. return __dirname;
  23. }
  24. };
  25. var host = '127.0.0.1';
  26. server = new ftpd.FtpServer(host, options);
  27. server.on('client:connected', function(conn){
  28. var username;
  29. conn.on('command:user', function(user, success, failure) {
  30. username = user;
  31. success();
  32. });
  33. conn.on('command:pass', function(pass, success, failure){
  34. success(username);
  35. });
  36. });
  37. server.listen(0, function () {
  38. port = server.server.address().port;
  39. done();
  40. });
  41. });
  42. after(function (done) {
  43. server.server.once('close', function () {
  44. done();
  45. });
  46. server.server.close();
  47. });
  48. it('should work for ftp endpoints', function (done) {
  49. var uri = 'ftp://127.0.0.1:' + port + '/' + path.basename(__filename);
  50. fs.readFile(__filename, 'utf8', function (err, real) {
  51. if (err) return done(err);
  52. getUri(uri, function (err, rs) {
  53. if (err) return done(err);
  54. cache = rs;
  55. streamToArray(rs, function (err, array) {
  56. if (err) return done(err);
  57. var str = Buffer.concat(array).toString('utf8');
  58. assert.equal(str, real);
  59. done();
  60. });
  61. });
  62. });
  63. });
  64. it('should return ENOTFOUND for bad filenames', function (done) {
  65. var uri = 'ftp://127.0.0.1:' + port + '/does-not-exist';
  66. getUri(uri, function (err, rs) {
  67. assert(err);
  68. assert.equal('ENOTFOUND', err.code);
  69. done();
  70. });
  71. });
  72. it('should return ENOTMODIFIED for the same URI with `cache`', function (done) {
  73. var uri = 'ftp://127.0.0.1:' + port + '/' + path.basename(__filename);
  74. getUri(uri, { cache: cache }, function (err, rs) {
  75. assert(err);
  76. assert.equal('ENOTMODIFIED', err.code);
  77. done();
  78. });
  79. });
  80. });
  81. });