| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 'use strict';
- var common = require('../common');
- describe('AttachmentViewer', function () {
- describe('setAttachment, showAttachment, removeAttachment, hideAttachment, hideAttachmentPreview, hasAttachment, getAttachment & moveAttachmentTo', function () {
- this.timeout(30000);
- jsc.property(
- 'displays & hides data as requested',
- common.jscMimeTypes(),
- jsc.nearray(common.jscBase64String()),
- 'string',
- 'string',
- 'string',
- function (mimeType, base64, filename, prefix, postfix) {
- var clean = jsdom(),
- data = 'data:' + mimeType + ';base64,' + base64.join(''),
- previewSupported = (
- mimeType.substring(0, 6) === 'image/' ||
- mimeType.substring(0, 6) === 'audio/' ||
- mimeType.substring(0, 6) === 'video/' ||
- mimeType.match(/\/pdf/i)
- ),
- results = [],
- result = '';
- prefix = prefix.replace(/%(s|d)/g, '%%');
- postfix = postfix.replace(/%(s|d)/g, '%%');
- $('body').html(
- '<div id="attachment" role="alert" class="hidden alert ' +
- 'alert-info"><span class="glyphicon glyphicon-download-' +
- 'alt" aria-hidden="true"></span> <a class="alert-link">' +
- 'Download attachment</a></div><div id="attachmentPrevie' +
- 'w" class="hidden"></div>'
- );
- $.PrivateBin.AttachmentViewer.init();
- results.push(
- !$.PrivateBin.AttachmentViewer.hasAttachment() &&
- $('#attachment').hasClass('hidden') &&
- $('#attachmentPreview').hasClass('hidden')
- );
- if (filename.length) {
- $.PrivateBin.AttachmentViewer.setAttachment(data, filename);
- } else {
- $.PrivateBin.AttachmentViewer.setAttachment(data);
- }
- var attachment = $.PrivateBin.AttachmentViewer.getAttachment();
- results.push(
- $.PrivateBin.AttachmentViewer.hasAttachment() &&
- $('#attachment').hasClass('hidden') &&
- $('#attachmentPreview').hasClass('hidden') &&
- attachment[0] === data &&
- attachment[1] === filename
- );
- $.PrivateBin.AttachmentViewer.showAttachment();
- results.push(
- !$('#attachment').hasClass('hidden') &&
- (previewSupported ? !$('#attachmentPreview').hasClass('hidden') : $('#attachmentPreview').hasClass('hidden'))
- );
- $.PrivateBin.AttachmentViewer.hideAttachment();
- results.push(
- $('#attachment').hasClass('hidden') &&
- (previewSupported ? !$('#attachmentPreview').hasClass('hidden') : $('#attachmentPreview').hasClass('hidden'))
- );
- if (previewSupported) {
- $.PrivateBin.AttachmentViewer.hideAttachmentPreview();
- results.push($('#attachmentPreview').hasClass('hidden'));
- }
- $.PrivateBin.AttachmentViewer.showAttachment();
- results.push(
- !$('#attachment').hasClass('hidden') &&
- (previewSupported ? !$('#attachmentPreview').hasClass('hidden') : $('#attachmentPreview').hasClass('hidden'))
- );
- let element = $('<div>');
- $.PrivateBin.AttachmentViewer.moveAttachmentTo(element, prefix + '%s' + postfix);
- // messageIDs with links get a relaxed treatment
- if (prefix.indexOf('<a') === -1 && postfix.indexOf('<a') === -1) {
- result = $.PrivateBin.Helper.htmlEntities(prefix + filename + postfix);
- } else {
- result = $('<div>').html(prefix + $.PrivateBin.Helper.htmlEntities(filename) + postfix).html();
- }
- if (filename.length) {
- results.push(
- element.children()[0].href === data &&
- element.children()[0].getAttribute('download') === filename &&
- element.children()[0].text === result
- );
- } else {
- results.push(element.children()[0].href === data);
- }
- $.PrivateBin.AttachmentViewer.removeAttachment();
- results.push(
- $('#attachment').hasClass('hidden') &&
- $('#attachmentPreview').hasClass('hidden')
- );
- clean();
- return results.every(element => element);
- }
- );
- });
- });
|