diff options
author | Dan Finlay <542863+danfinlay@users.noreply.github.com> | 2018-03-07 02:32:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-07 02:32:47 +0800 |
commit | a4bd7992cd960b105f842e0e34637f2675a6665f (patch) | |
tree | 65f3afb32aa81429a6c9a4f7a5d7b32e47a75a85 /test/unit/edge-encryptor-test.js | |
parent | d3a0a27c0caafb066e66e444d6fbe71243bd35f6 (diff) | |
parent | dd9cac69aed9a16f9bcf738e90dcd2c864f07bb5 (diff) | |
download | tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.tar tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.tar.gz tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.tar.bz2 tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.tar.lz tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.tar.xz tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.tar.zst tangerine-wallet-browser-a4bd7992cd960b105f842e0e34637f2675a6665f.zip |
Merge branch 'master' into ImportAccountMessageV2
Diffstat (limited to 'test/unit/edge-encryptor-test.js')
-rw-r--r-- | test/unit/edge-encryptor-test.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/test/unit/edge-encryptor-test.js b/test/unit/edge-encryptor-test.js new file mode 100644 index 000000000..d3f014d74 --- /dev/null +++ b/test/unit/edge-encryptor-test.js @@ -0,0 +1,101 @@ +const assert = require('assert') + +const EdgeEncryptor = require('../../app/scripts/edge-encryptor') + +var password = 'passw0rd1' +var data = 'some random data' + +global.crypto = global.crypto || { + getRandomValues: function (array) { + for (let i = 0; i < array.length; i++) { + array[i] = Math.random() * 100 + } + return array + } +} + +describe('EdgeEncryptor', function () { + + const edgeEncryptor = new EdgeEncryptor() + describe('encrypt', function () { + + it('should encrypt the data.', function (done) { + edgeEncryptor.encrypt(password, data) + .then(function (encryptedData) { + assert.notEqual(data, encryptedData) + assert.notEqual(encryptedData.length, 0) + done() + }).catch(function (err) { + done(err) + }) + }) + + it('should return proper format.', function (done) { + edgeEncryptor.encrypt(password, data) + .then(function (encryptedData) { + let encryptedObject = JSON.parse(encryptedData) + assert.ok(encryptedObject.data, 'there is no data') + assert.ok(encryptedObject.iv && encryptedObject.iv.length != 0, 'there is no iv') + assert.ok(encryptedObject.salt && encryptedObject.salt.length != 0, 'there is no salt') + done() + }).catch(function (err) { + done(err) + }) + }) + + it('should not return the same twice.', function (done) { + + const encryptPromises = [] + encryptPromises.push(edgeEncryptor.encrypt(password, data)) + encryptPromises.push(edgeEncryptor.encrypt(password, data)) + + Promise.all(encryptPromises).then((encryptedData) => { + assert.equal(encryptedData.length, 2) + assert.notEqual(encryptedData[0], encryptedData[1]) + assert.notEqual(encryptedData[0].length, 0) + assert.notEqual(encryptedData[1].length, 0) + done() + }) + }) + }) + + describe('decrypt', function () { + it('should be able to decrypt the encrypted data.', function (done) { + + edgeEncryptor.encrypt(password, data) + .then(function (encryptedData) { + edgeEncryptor.decrypt(password, encryptedData) + .then(function (decryptedData) { + assert.equal(decryptedData, data) + done() + }) + .catch(function (err) { + done(err) + }) + }) + .catch(function (err) { + done(err) + }) + }) + + it('cannot decrypt the encrypted data with wrong password.', function (done) { + + edgeEncryptor.encrypt(password, data) + .then(function (encryptedData) { + edgeEncryptor.decrypt('wrong password', encryptedData) + .then(function (decryptedData) { + assert.fail('could decrypt with wrong password') + done() + }) + .catch(function (err) { + assert.ok(err instanceof Error) + assert.equal(err.message, 'Incorrect password') + done() + }) + }) + .catch(function (err) { + done(err) + }) + }) + }) +}) |