mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-25 11:28:51 +01:00
4f34e72085
* Backup user data Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Tests for prependZero (utils.js) Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix advancedtab test Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> backup controller tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Backup controller don't have a store. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Restore from file. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Advanced Tab tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fix Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> e2e tests for backup unit tests for restore. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix comments on PR. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> restore style Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> We should move the exportAsFile to a utility file in the shared/ directory Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Move export as file to shared folder Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Refactor create download folder methods Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Move the backup/restore buttons closer to 3box Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Change descriptions Add to search Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> refactor code to use if instead of && Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Restore button should change cursor to pointer. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix restore not uploading same file twice. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Do not backup these items in preferences identities lostIdentities selectedAddress Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Only update what is needed. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Fixed test for search Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * remove txError as it currently does nothing. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Remove dispatch, not needed since we're not dispatching any actions. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Event should be title case. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Make backup/restore normal async functions rename event as per product suggestion. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Use success Actionable message for success message and danger for error message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * change event name to match with backup Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * fix e2e Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>
119 lines
5.0 KiB
JavaScript
119 lines
5.0 KiB
JavaScript
import { strict as assert } from 'assert';
|
|
import sinon from 'sinon';
|
|
import BackupController from './backup';
|
|
|
|
function getMockController() {
|
|
const mcState = {
|
|
getSelectedAddress: sinon.stub().returns('0x01'),
|
|
selectedAddress: '0x01',
|
|
identities: {
|
|
'0x295e26495CEF6F69dFA69911d9D8e4F3bBadB89B': {
|
|
address: '0x295e26495CEF6F69dFA69911d9D8e4F3bBadB89B',
|
|
lastSelected: 1655380342907,
|
|
name: 'Account 3',
|
|
},
|
|
},
|
|
lostIdentities: {
|
|
'0xfd59bbe569376e3d3e4430297c3c69ea93f77435': {
|
|
address: '0xfd59bbe569376e3d3e4430297c3c69ea93f77435',
|
|
lastSelected: 1655379648197,
|
|
name: 'Ledger 1',
|
|
},
|
|
},
|
|
update: (store) => (mcState.store = store),
|
|
};
|
|
|
|
mcState.store = {
|
|
getState: sinon.stub().returns(mcState),
|
|
updateState: (store) => (mcState.store = store),
|
|
};
|
|
|
|
return mcState;
|
|
}
|
|
|
|
const jsonData = `{"preferences":{"frequentRpcListDetail":[{"chainId":"0x539","nickname":"Localhost 8545","rpcPrefs":{},"rpcUrl":"http://localhost:8545","ticker":"ETH"},{"chainId":"0x38","nickname":"Binance Smart Chain Mainnet","rpcPrefs":{"blockExplorerUrl":"https://bscscan.com"},"rpcUrl":"https://bsc-dataseed1.binance.org","ticker":"BNB"},{"chainId":"0x61","nickname":"Binance Smart Chain Testnet","rpcPrefs":{"blockExplorerUrl":"https://testnet.bscscan.com"},"rpcUrl":"https://data-seed-prebsc-1-s1.binance.org:8545","ticker":"tBNB"},{"chainId":"0x89","nickname":"Polygon Mainnet","rpcPrefs":{"blockExplorerUrl":"https://polygonscan.com"},"rpcUrl":"https://polygon-rpc.com","ticker":"MATIC"}],"useBlockie":false,"useNonceField":false,"usePhishDetect":true,"dismissSeedBackUpReminder":false,"useTokenDetection":false,"useCollectibleDetection":false,"openSeaEnabled":false,"advancedGasFee":null,"featureFlags":{"sendHexData":true,"showIncomingTransactions":true},"knownMethodData":{},"currentLocale":"en","forgottenPassword":false,"preferences":{"hideZeroBalanceTokens":false,"showFiatInTestnets":false,"showTestNetworks":true,"useNativeCurrencyAsPrimaryCurrency":true},"ipfsGateway":"dweb.link","infuraBlocked":false,"ledgerTransportType":"webhid","theme":"light","customNetworkListEnabled":false,"textDirection":"auto"},"addressBook":{"addressBook":{"0x61":{"0x42EB768f2244C8811C63729A21A3569731535f06":{"address":"0x42EB768f2244C8811C63729A21A3569731535f06","chainId":"0x61","isEns":false,"memo":"","name":""}}}}}`;
|
|
|
|
describe('BackupController', function () {
|
|
const getBackupController = () => {
|
|
return new BackupController({
|
|
preferencesController: getMockController(),
|
|
addressBookController: getMockController(),
|
|
trackMetaMetricsEvent: sinon.stub(),
|
|
});
|
|
};
|
|
|
|
describe('constructor', function () {
|
|
it('should setup correctly', async function () {
|
|
const backupController = getBackupController();
|
|
const selectedAddress =
|
|
backupController.preferencesController.getSelectedAddress();
|
|
assert.equal(selectedAddress, '0x01');
|
|
});
|
|
|
|
it('should restore backup', async function () {
|
|
const backupController = getBackupController();
|
|
backupController.restoreUserData(jsonData);
|
|
// check Preferences backup
|
|
assert.equal(
|
|
backupController.preferencesController.store.frequentRpcListDetail[0]
|
|
.chainId,
|
|
'0x539',
|
|
);
|
|
assert.equal(
|
|
backupController.preferencesController.store.frequentRpcListDetail[1]
|
|
.chainId,
|
|
'0x38',
|
|
);
|
|
// make sure identities are not lost after restore
|
|
assert.equal(
|
|
backupController.preferencesController.store.identities[
|
|
'0x295e26495CEF6F69dFA69911d9D8e4F3bBadB89B'
|
|
].lastSelected,
|
|
1655380342907,
|
|
);
|
|
assert.equal(
|
|
backupController.preferencesController.store.identities[
|
|
'0x295e26495CEF6F69dFA69911d9D8e4F3bBadB89B'
|
|
].name,
|
|
'Account 3',
|
|
);
|
|
assert.equal(
|
|
backupController.preferencesController.store.lostIdentities[
|
|
'0xfd59bbe569376e3d3e4430297c3c69ea93f77435'
|
|
].lastSelected,
|
|
1655379648197,
|
|
);
|
|
assert.equal(
|
|
backupController.preferencesController.store.lostIdentities[
|
|
'0xfd59bbe569376e3d3e4430297c3c69ea93f77435'
|
|
].name,
|
|
'Ledger 1',
|
|
);
|
|
// make sure selected address is not lost after restore
|
|
assert.equal(
|
|
backupController.preferencesController.store.selectedAddress,
|
|
'0x01',
|
|
);
|
|
// check address book backup
|
|
assert.equal(
|
|
backupController.addressBookController.store.addressBook['0x61'][
|
|
'0x42EB768f2244C8811C63729A21A3569731535f06'
|
|
].chainId,
|
|
'0x61',
|
|
);
|
|
assert.equal(
|
|
backupController.addressBookController.store.addressBook['0x61'][
|
|
'0x42EB768f2244C8811C63729A21A3569731535f06'
|
|
].address,
|
|
'0x42EB768f2244C8811C63729A21A3569731535f06',
|
|
);
|
|
assert.equal(
|
|
backupController.addressBookController.store.addressBook['0x61'][
|
|
'0x42EB768f2244C8811C63729A21A3569731535f06'
|
|
].isEns,
|
|
false,
|
|
);
|
|
});
|
|
});
|
|
});
|