PasteStatus.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. 'use strict';
  2. var common = require('../common');
  3. describe('PasteStatus', function () {
  4. describe('createPasteNotification', function () {
  5. this.timeout(30000);
  6. jsc.property(
  7. 'creates a notification after a successfull paste upload',
  8. common.jscSchemas(),
  9. jsc.nearray(common.jscA2zString()),
  10. jsc.array(common.jscQueryString()),
  11. 'string',
  12. common.jscSchemas(),
  13. jsc.nearray(common.jscA2zString()),
  14. jsc.array(common.jscQueryString()),
  15. function (
  16. schema1, address1, query1, fragment1,
  17. schema2, address2, query2
  18. ) {
  19. var expected1 = schema1 + '://' + address1.join('') + '/?' +
  20. encodeURI(query1.join('').replace(/^&+|&+$/gm,'') + '#' + fragment1),
  21. expected2 = schema2 + '://' + address2.join('') + '/?' +
  22. encodeURI(query2.join('').replace(/^&+|&+$/gm,'')),
  23. clean = jsdom();
  24. $('body').html('<div><div id="deletelink"></div><div id="pastelink"></div></div>');
  25. $.PrivateBin.PasteStatus.init();
  26. $.PrivateBin.PasteStatus.createPasteNotification(expected1, expected2);
  27. var result1 = $('#pasteurl')[0].href,
  28. result2 = $('#deletelink a')[0].href;
  29. clean();
  30. return result1 === expected1 && result2 === expected2;
  31. }
  32. );
  33. });
  34. describe('showRemainingTime', function () {
  35. this.timeout(30000);
  36. before(function () {
  37. cleanup();
  38. });
  39. jsc.property(
  40. 'shows burn after reading message or remaining time v1',
  41. 'bool',
  42. 'nat',
  43. jsc.nearray(common.jscA2zString()),
  44. jsc.nearray(common.jscA2zString()),
  45. jsc.nearray(common.jscQueryString()),
  46. 'string',
  47. function (
  48. burnafterreading, remainingTime,
  49. schema, address, query, fragment
  50. ) {
  51. var clean = jsdom('', {
  52. url: schema.join('') + '://' + address.join('') +
  53. '/?' + query.join('') + '#' + fragment
  54. }),
  55. result;
  56. $('body').html('<div id="remainingtime" class="hidden"></div>');
  57. $.PrivateBin.PasteStatus.init();
  58. $.PrivateBin.PasteStatus.showRemainingTime($.PrivateBin.Helper.PasteFactory({'meta': {
  59. 'burnafterreading': burnafterreading,
  60. 'remaining_time': remainingTime
  61. }}));
  62. if (burnafterreading) {
  63. result = $('#remainingtime').hasClass('foryoureyesonly') &&
  64. !$('#remainingtime').hasClass('hidden');
  65. } else if (remainingTime) {
  66. result =!$('#remainingtime').hasClass('foryoureyesonly') &&
  67. !$('#remainingtime').hasClass('hidden');
  68. } else {
  69. result = $('#remainingtime').hasClass('hidden') &&
  70. !$('#remainingtime').hasClass('foryoureyesonly');
  71. }
  72. clean();
  73. return result;
  74. }
  75. );
  76. jsc.property(
  77. 'shows burn after reading message or remaining time v2',
  78. 'bool',
  79. 'nat',
  80. jsc.nearray(common.jscA2zString()),
  81. jsc.nearray(common.jscA2zString()),
  82. jsc.nearray(common.jscQueryString()),
  83. 'string',
  84. function (
  85. burnafterreading, remainingTime,
  86. schema, address, query, fragment
  87. ) {
  88. var clean = jsdom('', {
  89. url: schema.join('') + '://' + address.join('') +
  90. '/?' + query.join('') + '#' + fragment
  91. }),
  92. result;
  93. $('body').html('<div id="remainingtime" class="hidden"></div>');
  94. $.PrivateBin.PasteStatus.init();
  95. $.PrivateBin.PasteStatus.showRemainingTime($.PrivateBin.Helper.PasteFactory({
  96. 'adata': [null, null, null, burnafterreading],
  97. 'v': 2,
  98. 'meta': {
  99. 'time_to_live': remainingTime
  100. }
  101. }));
  102. if (burnafterreading) {
  103. result = $('#remainingtime').hasClass('foryoureyesonly') &&
  104. !$('#remainingtime').hasClass('hidden');
  105. } else if (remainingTime) {
  106. result =!$('#remainingtime').hasClass('foryoureyesonly') &&
  107. !$('#remainingtime').hasClass('hidden');
  108. } else {
  109. result = $('#remainingtime').hasClass('hidden') &&
  110. !$('#remainingtime').hasClass('foryoureyesonly');
  111. }
  112. clean();
  113. return result;
  114. }
  115. );
  116. });
  117. describe('hideMessages', function () {
  118. before(function () {
  119. cleanup();
  120. });
  121. it(
  122. 'hides all messages',
  123. function() {
  124. $('body').html(
  125. '<div id="remainingtime"></div><div id="pastesuccess"></div>'
  126. );
  127. $.PrivateBin.PasteStatus.init();
  128. $.PrivateBin.PasteStatus.hideMessages();
  129. assert.ok(
  130. $('#remainingtime').hasClass('hidden') &&
  131. $('#pastesuccess').hasClass('hidden')
  132. );
  133. }
  134. );
  135. });
  136. });