diff --git a/www/assert/assertions.js b/www/assert/assertions.js
new file mode 100644
index 000000000..8ea0a2638
--- /dev/null
+++ b/www/assert/assertions.js
@@ -0,0 +1,48 @@
+define([], function () {
+ return function () {
+ var failMessages = [];
+ var passed = 0;
+ var ASSERTS = [];
+
+ var assert = function (test, msg) {
+ ASSERTS.push(function (cb, i) {
+ test(function (result) {
+ if (result === true) {
+ passed++;
+ cb();
+ } else {
+ cb({
+ test: i,
+ message: msg,
+ output: result,
+ });
+ }
+ });
+ });
+ };
+
+ assert.run = function (cb) {
+ var count = ASSERTS.length;
+ var done = function (err) {
+ count--;
+ if (err) { failMessages.push(err); }
+ if (count === 0) {
+ cb({
+ total: ASSERTS.length,
+ passed: passed,
+ errors: failMessages,
+ });
+ }
+ };
+
+ ASSERTS.forEach(function (f, index) {
+ f(function (err) {
+ //console.log("test " + index);
+ done(err, index);
+ }, index);
+ });
+ };
+
+ return assert;
+ };
+});
diff --git a/www/assert/index.html b/www/assert/index.html
index 10af165a9..a760bef97 100644
--- a/www/assert/index.html
+++ b/www/assert/index.html
@@ -24,11 +24,15 @@
width: auto;
border: 3px solid black;
}
+ .hidden {
+ display: none;
+ }
+
Serialization tests
Test 1
@@ -53,4 +57,4 @@
-
+
diff --git a/www/assert/main.js b/www/assert/main.js
index f40a8e006..07f532f05 100644
--- a/www/assert/main.js
+++ b/www/assert/main.js
@@ -11,57 +11,19 @@ define([
'/common/flat-dom.js',
'/common/media-tag.js',
'/common/outer/login-block.js',
+ '/api/config',
+ '/assert/assertions.js',
+ '/common/hyperscript.js',
+ '/customize/messages.js',
'/bower_components/tweetnacl/nacl-fast.min.js',
'less!/customize/src/less2/pages/page-assert.less',
-], function ($, Hyperjson, Sortify, Drive, Test, Hash, Util, Thumb, Wire, Flat, MediaTag, Block) {
+], function ($, Hyperjson, Sortify, Drive, Test, Hash, Util, Thumb, Wire, Flat, MediaTag, Block, ApiConfig, Assertions, h, Messages) {
window.Hyperjson = Hyperjson;
window.Sortify = Sortify;
var Nacl = window.nacl;
- var assertions = 0;
- var failed = false;
- var failedOn;
- var failMessages = [];
-
- var ASSERTS = [];
- var runASSERTS = function (cb) {
- var count = ASSERTS.length;
- var successes = 0;
-
- var done = function (err) {
- count--;
- if (err) { failMessages.push(err); }
- else { successes++; }
- if (count === 0) { cb(); }
- };
-
- ASSERTS.forEach(function (f, index) {
- f(function (err) {
- //console.log("test " + index);
- done(err, index);
- }, index);
- });
- };
-
- var assert = function (test, msg) {
- ASSERTS.push(function (cb, i) {
- test(function (result) {
- if (result === true) {
- assertions++;
- cb();
- } else {
- failed = true;
- failedOn = assertions;
- cb({
- test: i,
- message: msg,
- output: result,
- });
- }
- });
- });
- };
+ var assert = Assertions();
var HJSON_list = [
'["DIV",{"id":"target"},[["P",{"class":" alice bob charlie has.dot","id":"bang"},["pewpewpew"]]]]',
@@ -536,69 +498,27 @@ define([
cb(dom.outerHTML === bodyText);
});
- var swap = function (str, dict) {
- return str.replace(/\{\{(.*?)\}\}/g, function (all, key) {
- return typeof dict[key] !== 'undefined'? dict[key] : all;
- });
- };
-
- var multiline = function (f) {
- var str;
- f.toString().replace(/\/\*([\s\S]*)\*\//g, function (all, out) {
- str = out;
- });
- return str || '';
- };
-
- var formatFailures = function () {
- var template = multiline(function () { /*
-
-Failed on test number {{test}} with error message:
-"{{message}}"
-
-
-
-The test returned:
-{{output}}
-
-
-
-
-*/});
- return failMessages.map(function (obj) {
- console.log(obj);
- return swap(template, obj);
- }).join("\n");
- };
-
- runASSERTS(function () {
- $("body").html(function (i, val) {
- var dict = {
- previous: val,
- totalAssertions: ASSERTS.length,
- passedAssertions: assertions,
- plural: (assertions === 1? '' : 's'),
- failMessages: formatFailures()
- };
-
- var SUCCESS = swap(multiline(function(){/*
-{{passedAssertions}} / {{totalAssertions}} test{{plural}} passed.
-
-{{failMessages}}
-
-
-
-
-{{previous}}
- */}), dict);
-
- var report = SUCCESS;
-
- return report;
- });
-
- var $report = $('.report');
- $report.addClass(failed?'failure':'success');
+ assert.run(function (state) {
+ var errors = state.errors;
+ var failed = errors.length;
+
+ Messages.assert_numberOfTestsPassed = "{0} / {1} tests passed.";
+
+ var statusClass = failed? 'failure': 'success';
+ $('body').prepend(h('div.report.' + statusClass, [
+ Messages._getKey('assert_numberOfTestsPassed', [
+ state.passed,
+ state.total
+ ]),
+ h('div.failures', errors.map(function (obj) {
+ return h('p.error', [
+ h('p', "Test number: " + obj.test),
+ h('p', "Error message: " + obj.message),
+ h('p', "Returned value: " + obj.output),
+ h('br'),
+ ]);
+ })),
+ ]));
if (failed) {
Test.failed();
diff --git a/www/checkup/index.html b/www/checkup/index.html
new file mode 100644
index 000000000..2309ffd56
--- /dev/null
+++ b/www/checkup/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/www/checkup/main.js b/www/checkup/main.js
new file mode 100644
index 000000000..9097894fc
--- /dev/null
+++ b/www/checkup/main.js
@@ -0,0 +1,49 @@
+define([
+ 'jquery',
+ '/api/config',
+ '/assert/assertions.js',
+ '/common/hyperscript.js',
+ '/customize/messages.js',
+
+ '/bower_components/tweetnacl/nacl-fast.min.js',
+ 'less!/customize/src/less2/pages/page-assert.less',
+], function ($, ApiConfig, Assertions, h, Messages) {
+ var assert = Assertions();
+
+ assert(function (cb) {
+ var c = ApiConfig;
+ cb(Boolean(c.httpUnsafeOrigin && c.httpSafeOrigin));
+ }, "Sandbox configuration: ensure that both httpUnsafeOrigin and httpSafeOrigin are defined"); // XXX
+
+ assert(function (cb) {
+ var c = ApiConfig;
+ return void cb(c.httpUnsafeOrigin !== c.httpSafeOrigin);
+ }, 'Sandbox configuration: httpUnsafeOrigin !== httpSafeOrigin'); // XXX
+
+ assert(function (cb) {
+ cb((window.location.origin + '/') === ApiConfig.httpUnsafeOrigin);
+ }, 'Sandbox configuration: loading via httpUnsafeOrigin'); // XXX
+
+ assert.run(function (state) {
+ var errors = state.errors;
+ var failed = errors.length;
+
+ Messages.assert_numberOfTestsPassed = "{0} / {1} tests passed.";
+
+ var statusClass = failed? 'failure': 'success';
+ $('body').prepend(h('div.report.' + statusClass, [
+ Messages._getKey('assert_numberOfTestsPassed', [
+ state.passed,
+ state.total
+ ]),
+ h('div.failures', errors.map(function (obj) {
+ return h('p.error', [
+ h('p', "Test number: " + obj.test),
+ h('p', "Error message: " + obj.message),
+ h('p', "Returned value: " + obj.output),
+ h('br'),
+ ]);
+ })),
+ ]));
+ });
+});