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.js b/test.js index b6c0192..ab2d02d 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('./tests/webworker.js')) + w.addEventListener('message', function (e) { + var arr = e.data[0] + t.notEqual(arrConst, arr, 'Array should contain random bytes') + t.end() + window.close() + }) + var arr = new Uint8Array(16) + w.postMessage([arr]) + }) +} diff --git a/tests/webworker.js b/tests/webworker.js new file mode 100644 index 0000000..72aa59a --- /dev/null +++ b/tests/webworker.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() + }) +}