diff --git a/client/__mocks__/ocean-mock.ts b/client/__mocks__/ocean-mock.ts
new file mode 100644
index 0000000..af44f70
--- /dev/null
+++ b/client/__mocks__/ocean-mock.ts
@@ -0,0 +1,25 @@
+const oceanMock = {
+ ocean: {
+ accounts: {
+ list: () => ['xxx', 'xxx']
+ },
+ aquarius: {
+ queryMetadata: () => {
+ return {
+ results: [],
+ totalResults: 1,
+ totalPages: 1
+ }
+ }
+ },
+ keeper: {
+ conditions: {
+ accessSecretStoreCondition: {
+ getGrantedDidByConsumer: jest.fn()
+ }
+ }
+ }
+ }
+}
+
+export default oceanMock
diff --git a/client/__mocks__/user-mock.ts b/client/__mocks__/user-mock.ts
index 5cda7ea..eabdfd5 100644
--- a/client/__mocks__/user-mock.ts
+++ b/client/__mocks__/user-mock.ts
@@ -1,3 +1,5 @@
+import oceanMock from './ocean-mock'
+
const userMock = {
isLogged: false,
isLoading: false,
@@ -5,11 +7,7 @@ const userMock = {
isOceanNetwork: false,
account: '',
web3: {},
- ocean: {
- aquarius: {
- queryMetadata: jest.fn()
- }
- },
+ ...oceanMock,
balance: { eth: 0, ocn: 0 },
network: '',
requestFromFaucet: jest.fn(),
@@ -24,11 +22,7 @@ const userMockConnected = {
isOceanNetwork: true,
account: '0xxxxxx',
web3: {},
- ocean: {
- aquarius: {
- queryMetadata: jest.fn()
- }
- },
+ ...oceanMock,
balance: { eth: 0, ocn: 0 },
network: '',
requestFromFaucet: jest.fn(),
diff --git a/client/package-lock.json b/client/package-lock.json
index f3465bb..5e20e97 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -3487,7 +3487,8 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
@@ -3511,13 +3512,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -3534,19 +3537,22 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -3677,7 +3683,8 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -3691,6 +3698,7 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -3707,6 +3715,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
+ "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -3715,13 +3724,15 @@
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"minipass": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -3742,6 +3753,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -3830,7 +3842,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -3844,6 +3857,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -3939,7 +3953,8 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -3981,6 +3996,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -4002,6 +4018,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
+ "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -4050,13 +4067,15 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
- "dev": true
+ "dev": true,
+ "optional": true
}
}
},
@@ -8745,7 +8764,8 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
@@ -8769,13 +8789,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -8792,19 +8814,22 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -8935,7 +8960,8 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -8949,6 +8975,7 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -8965,6 +8992,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
+ "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -8973,13 +9001,15 @@
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"minipass": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -9000,6 +9030,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -9088,7 +9119,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -9102,6 +9134,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -9197,7 +9230,8 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -9239,6 +9273,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -9260,6 +9295,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
+ "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -9308,13 +9344,15 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
- "dev": true
+ "dev": true,
+ "optional": true
}
}
}
@@ -16507,7 +16545,7 @@
"requires": {
"underscore": "1.8.3",
"web3-core-helpers": "1.0.0-beta.37",
- "websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2"
+ "websocket": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible"
}
},
"web3-shh": {
diff --git a/client/src/App.test.tsx b/client/src/App.test.tsx
index 8c85a79..0f22fcd 100644
--- a/client/src/App.test.tsx
+++ b/client/src/App.test.tsx
@@ -2,7 +2,7 @@ import React from 'react'
import { render } from 'react-testing-library'
import App from './App'
import { User } from './context'
-import { userMock } from '../__mocks__/user-mock'
+import { userMock, userMockConnected } from '../__mocks__/user-mock'
describe('App', () => {
it('should be able to run tests', () => {
@@ -10,7 +10,11 @@ describe('App', () => {
})
it('renders without crashing', () => {
- const { container } = render()
+ const { container } = render(
+
+
+
+ )
expect(container.firstChild).toBeInTheDocument()
})
diff --git a/client/src/Routes.test.tsx b/client/src/Routes.test.tsx
index 5ae671b..43c63e8 100644
--- a/client/src/Routes.test.tsx
+++ b/client/src/Routes.test.tsx
@@ -2,13 +2,17 @@ import React from 'react'
import { BrowserRouter as Router } from 'react-router-dom'
import { render } from 'react-testing-library'
import Routes from './Routes'
+import { User } from './context'
+import { userMockConnected } from '../__mocks__/user-mock'
describe('Routes', () => {
it('renders without crashing', () => {
const { container } = render(
-
-
-
+
+
+
+
+
)
expect(container.firstChild).toBeInTheDocument()
})
diff --git a/client/src/components/organisms/AssetsLatest.test.tsx b/client/src/components/organisms/AssetsLatest.test.tsx
index 978045b..69aacd7 100644
--- a/client/src/components/organisms/AssetsLatest.test.tsx
+++ b/client/src/components/organisms/AssetsLatest.test.tsx
@@ -1,14 +1,18 @@
import React from 'react'
+import { BrowserRouter } from 'react-router-dom'
import { render } from 'react-testing-library'
import AssetsLatest from './AssetsLatest'
-import { BrowserRouter } from 'react-router-dom'
+import { User } from '../../context'
+import { userMockConnected } from '../../../__mocks__/user-mock'
describe('AssetsLatest', () => {
it('renders without crashing', () => {
const { container } = render(
-
-
-
+
+
+
+
+
)
expect(container.firstChild).toBeInTheDocument()
})
diff --git a/client/src/components/organisms/ChannelTeaser.test.tsx b/client/src/components/organisms/ChannelTeaser.test.tsx
index c270a41..c92dce3 100644
--- a/client/src/components/organisms/ChannelTeaser.test.tsx
+++ b/client/src/components/organisms/ChannelTeaser.test.tsx
@@ -2,13 +2,17 @@ import React from 'react'
import { render } from 'react-testing-library'
import ChannelTeaser from './ChannelTeaser'
import { BrowserRouter } from 'react-router-dom'
+import { User } from '../../context'
+import { userMockConnected } from '../../../__mocks__/user-mock'
describe('ChannelTeaser', () => {
it('renders without crashing', () => {
const { container } = render(
-
-
-
+
+
+
+
+
)
expect(container.firstChild).toBeInTheDocument()
})
diff --git a/client/src/components/templates/Asset/AssetFile.test.tsx b/client/src/components/templates/Asset/AssetFile.test.tsx
index c34abc4..a4e2307 100644
--- a/client/src/components/templates/Asset/AssetFile.test.tsx
+++ b/client/src/components/templates/Asset/AssetFile.test.tsx
@@ -7,6 +7,7 @@ import { StateMock } from '@react-mock/state'
import ReactGA from 'react-ga'
import { User } from '../../../context'
import AssetFile, { messages } from './AssetFile'
+import { userMockConnected } from '../../../../__mocks__/user-mock'
const file = {
index: 0,
@@ -15,22 +16,7 @@ const file = {
contentLength: 100
}
-const ddo = ({ id: 'xxx' } as any) as DDO
-
-const contextConnectedMock = {
- isLogged: true,
- isLoading: false,
- isWeb3: true,
- isOceanNetwork: true,
- account: '',
- web3: {},
- ocean: {},
- balance: { eth: 0, ocn: 0 },
- network: '',
- requestFromFaucet: () => {},
- unlockAccounts: () => {},
- message: ''
-}
+const ddo = ({ id: 'xxx', findServiceByType: jest.fn() } as any) as DDO
ReactGA.initialize('foo', { testMode: true })
@@ -47,7 +33,7 @@ describe('AssetFile', () => {
it('button to be enabled when connected', async () => {
const { getByText } = render(
-
+
)
diff --git a/client/src/components/templates/Asset/AssetFile.tsx b/client/src/components/templates/Asset/AssetFile.tsx
index 5fd7ca7..263f274 100644
--- a/client/src/components/templates/Asset/AssetFile.tsx
+++ b/client/src/components/templates/Asset/AssetFile.tsx
@@ -59,16 +59,21 @@ export default class AssetFile extends PureComponent<
const accounts = await ocean.accounts.list()
const service = ddo.findServiceByType('Access')
- const agreements = await ocean.keeper.conditions.accessSecretStoreCondition.getGrantedDidByConsumer(accounts[0].id)
- const agreement = agreements.find((element: any) => {return element.did === ddo.id})
+ const agreements = await ocean.keeper.conditions.accessSecretStoreCondition.getGrantedDidByConsumer(
+ accounts[0].id
+ )
+ const agreement = agreements.find((element: any) => {
+ return element.did === ddo.id
+ })
let agreementId
+
if (agreement) {
- agreementId = agreement.agreementId
+ ;({ agreementId } = agreement)
} else {
agreementId = await ocean.assets
- .order(ddo.id, service.serviceDefinitionId, accounts[0])
- .next((step: number) => this.setState({ step }))
+ .order(ddo.id, service.serviceDefinitionId, accounts[0])
+ .next((step: number) => this.setState({ step }))
}
// manually add another step here for better UX
@@ -89,7 +94,7 @@ export default class AssetFile extends PureComponent<
})
this.setState({ isLoading: false })
} catch (error) {
- Logger.log('error', error.message)
+ Logger.error('error', error.message)
this.setState({
isLoading: false,
error: `${error.message}. Sorry about that, can you try again?`
diff --git a/client/src/components/templates/Channel.test.tsx b/client/src/components/templates/Channel.test.tsx
index c16c84b..cad7808 100644
--- a/client/src/components/templates/Channel.test.tsx
+++ b/client/src/components/templates/Channel.test.tsx
@@ -3,38 +3,14 @@ import { render } from 'react-testing-library'
import Channel from './Channel'
import { User } from '../../context'
import { createMemoryHistory } from 'history'
+import { userMockConnected } from '../../../__mocks__/user-mock'
describe('Channel', () => {
it('renders without crashing', () => {
const history = createMemoryHistory()
const { container } = render(
- {
- return {
- results: [],
- totalResults: 1,
- totalPages: 1
- }
- }
- }
- },
- balance: { eth: 0, ocn: 0 },
- network: '',
- requestFromFaucet: () => {},
- unlockAccounts: () => {},
- message: ''
- }}
- >
+
{
it('renders without crashing', () => {
const { container } = render(
-
-
-
+
+
+
+
+
)
expect(container.firstChild).toBeInTheDocument()
})
diff --git a/client/src/routes/Search.test.tsx b/client/src/routes/Search.test.tsx
index cf2819c..584ab94 100644
--- a/client/src/routes/Search.test.tsx
+++ b/client/src/routes/Search.test.tsx
@@ -4,38 +4,14 @@ import Search from './Search'
import { User } from '../context'
import { createMemoryHistory } from 'history'
import { BrowserRouter as Router } from 'react-router-dom'
+import { userMockConnected } from '../../__mocks__/user-mock'
describe('Search', () => {
it('renders without crashing', () => {
const history = createMemoryHistory()
const { container } = render(
- {
- return {
- results: [],
- totalResults: 1,
- totalPages: 1
- }
- }
- }
- },
- balance: { eth: 0, ocn: 0 },
- network: '',
- requestFromFaucet: () => {},
- unlockAccounts: () => {},
- message: ''
- }}
- >
+