mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-28 23:06:37 +01:00
100 lines
3.1 KiB
TypeScript
100 lines
3.1 KiB
TypeScript
|
import { NetworkType, toHex } from '@metamask/controller-utils';
|
||
|
import { NetworkStatus } from '@metamask/network-controller';
|
||
|
import { cloneDeep } from 'lodash';
|
||
|
import { version as currentStateVersion, migrate } from './092.2';
|
||
|
|
||
|
const TEST_NETWORK_CONTROLLER_STATE = {
|
||
|
networkId: 'network-id',
|
||
|
networkStatus: NetworkStatus.Available,
|
||
|
providerConfig: {
|
||
|
type: NetworkType.rpc,
|
||
|
chainId: toHex(42),
|
||
|
nickname: 'Funky Town Chain',
|
||
|
ticker: 'ETH',
|
||
|
id: 'test-network-client-id',
|
||
|
},
|
||
|
networkDetails: { EIPS: {} },
|
||
|
networkConfigurations: {
|
||
|
'network-configuration-id-1': {
|
||
|
chainId: toHex(42),
|
||
|
nickname: 'Localhost 8545',
|
||
|
rpcPrefs: {},
|
||
|
rpcUrl: 'http://localhost:8545',
|
||
|
ticker: 'ETH',
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const anyPreviousStateVersion = 91;
|
||
|
|
||
|
describe('migration #96', () => {
|
||
|
afterEach(() => {
|
||
|
jest.resetAllMocks();
|
||
|
});
|
||
|
|
||
|
it('should update the state version number in the appropriate metadata field', async () => {
|
||
|
const originalVersionedState = {
|
||
|
meta: { version: anyPreviousStateVersion },
|
||
|
data: {},
|
||
|
};
|
||
|
|
||
|
const newStorage = await migrate(cloneDeep(originalVersionedState));
|
||
|
|
||
|
expect(newStorage.meta).toStrictEqual({ version: currentStateVersion });
|
||
|
});
|
||
|
|
||
|
it('should return state unaltered if there is no network controller state', async () => {
|
||
|
const originalMetaMaskState = {
|
||
|
anotherController: 'another-controller-state',
|
||
|
};
|
||
|
const originalVersionedState = {
|
||
|
meta: { version: anyPreviousStateVersion },
|
||
|
data: originalMetaMaskState,
|
||
|
};
|
||
|
|
||
|
const updatedVersionedState = await migrate(
|
||
|
cloneDeep(originalVersionedState),
|
||
|
);
|
||
|
expect(updatedVersionedState.data).toStrictEqual(originalMetaMaskState);
|
||
|
});
|
||
|
|
||
|
it('should return unaltered state if there are no obsolete network controller state properties', async () => {
|
||
|
const originalMetaMaskState = {
|
||
|
anotherController: 'another-controller-state',
|
||
|
NetworkController: TEST_NETWORK_CONTROLLER_STATE,
|
||
|
};
|
||
|
const originalVersionedState = {
|
||
|
meta: { version: anyPreviousStateVersion },
|
||
|
data: originalMetaMaskState,
|
||
|
};
|
||
|
|
||
|
const updatedVersionedState = await migrate(
|
||
|
cloneDeep(originalVersionedState),
|
||
|
);
|
||
|
expect(updatedVersionedState.data).toStrictEqual(originalMetaMaskState);
|
||
|
});
|
||
|
|
||
|
it('should return updated state without obsolete network controller state properties', async () => {
|
||
|
const originalMetaMaskState = {
|
||
|
anotherController: 'another-controller-state',
|
||
|
NetworkController: {
|
||
|
...TEST_NETWORK_CONTROLLER_STATE,
|
||
|
someSortOfRogueObsoleteStateProperty: 'exists',
|
||
|
},
|
||
|
};
|
||
|
const originalVersionedState = {
|
||
|
meta: { version: anyPreviousStateVersion },
|
||
|
data: originalMetaMaskState,
|
||
|
};
|
||
|
|
||
|
const updatedVersionedState = await migrate(
|
||
|
cloneDeep(originalVersionedState),
|
||
|
);
|
||
|
expect(updatedVersionedState.data).not.toStrictEqual(originalMetaMaskState);
|
||
|
expect(updatedVersionedState.data).toStrictEqual({
|
||
|
anotherController: 'another-controller-state',
|
||
|
NetworkController: TEST_NETWORK_CONTROLLER_STATE,
|
||
|
});
|
||
|
});
|
||
|
});
|