[13857] Extend integration tests to recover multiaccount from seed phrase

This commit is contained in:
Erik Seppanen 2022-09-06 16:22:47 -04:00
parent 33aa595877
commit b05787b0b2
No known key found for this signature in database
GPG Key ID: E466704B2D98E17D
3 changed files with 45 additions and 3 deletions

View File

@ -26,6 +26,7 @@
:View {} :View {}
:RefreshControl {} :RefreshControl {}
:AppState {} :AppState {}
:Alert {:alert (fn [])}
:FlatList {} :FlatList {}
:SectionList {} :SectionList {}
:Text {} :Text {}
@ -136,6 +137,7 @@
:setDefaultOptions identity :setDefaultOptions identity
:setRoot identity :setRoot identity
:dismissOverlay #(js/Promise.resolve) :dismissOverlay #(js/Promise.resolve)
:showOverlay identity
:setLazyComponentRegistrator identity :setLazyComponentRegistrator identity
:pop identity :pop identity
:push identity :push identity

View File

@ -4,6 +4,7 @@
[clojure.string :as string] [clojure.string :as string]
[re-frame.core :as rf] [re-frame.core :as rf]
status-im.events status-im.events
[status-im.utils.security :as security]
[status-im.multiaccounts.logout.core :as logout] [status-im.multiaccounts.logout.core :as logout]
[status-im.transport.core :as transport] [status-im.transport.core :as transport]
status-im.subs ;;so integration tests can run independently status-im.subs ;;so integration tests can run independently
@ -174,5 +175,37 @@
(rf-test/wait-for [::logout/logout-method] ; we need to logout to make sure the node is not in an inconsistent state between tests (rf-test/wait-for [::logout/logout-method] ; we need to logout to make sure the node is not in an inconsistent state between tests
(assert-logout))))))))) (assert-logout)))))))))
(def multiaccount-name "Narrow Frail Lemming")
(def multiaccount-mnemonic "tattoo ramp health green tongue universe style vapor become tape lava reason")
(def multiaccount-key-uid "0x694b8229524820a3a00a6e211141561d61b251ad99d6b65daf82a73c9a57697b")
(deftest recover-multiaccount-test
(log/info "========= recover-multiaccount-test ==================")
(rf-test/run-test-async
(initialize-app!)
(rf-test/wait-for
[:status-im.init.core/initialize-view]
(rf/dispatch-sync [:init-root :onboarding])
(rf/dispatch-sync [:multiaccounts.recover.ui/recover-multiaccount-button-pressed])
(rf/dispatch-sync [:status-im.multiaccounts.recover.core/enter-phrase-pressed])
(rf/dispatch-sync [:multiaccounts.recover/enter-phrase-input-changed
(security/mask-data multiaccount-mnemonic)])
(rf/dispatch [:multiaccounts.recover/enter-phrase-next-pressed])
(rf-test/wait-for
[:status-im.multiaccounts.recover.core/import-multiaccount-success]
(rf/dispatch-sync [:multiaccounts.recover/re-encrypt-pressed])
(rf/dispatch [:multiaccounts.recover/enter-password-next-pressed password])
(rf-test/wait-for
[:status-im.multiaccounts.recover.core/store-multiaccount-success]
(let [multiaccount @(rf/subscribe [:multiaccount])] ; assert multiaccount is recovered
(is (= multiaccount-key-uid (:key-uid multiaccount)))
(is (= multiaccount-name (:name multiaccount))))
(rf-test/wait-for ; wait for login
[::transport/messenger-started]
(assert-messenger-started)
(logout!)
(rf-test/wait-for [::logout/logout-method] ; we need to logout to make sure the node is not in an inconsistent state between tests
(assert-logout))))))))
(comment (comment
(run-tests)) (run-tests))

View File

@ -48,7 +48,6 @@
settings settings
config config
accounts-data)) accounts-data))
:logout (fn [] :logout (fn []
(.logout native-status)) (.logout native-status))
:generateAliasAndIdenticonAsync (fn [seed callback] :generateAliasAndIdenticonAsync (fn [seed callback]
@ -60,6 +59,11 @@
(.multiAccountGenerateAndDeriveAddresses (.multiAccountGenerateAndDeriveAddresses
native-status native-status
json))) json)))
:multiAccountImportMnemonic (fn [json callback]
(callback
(.multiAccountImportMnemonic
native-status
json)))
:multiAccountLoadAccount (fn [json callback] :multiAccountLoadAccount (fn [json callback]
(callback (callback
(.multiAccountLoadAccount (.multiAccountLoadAccount
@ -75,8 +79,11 @@
(.initKeystore (.initKeystore
native-status native-status
(str test-dir "/keystore/" key-uid)))) (str test-dir "/keystore/" key-uid))))
:identicon (fn [pk] :identicon (fn [pk]
(.identicon native-status pk)) (.identicon native-status pk))
:validateMnemonic (fn [json callback]
(callback
(.validateMnemonic
native-status
json)))
:startLocalNotifications identity})) :startLocalNotifications identity}))