cryptpad/customize.dist/share/test.js
2017-05-04 16:16:09 +02:00

124 lines
3.8 KiB
JavaScript

define([
'jquery',
'/customize/share/frame.js'
], function ($, Frame) {
var domain = 'https://beta.cryptpad.fr';
var path = '/customize/share/frame.html';
var acceptResponseFrom = [
/cryptpad.fr$/
];
var lock = 0;
var unlock = function (i) {
lock--;
console.log("Test #%s passed", i + 1);
if (!lock) { $('#status').addClass('working'); }
};
var runTest = function (test, i) {
lock++;
test(i);
};
var randInt = function () {
return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
};
var handleErr = function (err) {
if (err) {
console.error(err);
return true;
}
};
var areNull = function (keys, data) {
return !keys.some(function (k) { return data[k] !== null; });
};
Frame.create(document.body, domain + path, function (err, iframe) {
if (handleErr(err)) { return; }
console.log("Created iframe");
// open a channel into the frame, accept messages from (sub)domain(s)
var frame = window.Beta = Frame.open(iframe, acceptResponseFrom);
/* Run your actual tests */
[function (i) { // test #1
var pew = randInt();
frame.set('pew', pew, function (err) {
if (handleErr(err)) { return; }
frame.get('pew', function (err, num) {
if (handleErr(err)) { return; }
if (pew === num) {
frame.remove('pew', function (err) {
if (handleErr(err)) { return; }
frame.get('pew', function (err, data) {
if (handleErr(err)) { return; }
if (data !== null) { return; }
unlock(i);
});
});
}
});
});
}, function (i) { // test #2
var map = {
bang: randInt(),
pow: randInt(),
lol: randInt(),
};
var keys = Object.keys(map);
frame.setBatch(map, function (err) {
if (handleErr(err)) { return; }
frame.getBatch(keys, function (err) {
if (handleErr(err)) { return; }
frame.removeBatch(Object.keys(map), function (err) {
if (handleErr(err)) { return; }
frame.getBatch(keys, function (err, data) {
if (areNull(keys, data)) { unlock(i); }
});
});
});
});
}, function (i) { // test #3
var map = {
bang2: true,
pow2: true,
lol2: true,
};
var keys = Object.keys(map);
// set some keys to arbitrary values
frame.setBatch(map, function (err) {
if (handleErr(err)) { return; }
// remove those values
frame.removeBatch(keys, function (err) {
if (handleErr(err)) { return; }
// check that they were actually removed
frame.getBatch(keys, function (err, data) {
if (handleErr(err)) { return; }
// all keys should be null after you've removed them
if (areNull(keys, data)) {
unlock(i);
return;
}
console.log("Expected all keys to return null");
});
});
});
}].forEach(runTest);
});
});