write_and_read.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const chai = require('chai');
  2. chai.use(require('chai-as-promised'))
  3. const expect = chai.expect;
  4. module.exports = {
  5. name: 'write and read',
  6. do: async t => {
  7. let result;
  8. const TEST_FILENAME = 'test_rw.txt';
  9. await t.write(TEST_FILENAME, 'example\n', { overwrite: true });
  10. await t.case('read matches what was written', async () => {
  11. result = await t.read(TEST_FILENAME);
  12. expect(result).equal('example\n');
  13. });
  14. await t.case('write throws for overwrite=false', () => {
  15. expect(
  16. t.write(TEST_FILENAME, 'no-change\n')
  17. ).rejectedWith(Error);
  18. });
  19. await t.case('write updates for overwrite=true', async () => {
  20. await t.write(TEST_FILENAME, 'yes-change\n', {
  21. overwrite: true,
  22. });
  23. result = await t.read(TEST_FILENAME);
  24. expect(result).equal('yes-change\n');
  25. });
  26. await t.case('write updates for overwrite=true', async () => {
  27. await t.write(TEST_FILENAME, 'yes-change\n', {
  28. overwrite: true,
  29. });
  30. result = await t.read(TEST_FILENAME, { version_id: '1' });
  31. expect(result).equal('yes-change\n');
  32. });
  33. await t.case('read with no path or uid provided fails', async () => {
  34. let threw = false;
  35. try {
  36. const res = await t.get('read', {});
  37. } catch (e) {
  38. expect(e.response.status).equal(400);
  39. expect(e.response.data).deep.equal({
  40. message: 'Field \`file\` is required.',
  41. code: 'field_missing',
  42. key: 'file',
  43. });
  44. threw = true;
  45. }
  46. expect(threw).true;
  47. });
  48. await t.case('read for non-existing path fails', async () => {
  49. let threw = false;
  50. try {
  51. await t.read('i-do-not-exist.txt');
  52. } catch (e) {
  53. expect(e.response.status).equal(404);
  54. expect(e.response.data).deep.equal({
  55. message: 'File or directory not found.',
  56. code: 'subject_does_not_exist',
  57. });
  58. threw = true;
  59. }
  60. expect(threw).true;
  61. });
  62. }
  63. };