mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-29 07:16:36 +01:00
4c88961a39
* fix: remove obsolete network controller state properties * address comments * address comments * address comments * Add additional precautions for data mutation in migration tests --------- Co-authored-by: Mark Stacey <markjstacey@gmail.com>
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,
|
|
});
|
|
});
|
|
});
|