mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2025-02-23 23:27:26 +01:00
ADD: Decrypt Storage test
This commit is contained in:
parent
29901ab399
commit
473aa7503c
1 changed files with 105 additions and 0 deletions
|
@ -117,3 +117,108 @@ it('Appstorage - encryptStorage & load encrypted storage works', async () => {
|
|||
assert.strictEqual(Storage3.wallets.length, 1);
|
||||
assert.strictEqual(Storage3.wallets[0].getLabel(), 'fakewallet');
|
||||
});
|
||||
|
||||
it('Appstorage - encryptStorage & load encrypted, then decryptStorage and load storage works', async () => {
|
||||
/** @type {AppStorage} */
|
||||
let Storage = new AppStorage();
|
||||
let w = new SegwitP2SHWallet();
|
||||
w.setLabel('testlabel');
|
||||
await w.generate();
|
||||
Storage.wallets.push(w);
|
||||
await Storage.saveToDisk();
|
||||
let isEncrypted = await Storage.storageIsEncrypted();
|
||||
assert.ok(!isEncrypted);
|
||||
await Storage.encryptStorage('password');
|
||||
isEncrypted = await Storage.storageIsEncrypted();
|
||||
assert.strictEqual(Storage.cachedPassword, 'password');
|
||||
assert.ok(isEncrypted);
|
||||
|
||||
// saved, now trying to load, using good password
|
||||
|
||||
let Storage2 = new AppStorage();
|
||||
isEncrypted = await Storage2.storageIsEncrypted();
|
||||
assert.ok(isEncrypted);
|
||||
let loadResult = await Storage2.loadFromDisk('password');
|
||||
assert.ok(loadResult);
|
||||
assert.strictEqual(Storage2.wallets.length, 1);
|
||||
assert.strictEqual(Storage2.wallets[0].getLabel(), 'testlabel');
|
||||
|
||||
// now trying to load, using bad password
|
||||
|
||||
Storage2 = new AppStorage();
|
||||
isEncrypted = await Storage2.storageIsEncrypted();
|
||||
assert.ok(isEncrypted);
|
||||
loadResult = await Storage2.loadFromDisk('passwordBAD');
|
||||
assert.ok(!loadResult);
|
||||
assert.strictEqual(Storage2.wallets.length, 0);
|
||||
|
||||
// now, trying case with adding data after decrypt.
|
||||
// saveToDisk should be handled correctly
|
||||
|
||||
Storage2 = new AppStorage();
|
||||
isEncrypted = await Storage2.storageIsEncrypted();
|
||||
assert.ok(isEncrypted);
|
||||
loadResult = await Storage2.loadFromDisk('password');
|
||||
assert.ok(loadResult);
|
||||
assert.strictEqual(Storage2.wallets.length, 1);
|
||||
assert.strictEqual(Storage2.wallets[0].getLabel(), 'testlabel');
|
||||
w = new SegwitP2SHWallet();
|
||||
w.setLabel('testlabel2');
|
||||
await w.generate();
|
||||
Storage2.wallets.push(w);
|
||||
assert.strictEqual(Storage2.wallets.length, 2);
|
||||
assert.strictEqual(Storage2.wallets[1].getLabel(), 'testlabel2');
|
||||
await Storage2.saveToDisk();
|
||||
// saved to encrypted storage after load. next load should be successfull
|
||||
Storage2 = new AppStorage();
|
||||
isEncrypted = await Storage2.storageIsEncrypted();
|
||||
assert.ok(isEncrypted);
|
||||
loadResult = await Storage2.loadFromDisk('password');
|
||||
assert.ok(loadResult);
|
||||
assert.strictEqual(Storage2.wallets.length, 2);
|
||||
assert.strictEqual(Storage2.wallets[0].getLabel(), 'testlabel');
|
||||
assert.strictEqual(Storage2.wallets[1].getLabel(), 'testlabel2');
|
||||
|
||||
// next, adding new `fake` storage which should be unlocked with `fake` password
|
||||
let createFakeStorageResult = await Storage2.createFakeStorage('fakePassword');
|
||||
assert.ok(createFakeStorageResult);
|
||||
assert.strictEqual(Storage2.wallets.length, 0);
|
||||
assert.strictEqual(Storage2.cachedPassword, 'fakePassword');
|
||||
w = new SegwitP2SHWallet();
|
||||
w.setLabel('fakewallet');
|
||||
await w.generate();
|
||||
Storage2.wallets.push(w);
|
||||
await Storage2.saveToDisk();
|
||||
// now, will try to load & decrypt with real password and with fake password
|
||||
// real:
|
||||
let Storage3 = new AppStorage();
|
||||
loadResult = await Storage3.loadFromDisk('password');
|
||||
assert.ok(loadResult);
|
||||
assert.strictEqual(Storage3.wallets.length, 2);
|
||||
assert.strictEqual(Storage3.wallets[0].getLabel(), 'testlabel');
|
||||
// fake:
|
||||
Storage3 = new AppStorage();
|
||||
loadResult = await Storage3.loadFromDisk('fakePassword');
|
||||
assert.ok(loadResult);
|
||||
assert.strictEqual(Storage3.wallets.length, 1);
|
||||
assert.strictEqual(Storage3.wallets[0].getLabel(), 'fakewallet');
|
||||
|
||||
// now will decrypt storage. label of wallet should be testlabel
|
||||
|
||||
const Storage4 = new AppStorage();
|
||||
isEncrypted = await Storage4.storageIsEncrypted();
|
||||
assert.ok(isEncrypted);
|
||||
loadResult = await Storage4.loadFromDisk('password');
|
||||
assert.ok(loadResult);
|
||||
const decryptStorageResult = await Storage4.decryptStorage('password');
|
||||
assert.ok(decryptStorageResult);
|
||||
|
||||
const Storage5 = new AppStorage();
|
||||
isEncrypted = await Storage5.storageIsEncrypted();
|
||||
assert.strictEqual(isEncrypted, false);
|
||||
const storage5loadResult = await Storage5.loadFromDisk();
|
||||
assert.ok(storage5loadResult);
|
||||
assert.strictEqual(Storage5.wallets.length, 2);
|
||||
assert.strictEqual(Storage5.wallets[0].getLabel(), 'testlabel');
|
||||
assert.strictEqual(Storage5.wallets[1].getLabel(), 'testlabel2');
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue