publicstatic.test.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. var request = require('supertest');
  2. request = request('http://127.0.0.1:8080');
  3. const fs = require('fs');
  4. const path = require('path');
  5. const randomString = require('./lib/rand').randomString;
  6. const publicPath = path.resolve(__dirname, '../../../data/public');
  7. const filename = randomString() + '.txt';
  8. const fileContent = randomString();
  9. test('random public static file does not exist', async (done) => {
  10. request.get('/public/' + filename).expect(404);
  11. done();
  12. });
  13. test('public directory is writable', async (done) => {
  14. try {
  15. writeFileToPublic();
  16. } catch (err) {
  17. if (err) {
  18. if (err.code === 'ENOENT') {
  19. // path does not exist
  20. fs.mkdirSync(publicPath);
  21. writeFileToPublic();
  22. } else {
  23. throw err;
  24. }
  25. }
  26. }
  27. done();
  28. });
  29. test('public static file is accessible', async (done) => {
  30. request
  31. .get('/public/' + filename)
  32. .expect(200)
  33. .then((res) => {
  34. expect(res.text).toEqual(fileContent);
  35. done();
  36. });
  37. });
  38. test('public static file is persistent and not locked', async (done) => {
  39. fs.unlink(path.join(publicPath, filename), (err) => {
  40. if (err) {
  41. throw err;
  42. }
  43. });
  44. done();
  45. });
  46. function writeFileToPublic() {
  47. fs.writeFileSync(path.join(publicPath, filename), fileContent);
  48. }