PasteStatus.js 5.6 KB

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