Skip to content

Commit

Permalink
wip: metadata encryption migration
Browse files Browse the repository at this point in the history
  • Loading branch information
mroz22 committed Aug 22, 2023
1 parent ff9e196 commit e016e27
Show file tree
Hide file tree
Showing 23 changed files with 1,025 additions and 500 deletions.
4 changes: 2 additions & 2 deletions packages/suite/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ module.exports = {
coverageThreshold: {
global: {
statements: 64,
branches: 54,
branches: 53.98,
functions: 62,
lines: 66,
lines: 65.93,
},
},
modulePathIgnorePatterns: [
Expand Down
219 changes: 168 additions & 51 deletions packages/suite/src/actions/suite/__fixtures__/metadataActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,36 +28,6 @@ const setDeviceMetadataKey = [
device: { state: 'device-state', metadata: { status: 'enabled' } },
},
},
{
description: `Master key cancelled`,
connect: {
success: false,
},
initialState: {
metadata: { enabled: true, providers: [] },
device: { state: 'device-state', connected: true, metadata: { status: 'disabled' } },
},
result: [
{
type: METADATA.SET_DEVICE_METADATA,
payload: {
metadata: {
status: 'cancelled',
},
},
},
{
type: SUITE.UPDATE_SELECTED_DEVICE,
payload: {
state: 'device-state',
metadata: { status: 'cancelled' },
},
},
{
type: METADATA.DISABLE,
},
],
},
{
description: `Master key successfully generated`,
initialState: {
Expand Down Expand Up @@ -101,9 +71,9 @@ const setDeviceMetadataKey = [
payload: {
deviceState: 'device-state',
metadata: {
1: {
2: {
fileName:
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f.mtdt',
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f_v2.mtdt',
aesKey: 'bc37a9a8c6cfa6ab2f75b384df2745895d75f2c572a195ccff59ae9958aaf0e8',
key: '20c8bf0701213cdcf4c2f56fd0096c1772322d42fb9c4d0ddf6bb122d713d2f3',
},
Expand All @@ -115,10 +85,10 @@ const setDeviceMetadataKey = [
type: SUITE.UPDATE_SELECTED_DEVICE,
payload: {
metadata: {
1: {
2: {
aesKey: 'bc37a9a8c6cfa6ab2f75b384df2745895d75f2c572a195ccff59ae9958aaf0e8',
fileName:
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f.mtdt',
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f_v2.mtdt',
key: '20c8bf0701213cdcf4c2f56fd0096c1772322d42fb9c4d0ddf6bb122d713d2f3',
},
status: 'enabled',
Expand All @@ -145,8 +115,9 @@ const setAccountMetadataKey = [
device: {
metadata: {
status: 'enabled',
key: '20c8bf0701213cdcf4c2f56fd0096c1772322d42fb9c4d0ddf6bb122d713d2f3',
providers: [],
2: {
key: '20c8bf0701213cdcf4c2f56fd0096c1772322d42fb9c4d0ddf6bb122d713d2f3',
},
},
},
},
Expand All @@ -157,7 +128,11 @@ const setAccountMetadataKey = [
},
result: {
metadata: {
key: 'xpub6CVKsQYXc9awxgV1tWbG4foDvdcnieK2JkbpPEBKB5WwAPKBZ1mstLbKVB4ov7QzxzjaxNK6EfmNY5Jsk2cG26EVcEkycGW4tchT2dyUhrx',
2: {
fileName:
'828652b66f2e6f919fbb7fe4c9609d4891ed531c6fac4c28441e53ebe577ac85_v2.mtdt',
aesKey: '9bc3736f0b45cd681854a724b5bba67b9da1e50bc9983fd2dd56e53e74b75480',
},
},
},
},
Expand All @@ -180,7 +155,7 @@ const addDeviceMetadata = [
device: {
state: 'device-state',
metadata: {
1: {
2: {
aesKey: 'eb0f1f0238c7fa8018c6101f4e887b871ce07b99d01d5ea57089b82f93149557',
fileName:
'039fe833cba71d84b7bf4c99d44468ee48e311e741cbfcd6daf5263f584ef9f6',
Expand Down Expand Up @@ -305,7 +280,7 @@ const addAccountMetadata = [
accounts: [
{
metadata: {
1: {
2: {
aesKey: '9bc3736f0b45cd681854a724b5bba67b9da1e50bc9983fd2dd56e53e74b75480',
fileName: 'filename-123',
},
Expand Down Expand Up @@ -354,8 +329,9 @@ const fetchMetadata = [
user: 'batman',
},
providers: [],
migration: { status: 'idle' },
},
device: { state: 'device-state', metadata: { status: 'cancelled' } },
device: { state: 'device-state', metadata: { status: 'disabled' } },
accounts: [],
},
params: 'device-state',
Expand Down Expand Up @@ -407,10 +383,10 @@ const connectProvider = [
type: '@metadata/add-provider',
payload: {
type: 'dropbox',
tokens: { refreshToken: 'token-haf-mnau' },
user: 'haf',
tokens: { refreshToken: 'token' },
user: 'power-user',
isCloud: true,
clientId: 'wg0yz2pbgjyhoda',
clientId: 'meow',
data: {},
},
},
Expand Down Expand Up @@ -533,11 +509,22 @@ const init = [
{
description: 'metadata already enabled',
initialState: {
device: { state: 'device-state', metadata: { status: 'enabled' } },
metadata: { enabled: true, selectedProvider: {}, providers: [] },
device: {
state: 'device-state',
connected: true,
metadata: { status: 'enabled' },
},
metadata: {
enabled: true,
selectedProvider: {},
providers: [],
migration: { status: 'idle' },
},
},
result: [
{ type: '@metadata/set-initiating', payload: true },
{ type: '@metadata/set-device-metadata' },
{ type: '@suite/update-selected-device' },
{
type: '@modal/open-user-context',
payload: { type: 'metadata-provider', decision: { promise: {} } },
Expand All @@ -557,17 +544,24 @@ const init = [
type: '@metadata/set-selected-provider',
payload: { dataType: 'labels', clientId: 'wg0yz2pbgjyhoda' },
},
{
type: '@metadata/set-migration-status',
},
{ type: '@metadata/set-initiating', payload: false },
],
},
{
description: 'metadata not enabled',
initialState: {
device: { state: 'device-state', connected: true, metadata: { status: 'disabled' } },
metadata: { enabled: false, providers: [], selectedProvider: {} },
metadata: {
enabled: false,
providers: [],
selectedProvider: {},
migration: { status: 'idle' },
},
suite: { online: true },
},
params: true,
result: [
{ type: '@metadata/enable' },
{ type: '@metadata/set-initiating', payload: true },
Expand All @@ -576,9 +570,9 @@ const init = [
payload: {
deviceState: 'device-state',
metadata: {
'1': {
'2': {
fileName:
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f.mtdt',
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f_v2.mtdt',
aesKey: 'bc37a9a8c6cfa6ab2f75b384df2745895d75f2c572a195ccff59ae9958aaf0e8',
key: '20c8bf0701213cdcf4c2f56fd0096c1772322d42fb9c4d0ddf6bb122d713d2f3',
},
Expand All @@ -592,9 +586,9 @@ const init = [
state: 'device-state',
connected: true,
metadata: {
'1': {
'2': {
fileName:
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f.mtdt',
'c734ff5106c4910aa3444f3672cc2c82d8cb4595f0527be672d8b100ed82908f_v2.mtdt',
aesKey: 'bc37a9a8c6cfa6ab2f75b384df2745895d75f2c572a195ccff59ae9958aaf0e8',
key: '20c8bf0701213cdcf4c2f56fd0096c1772322d42fb9c4d0ddf6bb122d713d2f3',
},
Expand All @@ -621,11 +615,132 @@ const init = [
type: '@metadata/set-selected-provider',
payload: { dataType: 'labels', clientId: 'wg0yz2pbgjyhoda' },
},
{
type: '@metadata/set-migration-status',
},
{ type: '@metadata/set-initiating', payload: false },
],
},
];

const getLabelableEntitiesDescriptors = [
{
description: 'device with state',
initialState: {
device: { state: 'device-state' },
},
result: ['device-state'],
},
{
description: 'device without state',
initialState: {
device: { state: undefined },
},
result: [],
},
{
description: 'accounts',
initialState: {
device: { state: 'meow' },
accounts: [
{
deviceState: 'meow',
key: 'account-key',
},
],
},
result: ['account-key', 'meow'],
},
];

const disposeMetadata = [
{
description: '',
initialState: {
device: { state: 'device-state', metadata: { status: 'enabled' } },
metadata: {
providers: [
{
type: 'dropbox',
data: {
'filename-123': {
outputLabels: {
TXID: {
0: 'Foo',
},
},
},
},
clientId: 'clientId',
},
],
selectedProvider: { labels: 'clientId' },
},
},
params: [],
result: {
metadata: {
providers: [
{
type: 'dropbox',
data: {},
clientId: 'clientId',
},
],
selectedProvider: {
labels: 'clientId',
},
},
},
},
{
description: 'keys',
initialState: {
device: {
state: 'device-state',
metadata: { status: 'enabled', 2: { fileName: 'foo', aesKey: 'bar' } },
},
metadata: {
providers: [
{
type: 'dropbox',
data: {
'filename-123': {
outputLabels: {
TXID: {
0: 'Foo',
},
},
},
},
clientId: 'clientId',
},
],
selectedProvider: { labels: 'clientId' },
},
accounts: [
{
deviceState: 'device-state',
key: 'account-key',
metadata: {
2: {
fileName: 'foo',
aesKey: 'bar',
},
},
},
],
},
params: [true],
result: {
suite: { device: { state: 'device-state', metadata: { status: 'disabled' } } },
wallet: {
accounts: [{ deviceState: 'device-state', key: 'account-key', metadata: {} }],
},
},
},
];

export {
setDeviceMetadataKey,
setAccountMetadataKey,
Expand All @@ -635,4 +750,6 @@ export {
connectProvider,
addMetadata,
init,
getLabelableEntitiesDescriptors,
disposeMetadata,
};
Loading

0 comments on commit e016e27

Please sign in to comment.