[#9902] Make Sign out go to Multiaccount overview 'Your keys' screen

Fix e2e tests

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
This commit is contained in:
Gheorghe Pinzaru 2020-01-29 10:29:56 +03:00
parent b2a70c8331
commit 0a7dc8fdd2
No known key found for this signature in database
GPG Key ID: C9A094959935A952
4 changed files with 27 additions and 15 deletions

View File

@ -32,18 +32,24 @@
:view-id view-id)})
(fx/defn initialize-views
[cofx]
[cofx {:keys [logout?]}]
(let [{{:multiaccounts/keys [multiaccounts] :as db} :db} cofx]
(if (empty? multiaccounts)
(cond
(empty? multiaccounts)
(navigation/navigate-to-cofx cofx :intro nil)
logout?
(navigation/navigate-to-cofx cofx :multiaccounts nil)
:else
(let [{:keys [key-uid public-key photo-path name]} (first (#(sort-by :last-sign-in > %) (vals multiaccounts)))]
(multiaccounts.login/open-login cofx key-uid photo-path name public-key)))))
(fx/defn initialize-multiaccounts
{:events [::initialize-multiaccounts]}
[{:keys [db] :as cofx} all-multiaccounts]
[{:keys [db] :as cofx} all-multiaccounts {:keys [logout?]}]
(let [multiaccounts (reduce (fn [acc {:keys [key-uid keycard-pairing]
:as multiaccount}]
:as multiaccount}]
(-> (assoc acc key-uid multiaccount)
(assoc-in [key-uid :keycard-pairing]
(when-not (string/blank? keycard-pairing)
@ -52,14 +58,14 @@
all-multiaccounts)]
(fx/merge cofx
{:db (assoc db :multiaccounts/multiaccounts multiaccounts)}
(initialize-views))))
(initialize-views {:logout? logout?}))))
(fx/defn start-app [cofx]
(fx/merge cofx
{:get-supported-biometric-auth nil
::init-keystore nil
::restore-native-settings nil
::open-multiaccounts #(re-frame/dispatch [::initialize-multiaccounts %])
::open-multiaccounts #(re-frame/dispatch [::initialize-multiaccounts % {:logout? false}])
:ui/listen-to-window-dimensions-change nil
::network/listen-to-network-info nil
:hardwallet/register-card-events nil

View File

@ -6,6 +6,7 @@
[status-im.native-module.core :as status]
[status-im.transport.core :as transport]
[status-im.utils.fx :as fx]
[status-im.ui.screens.navigation :as navigation]
[status-im.utils.keychain.core :as keychain]))
(fx/defn logout-method [{:keys [db] :as cofx} auth-method]
@ -13,7 +14,7 @@
(fx/merge cofx
{::logout nil
:keychain/clear-user-password key-uid
::init/open-multiaccounts #(re-frame/dispatch [::init/initialize-multiaccounts %])}
::init/open-multiaccounts #(re-frame/dispatch [::init/initialize-multiaccounts % {:logout? true}])}
(keychain/save-auth-method key-uid auth-method)
(transport/stop-whisper)
(chaos-mode/stop-checking)

View File

@ -21,7 +21,6 @@ class TestCreateAccount(SingleDeviceTestCase):
profile.logout()
if sign_in.ok_button.is_element_displayed():
sign_in.ok_button.click()
sign_in.back_button.click()
sign_in.your_keys_more_icon.click()
sign_in.generate_new_key_button.click()
sign_in.generate_key_button.click()

View File

@ -10,14 +10,20 @@ class MultiAccountButton(BaseButton):
class Username(BaseText):
def __init__(self, driver, locator_value):
super(MultiAccountButton.Username, self).__init__(driver)
self.locator = self.Locator.xpath_selector(locator_value + '/preceding-sibling::*[1]')
self.locator = self.Locator.xpath_selector(locator_value + '/android.view.ViewGroup/android.widget.TextView[1]')
def __init__(self, driver, position):
def __init__(self, driver, position=1):
super(MultiAccountButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("(//*[contains(@text,'0x')])[%s]" % position)
self.locator = self.Locator.xpath_selector("//*[@content-desc='select-account-button-%s']" % position)
self.username = self.Username(driver, self.locator.value)
class MultiAccountOnLoginButton(BaseButton):
def __init__(self, driver, position=1):
super(MultiAccountOnLoginButton, self).__init__(driver)
self.locator = self.Locator.xpath_selector("(//*[@content-desc='chat-icon'])[%s]/.." % position)
class PasswordInput(BaseEditBox):
def __init__(self, driver):
super(PasswordInput, self).__init__(driver)
@ -189,6 +195,8 @@ class SignInView(BaseView):
self.maybe_later_button = MaybeLaterButton(self.driver)
self.name_input = NameInput(self.driver)
self.other_multiaccounts_button = OtherMultiAccountsButton(self.driver)
self.multiaccount_button = MultiAccountButton(self.driver)
self.multi_account_on_login_button = MultiAccountOnLoginButton(self.driver)
self.privacy_policy_link = PrivacyPolicyLink(self.driver)
self.lets_go_button = LetsGoButton(self.driver)
@ -223,14 +231,12 @@ class SignInView(BaseView):
return self.get_home_view()
def sign_in(self, password=common_password):
self.accept_agreements()
self.multi_account_on_login_button.click()
self.password_input.set_value(password)
self.confirm()
self.sign_in_button.click()
return self.get_home_view()
def get_account_by_position(self, position: int):
if self.ok_button.is_element_displayed():
self.ok_button.click()
account_button = MultiAccountButton(self.driver, position)
if account_button.is_element_displayed():
return account_button