tests.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. let testUtils = {
  2. fetchTar: function(filename) {
  3. return new Promise((resolve, reject) => {
  4. fetch(filename).then(resp => resp.blob()).then((blob) => {
  5. let tar = new tarball.TarReader();
  6. tar.readFile(blob).then((fileInfo) => {
  7. resolve(tar);
  8. });
  9. });
  10. });
  11. },
  12. generateTar: function(download) {
  13. // generate a tarball and read it back
  14. return new Promise((resolve, reject) => {
  15. let tarWriter = new tarball.TarWriter();
  16. tarWriter.addFolder("myfolder/");
  17. tarWriter.addTextFile("myfolder/first.txt", "this is some text");
  18. tarWriter.addTextFile("myfolder/second.txt", "some more text");
  19. fetch("files/simple/tux.png").then(resp => resp.blob()).then((blob) => {
  20. let file = blob;
  21. file.name = "tux.png";
  22. file.lastModifiedDate = new Date();
  23. tarWriter.addFile("myfolder/tux.png", file);
  24. if(download) {
  25. tarWriter.download("generated.tar").then(() => {
  26. resolve(null);
  27. });
  28. } else {
  29. tarWriter.write().then((tarBlob) => {
  30. let tarFile = tarBlob;
  31. let tarReader = new tarball.TarReader();
  32. tarReader.readFile(tarFile).then((fileInfo) => {
  33. resolve(tarReader);
  34. });
  35. });
  36. }
  37. });
  38. });
  39. }
  40. };
  41. // Read tests
  42. QUnit.module("Read Tests");
  43. QUnit.test( "Count files", function( assert ) {
  44. let done = assert.async();
  45. testUtils.fetchTar("files/simple.tar").then((tar) => {
  46. let fileInfo = tar.getFileInfo();
  47. assert.equal(fileInfo.length, 3, "Has 3 files");
  48. assert.equal(fileInfo[0].name, "simple/", "Has simple directory");
  49. assert.equal(fileInfo[1].name, "simple/tux.png", "Has image file");
  50. assert.equal(fileInfo[2].name, "simple/hello.txt", "Has text file");
  51. done();
  52. });
  53. });
  54. QUnit.test( "Check file headers", function( assert ) {
  55. let done = assert.async();
  56. testUtils.fetchTar("files/simple.tar").then((tar) => {
  57. let fileInfo = tar.getFileInfo();
  58. assert.equal(fileInfo[1].name, "simple/tux.png", "File name is ok");
  59. assert.equal(fileInfo[1].type, "file", "File type is ok");
  60. assert.equal(fileInfo[1].size, 11913, "File size is ok");
  61. done();
  62. });
  63. });
  64. QUnit.test( "Check text file contents", function( assert ) {
  65. let done = assert.async();
  66. testUtils.fetchTar("files/simple.tar").then((tar) => {
  67. let text = tar.getTextFile("simple/hello.txt");
  68. assert.equal(text, "hello world!\n", "Text file contents are ok");
  69. done();
  70. });
  71. });
  72. QUnit.test( "Check image file contents", function( assert ) {
  73. let done = assert.async();
  74. testUtils.fetchTar("files/simple.tar").then((tar) => {
  75. let imageBlob = tar.getFileBlob("simple/tux.png", "image/png");
  76. let imageURL = URL.createObjectURL(imageBlob);
  77. let image = new Image();
  78. image.onload = (event) => {
  79. assert.equal(image.width, 265, "Image width is ok");
  80. assert.equal(image.height, 314, "Image height is ok");
  81. done();
  82. };
  83. image.src = imageURL;
  84. });
  85. });
  86. // write tests
  87. QUnit.module("Write tests");
  88. QUnit.test( "Count files", function( assert ) {
  89. let done = assert.async();
  90. testUtils.generateTar().then((tar) => {
  91. let fileInfo = tar.getFileInfo();
  92. assert.equal(fileInfo.length, 4, "file count is ok");
  93. done();
  94. });
  95. });
  96. QUnit.test( "Check file headers", function( assert ) {
  97. let done = assert.async();
  98. testUtils.generateTar().then((tar) => {
  99. let fileInfo = tar.getFileInfo();
  100. assert.equal(fileInfo[3].name, "myfolder/tux.png", "file name is ok");
  101. assert.equal(fileInfo[3].type, "file", "file type is ok");
  102. assert.equal(fileInfo[3].size, 11913, "file size is ok");
  103. done();
  104. });
  105. });
  106. QUnit.test( "Check text file contents", function( assert ) {
  107. let done = assert.async();
  108. testUtils.generateTar().then((tar) => {
  109. let text = tar.getTextFile("myfolder/second.txt");
  110. assert.equal(text, "some more text", "text file contents are ok");
  111. done();
  112. });
  113. });
  114. QUnit.test( "Check image file contents", function( assert ) {
  115. let done = assert.async();
  116. testUtils.generateTar().then((tar) => {
  117. let imageBlob = tar.getFileBlob("myfolder/tux.png", "image/png");
  118. let imageURL = URL.createObjectURL(imageBlob);
  119. let image = new Image();
  120. image.onload = (event) => {
  121. assert.equal(image.width, 265, "Image width is ok");
  122. assert.equal(image.height, 314, "Image height is ok");
  123. done();
  124. };
  125. image.src = imageURL;
  126. });
  127. });
  128. QUnit.test( "Download test", function( assert ) {
  129. let done = assert.async();
  130. testUtils.generateTar(true).then((tar) => {
  131. assert.ok(1, "download test completed, please check tar file manually");
  132. done();
  133. });
  134. });