making AttachmentViewer testable and implementing tests
This commit is contained in:
parent
dac86eb363
commit
39860dfdc4
|
@ -2080,6 +2080,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
||||||
$attachment = $('#attachment');
|
$attachment = $('#attachment');
|
||||||
$attachmentLink = $('#attachment a');
|
$attachmentLink = $('#attachment a');
|
||||||
$attachmentPreview = $('#attachmentPreview');
|
$attachmentPreview = $('#attachmentPreview');
|
||||||
|
attachmentHasPreview = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return me;
|
return me;
|
||||||
|
|
130
js/test.js
130
js/test.js
|
@ -31,7 +31,10 @@ var jsc = require('jsverify'),
|
||||||
'`': '`',
|
'`': '`',
|
||||||
'=': '='
|
'=': '='
|
||||||
},
|
},
|
||||||
logFile = require('fs').createWriteStream('test.log');
|
logFile = require('fs').createWriteStream('test.log'),
|
||||||
|
mimeTypes = ['image/png','application/octet-stream'],
|
||||||
|
mimeFile = require('fs').createReadStream('/etc/mime.types'),
|
||||||
|
mimeLine = '';
|
||||||
|
|
||||||
global.$ = global.jQuery = require('./jquery-3.1.1');
|
global.$ = global.jQuery = require('./jquery-3.1.1');
|
||||||
global.sjcl = require('./sjcl-1.0.6');
|
global.sjcl = require('./sjcl-1.0.6');
|
||||||
|
@ -51,6 +54,41 @@ console.info = console.warn = console.error = function () {
|
||||||
logFile.write(Array.prototype.slice.call(arguments).join('') + '\n');
|
logFile.write(Array.prototype.slice.call(arguments).join('') + '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// populate mime types from environment
|
||||||
|
mimeFile.on('data', function(data) {
|
||||||
|
mimeLine += data;
|
||||||
|
var index = mimeLine.indexOf('\n');
|
||||||
|
while (index > -1) {
|
||||||
|
var line = mimeLine.substring(0, index);
|
||||||
|
mimeLine = mimeLine.substring(index + 1);
|
||||||
|
parseMime(line);
|
||||||
|
index = mimeLine.indexOf('\n');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mimeFile.on('end', function() {
|
||||||
|
if (mimeLine.length > 0) {
|
||||||
|
parseMime(mimeLine);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function parseMime(line) {
|
||||||
|
// ignore comments
|
||||||
|
var index = line.indexOf('#');
|
||||||
|
if (index > -1) {
|
||||||
|
line = line.substring(0, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ignore bits after tabs
|
||||||
|
index = line.indexOf('\t');
|
||||||
|
if (index > -1) {
|
||||||
|
line = line.substring(0, index);
|
||||||
|
}
|
||||||
|
if (line.length > 0) {
|
||||||
|
mimeTypes.push(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* convert all applicable characters to HTML entities
|
* convert all applicable characters to HTML entities
|
||||||
*
|
*
|
||||||
|
@ -1487,3 +1525,93 @@ describe('PasteViewer', function () {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('AttachmentViewer', function () {
|
||||||
|
describe('setAttachment, showAttachment, removeAttachment, hideAttachment, hideAttachmentPreview, hasAttachment, getAttachment & moveAttachmentTo', function () {
|
||||||
|
this.timeout(30000);
|
||||||
|
before(function () {
|
||||||
|
cleanup();
|
||||||
|
});
|
||||||
|
|
||||||
|
jsc.property(
|
||||||
|
'displays & hides data as requested',
|
||||||
|
jsc.elements(mimeTypes),
|
||||||
|
jsc.nearray(jsc.elements(base64String)),
|
||||||
|
'string',
|
||||||
|
'string',
|
||||||
|
'string',
|
||||||
|
function (mimeType, base64, filename, prefix, postfix) {
|
||||||
|
var clean = jsdom(),
|
||||||
|
data = 'data:' + mimeType + ';base64,' + base64.join(''),
|
||||||
|
isImage = mimeType.substring(0, 6) === 'image/',
|
||||||
|
results = [];
|
||||||
|
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 attachement = $.PrivateBin.AttachmentViewer.getAttachment()
|
||||||
|
results.push(
|
||||||
|
$.PrivateBin.AttachmentViewer.hasAttachment() &&
|
||||||
|
$('#attachment').hasClass('hidden') &&
|
||||||
|
$('#attachmentPreview').hasClass('hidden') &&
|
||||||
|
attachement[0] === data &&
|
||||||
|
attachement[1] === filename
|
||||||
|
);
|
||||||
|
$.PrivateBin.AttachmentViewer.showAttachment();
|
||||||
|
results.push(
|
||||||
|
!$('#attachment').hasClass('hidden') &&
|
||||||
|
(isImage ? !$('#attachmentPreview').hasClass('hidden') : $('#attachmentPreview').hasClass('hidden'))
|
||||||
|
);
|
||||||
|
$.PrivateBin.AttachmentViewer.hideAttachment();
|
||||||
|
results.push(
|
||||||
|
$('#attachment').hasClass('hidden') &&
|
||||||
|
(isImage ? !$('#attachmentPreview').hasClass('hidden') : $('#attachmentPreview').hasClass('hidden'))
|
||||||
|
);
|
||||||
|
if (isImage) {
|
||||||
|
$.PrivateBin.AttachmentViewer.hideAttachmentPreview();
|
||||||
|
results.push($('#attachmentPreview').hasClass('hidden'));
|
||||||
|
}
|
||||||
|
$.PrivateBin.AttachmentViewer.showAttachment();
|
||||||
|
results.push(
|
||||||
|
!$('#attachment').hasClass('hidden') &&
|
||||||
|
(isImage ? !$('#attachmentPreview').hasClass('hidden') : $('#attachmentPreview').hasClass('hidden'))
|
||||||
|
);
|
||||||
|
var element = $('<div></div>');
|
||||||
|
$.PrivateBin.AttachmentViewer.moveAttachmentTo(element, prefix + '%s' + postfix);
|
||||||
|
if (filename.length) {
|
||||||
|
results.push(
|
||||||
|
element.children()[0].href === data &&
|
||||||
|
element.children()[0].getAttribute('download') === filename &&
|
||||||
|
element.children()[0].text === prefix + filename + postfix
|
||||||
|
);
|
||||||
|
} 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);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ if ($MARKDOWN):
|
||||||
<?php
|
<?php
|
||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-NDAfNtN88qJLs6tH5RjjDDdd/sbFFrufgR8RpT6UACus40DLSO6vmSNje9L5IZl+93XBaTxryE7ud9Irkjfh2A==" crossorigin="anonymous"></script>
|
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-/YMgC56Z2fpsurdKZVLiOK7zTx63c68RO/9UZ8SC34ssNaVoXZhhNtEUscwtdEOCGeY7tU7UGc6r0+BSs7bbJQ==" crossorigin="anonymous"></script>
|
||||||
<!--[if lt IE 10]>
|
<!--[if lt IE 10]>
|
||||||
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
|
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
|
@ -48,7 +48,7 @@ if ($MARKDOWN):
|
||||||
<?php
|
<?php
|
||||||
endif;
|
endif;
|
||||||
?>
|
?>
|
||||||
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-NDAfNtN88qJLs6tH5RjjDDdd/sbFFrufgR8RpT6UACus40DLSO6vmSNje9L5IZl+93XBaTxryE7ud9Irkjfh2A==" crossorigin="anonymous"></script>
|
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-/YMgC56Z2fpsurdKZVLiOK7zTx63c68RO/9UZ8SC34ssNaVoXZhhNtEUscwtdEOCGeY7tU7UGc6r0+BSs7bbJQ==" crossorigin="anonymous"></script>
|
||||||
<!--[if lt IE 10]>
|
<!--[if lt IE 10]>
|
||||||
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
|
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
Loading…
Reference in New Issue