diff --git a/package.json b/package.json index f39ea47..31c7368 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "devDependencies": { "browser-run": "^4.0.2", "browserify": "^14.1.0", - "sodium-test": "^0.7.0" + "sodium-test": "^0.7.0", + "webworkify": "^1.4.0" }, "scripts": { "browser": "browserify test.js | browser-run", diff --git a/test-worker.js b/test-worker.js new file mode 100644 index 0000000..c60e117 --- /dev/null +++ b/test-worker.js @@ -0,0 +1,10 @@ +var sodium = require('.') + +module.exports = function (self) { + self.addEventListener('message', function (e) { + var arr = e.data[0] + sodium.randombytes_buf(arr) + self.postMessage(arr) + self.close() + }) +} diff --git a/test.js b/test.js index b6c0192..907afa2 100644 --- a/test.js +++ b/test.js @@ -1,3 +1,18 @@ require('sodium-test')(require('.')) -if (typeof window !== 'undefined') window.close() +if (typeof window !== 'undefined') { + var test = require('tape') + var arrConst = new Uint8Array(16) + test('randombytes works in web worker context', function (t) { + var work = require('webworkify') + var w = work(require('./test-worker.js')) + w.addEventListener('message', function (e) { + var arr = e.data[0] + t.notEqual(arrConst, arr, '') + t.end() + window.close() + }) + var arr = new Uint8Array(16) + w.postMessage([arr]) + }) +}