2018-07-13 10:56:36 +00:00
|
|
|
import random
|
2019-10-25 14:33:56 +00:00
|
|
|
import string
|
2018-07-20 08:27:33 +00:00
|
|
|
|
2018-10-11 20:28:52 +00:00
|
|
|
from support.utilities import get_merged_txs_list
|
2018-09-17 08:50:01 +00:00
|
|
|
from tests import marks, unique_password, common_password
|
2020-05-14 10:41:09 +00:00
|
|
|
from tests.base_test_case import SingleDeviceTestCase
|
|
|
|
from tests.users import transaction_senders, basic_user, wallet_users
|
2020-04-15 14:25:18 +00:00
|
|
|
from views.send_transaction_view import SendTransactionView
|
2018-06-30 12:17:38 +00:00
|
|
|
from views.sign_in_view import SignInView
|
|
|
|
|
|
|
|
|
|
|
|
@marks.transaction
|
2018-07-13 10:56:36 +00:00
|
|
|
class TestTransactionWalletSingleDevice(SingleDeviceTestCase):
|
2018-06-30 12:17:38 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5308)
|
|
|
|
@marks.critical
|
2018-06-30 12:17:38 +00:00
|
|
|
def test_send_eth_from_wallet_to_address(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
recipient = basic_user
|
|
|
|
sender = transaction_senders['P']
|
2018-06-30 12:17:38 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2020-05-14 10:41:09 +00:00
|
|
|
home_view = sign_in_view.recover_access(sender['passphrase'], password=unique_password)
|
2018-06-30 12:17:38 +00:00
|
|
|
wallet_view = home_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-06-30 12:17:38 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
|
|
|
transaction_amount = send_transaction.get_unique_amount()
|
|
|
|
send_transaction.amount_edit_box.set_value(transaction_amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.enter_recipient_address_button.click()
|
2020-05-14 10:41:09 +00:00
|
|
|
|
|
|
|
send_transaction.just_fyi('Send transaction')
|
2018-06-30 12:17:38 +00:00
|
|
|
send_transaction.enter_recipient_address_input.set_value(recipient['address'])
|
|
|
|
send_transaction.done_button.click()
|
2019-06-12 08:38:02 +00:00
|
|
|
send_transaction.sign_transaction_button.click()
|
2020-05-14 10:41:09 +00:00
|
|
|
send_transaction.sign_transaction(unique_password)
|
2018-06-30 12:17:38 +00:00
|
|
|
self.network_api.find_transaction_by_unique_amount(sender['address'], transaction_amount)
|
|
|
|
|
2020-05-14 10:41:09 +00:00
|
|
|
send_transaction.just_fyi('Check that transaction is appeared in transaction history')
|
|
|
|
transactions_view = wallet_view.transaction_history_button.click()
|
|
|
|
transactions_view.transactions_table.find_transaction(amount=transaction_amount)
|
|
|
|
|
|
|
|
transactions_view.just_fyi('Check logcat for sensitive data')
|
|
|
|
values_in_logcat = send_transaction.find_values_in_logcat(password=unique_password)
|
|
|
|
if values_in_logcat:
|
|
|
|
self.driver.fail(values_in_logcat)
|
|
|
|
|
2018-06-30 12:17:38 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5408)
|
|
|
|
@marks.high
|
2018-06-30 12:17:38 +00:00
|
|
|
def test_transaction_wrong_password_wallet(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
recipient = basic_user
|
|
|
|
sender = wallet_users['A']
|
2018-06-30 12:17:38 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-06-30 12:17:38 +00:00
|
|
|
home_view = sign_in_view.get_home_view()
|
|
|
|
wallet_view = home_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-28 14:36:24 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-06-30 12:17:38 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
|
|
|
transaction_amount = send_transaction.get_unique_amount()
|
|
|
|
send_transaction.amount_edit_box.set_value(transaction_amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.enter_recipient_address_button.click()
|
|
|
|
send_transaction.enter_recipient_address_input.set_value(recipient['address'])
|
|
|
|
send_transaction.done_button.click()
|
|
|
|
send_transaction.sign_transaction_button.click()
|
2019-08-23 10:24:52 +00:00
|
|
|
send_transaction.sign_with_password.click_until_presence_of_element(send_transaction.enter_password_input)
|
2018-06-30 12:17:38 +00:00
|
|
|
send_transaction.enter_password_input.click()
|
|
|
|
send_transaction.enter_password_input.send_keys('wrong_password')
|
2019-07-11 15:44:12 +00:00
|
|
|
send_transaction.sign_button.click()
|
2019-08-26 17:09:30 +00:00
|
|
|
if send_transaction.element_by_text_part('Transaction sent').is_element_displayed():
|
|
|
|
self.driver.fail('Transaction was sent with a wrong password')
|
2018-06-30 12:17:38 +00:00
|
|
|
|
2019-11-07 13:38:14 +00:00
|
|
|
@marks.testrail_id(6237)
|
|
|
|
@marks.high
|
|
|
|
def test_fetching_balance_after_offline(self):
|
|
|
|
sender = wallet_users['A']
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
|
|
|
|
sign_in_view.just_fyi('Restore account with funds offline')
|
|
|
|
sign_in_view.toggle_airplane_mode()
|
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
|
|
|
home_view = sign_in_view.get_home_view()
|
|
|
|
wallet_view = home_view.wallet_button.click()
|
|
|
|
wallet_view.set_up_wallet()
|
|
|
|
|
|
|
|
sign_in_view.just_fyi('Go back to online and check that balance is updated')
|
|
|
|
sign_in_view.toggle_airplane_mode()
|
|
|
|
wallet_view.wait_balance_is_changed('ETHro')
|
|
|
|
wallet_view.wait_balance_is_changed('STT')
|
|
|
|
|
|
|
|
sign_in_view.just_fyi('Send some tokens to other account')
|
|
|
|
recipient = "0x" + basic_user['address']
|
|
|
|
sending_amount = wallet_view.get_unique_amount()
|
|
|
|
asset = 'STT'
|
|
|
|
wallet_view.accounts_status_account.click_until_presence_of_element(wallet_view.send_transaction_button)
|
|
|
|
wallet_view.send_transaction(asset_name=asset, amount=sending_amount, recipient=recipient,
|
|
|
|
sign_transaction=True)
|
|
|
|
sign_in_view.toggle_airplane_mode()
|
2020-01-03 15:27:50 +00:00
|
|
|
self.network_api.wait_for_confirmation_of_transaction(basic_user['address'], sending_amount, confirmations=6, token=True)
|
2019-11-07 13:38:14 +00:00
|
|
|
|
|
|
|
sign_in_view.just_fyi('Change that balance is updated')
|
|
|
|
initial_amount_STT = wallet_view.get_asset_amount_by_name('STT')
|
|
|
|
sign_in_view.toggle_airplane_mode()
|
2020-05-14 10:41:09 +00:00
|
|
|
|
|
|
|
sign_in_view.just_fyi('Check that transaction is appeared in transaction history')
|
2019-11-07 13:38:14 +00:00
|
|
|
wallet_view.wait_balance_is_changed('STT', initial_amount_STT)
|
2020-05-14 10:41:09 +00:00
|
|
|
transactions_view = wallet_view.transaction_history_button.click()
|
|
|
|
transactions_view.transactions_table.find_transaction(amount=sending_amount, asset='STT')
|
2019-11-07 13:38:14 +00:00
|
|
|
|
|
|
|
|
2018-06-30 12:17:38 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5461)
|
|
|
|
@marks.medium
|
2018-06-30 12:17:38 +00:00
|
|
|
def test_send_eth_from_wallet_incorrect_address(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
recipient = basic_user
|
|
|
|
sender = wallet_users['B']
|
2018-06-30 12:17:38 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-06-30 12:17:38 +00:00
|
|
|
home_view = sign_in_view.get_home_view()
|
|
|
|
wallet_view = home_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-06-30 12:17:38 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
|
|
|
transaction_amount = send_transaction.get_unique_amount()
|
|
|
|
send_transaction.amount_edit_box.set_value(transaction_amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.enter_recipient_address_button.click()
|
|
|
|
send_transaction.enter_recipient_address_input.set_value(recipient['public_key'])
|
|
|
|
send_transaction.done_button.click()
|
2019-09-24 14:22:20 +00:00
|
|
|
if not send_transaction.find_text_part('Invalid address'):
|
2020-05-14 10:41:09 +00:00
|
|
|
self.errors.append("Invalid address accepted for input as recipient!")
|
2019-09-24 14:22:20 +00:00
|
|
|
send_transaction.ok_button.click()
|
2020-05-14 10:41:09 +00:00
|
|
|
send_transaction.enter_recipient_address_input.set_value('0xDE709F2102306220921060314715629080E2fB77')
|
2018-07-09 19:47:50 +00:00
|
|
|
send_transaction.done_button.click()
|
2020-05-14 10:41:09 +00:00
|
|
|
if not send_transaction.element_by_text_part('Invalid address').is_element_displayed():
|
|
|
|
self.errors.append('Invalid EIP55 address is resolved correctly')
|
|
|
|
send_transaction.ok_button.click()
|
|
|
|
self.errors.verify_no_errors()
|
|
|
|
|
2018-07-13 10:56:36 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5350)
|
|
|
|
@marks.critical
|
2018-07-13 10:56:36 +00:00
|
|
|
def test_send_token_with_7_decimals(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
sender = transaction_senders['S']
|
|
|
|
recipient = basic_user
|
2018-07-13 10:56:36 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-07-13 10:56:36 +00:00
|
|
|
home_view = sign_in_view.get_home_view()
|
|
|
|
home_view.add_contact(recipient['public_key'])
|
|
|
|
home_view.get_back_to_home_view()
|
|
|
|
wallet_view = home_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-07-13 10:56:36 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
adi_button = send_transaction.asset_by_name('ADI')
|
2020-04-02 10:30:20 +00:00
|
|
|
send_transaction.select_asset_button.click_until_presence_of_element(send_transaction.eth_asset_in_select_asset_bottom_sheet_button)
|
2018-07-13 10:56:36 +00:00
|
|
|
adi_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
2018-08-29 14:04:12 +00:00
|
|
|
amount = '0.0%s' % str(random.randint(10000, 99999)) + '1'
|
2018-07-13 10:56:36 +00:00
|
|
|
send_transaction.amount_edit_box.set_value(amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.enter_recipient_address_button.click()
|
|
|
|
send_transaction.enter_recipient_address_input.set_value(recipient['address'])
|
|
|
|
send_transaction.done_button.click()
|
2019-06-12 08:38:02 +00:00
|
|
|
send_transaction.sign_transaction_button.click()
|
2018-09-17 08:50:01 +00:00
|
|
|
send_transaction.sign_transaction()
|
2018-08-29 14:04:12 +00:00
|
|
|
self.network_api.find_transaction_by_unique_amount(recipient['address'], amount, token=True, decimals=7)
|
2018-07-13 10:56:36 +00:00
|
|
|
|
2019-12-06 15:42:30 +00:00
|
|
|
@marks.testrail_id(6245)
|
2019-03-05 16:43:30 +00:00
|
|
|
@marks.high
|
2018-07-13 10:56:36 +00:00
|
|
|
def test_token_with_more_than_allowed_decimals(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
sender = wallet_users['C']
|
2018-07-13 10:56:36 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-07-13 10:56:36 +00:00
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-07-13 10:56:36 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
adi_button = send_transaction.asset_by_name('ADI')
|
2020-04-02 10:30:20 +00:00
|
|
|
send_transaction.select_asset_button.click_until_presence_of_element(send_transaction.eth_asset_in_select_asset_bottom_sheet_button)
|
2018-07-13 10:56:36 +00:00
|
|
|
adi_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
2018-08-29 14:04:12 +00:00
|
|
|
amount = '0.0%s' % str(random.randint(100000, 999999)) + '1'
|
2018-07-13 10:56:36 +00:00
|
|
|
send_transaction.amount_edit_box.set_value(amount)
|
|
|
|
error_text = 'Amount is too precise. Max number of decimals is 7.'
|
|
|
|
if not send_transaction.element_by_text(error_text).is_element_displayed():
|
2020-01-13 16:16:55 +00:00
|
|
|
self.driver.fail('Warning about too precise amount is not shown when sending a transaction')
|
2018-07-13 10:56:36 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5423)
|
|
|
|
@marks.medium
|
2018-07-20 08:27:33 +00:00
|
|
|
def test_send_valid_amount_after_insufficient_funds_error(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
sender = transaction_senders['T']
|
2018-07-19 09:57:45 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-07-19 09:57:45 +00:00
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2019-11-07 13:38:14 +00:00
|
|
|
bigger_amount = wallet_view.get_asset_amount_by_name('ETHro') + 1
|
2018-07-19 09:57:45 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
amount_edit_box = send_transaction.amount_edit_box
|
|
|
|
amount_edit_box.click()
|
|
|
|
amount_edit_box.set_value(bigger_amount)
|
|
|
|
send_transaction.element_by_text('Insufficient funds').wait_for_visibility_of_element(5)
|
|
|
|
|
|
|
|
valid_amount = send_transaction.get_unique_amount()
|
|
|
|
amount_edit_box.clear()
|
|
|
|
amount_edit_box.set_value(valid_amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.enter_recipient_address_button.click()
|
2018-09-17 08:50:01 +00:00
|
|
|
send_transaction.enter_recipient_address_input.set_value(basic_user['address'])
|
2018-07-19 09:57:45 +00:00
|
|
|
send_transaction.done_button.click()
|
2019-06-12 08:38:02 +00:00
|
|
|
send_transaction.sign_transaction_button.click()
|
2018-09-17 08:50:01 +00:00
|
|
|
send_transaction.sign_transaction()
|
2018-07-19 09:57:45 +00:00
|
|
|
self.network_api.find_transaction_by_unique_amount(sender['address'], valid_amount)
|
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5471)
|
|
|
|
@marks.medium
|
2018-07-20 08:27:33 +00:00
|
|
|
def test_insufficient_funds_wallet_0_balance(self):
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
sign_in_view.create_user()
|
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-05-27 16:45:20 +00:00
|
|
|
wallet_view.select_asset("STT")
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-07-20 08:27:33 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.set_value(1)
|
|
|
|
error_text = send_transaction.element_by_text('Insufficient funds')
|
|
|
|
if not error_text.is_element_displayed():
|
|
|
|
self.errors.append("'Insufficient funds' error is now shown when sending 1 ETH from wallet with balance 0")
|
|
|
|
send_transaction.select_asset_button.click()
|
|
|
|
send_transaction.asset_by_name('STT').click()
|
|
|
|
send_transaction.amount_edit_box.set_value(1)
|
|
|
|
if not error_text.is_element_displayed():
|
|
|
|
self.errors.append("'Insufficient funds' error is now shown when sending 1 STT from wallet with balance 0")
|
2019-10-29 08:25:57 +00:00
|
|
|
self.errors.verify_no_errors()
|
2018-07-20 08:27:33 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5412)
|
|
|
|
@marks.high
|
2018-07-20 08:27:33 +00:00
|
|
|
def test_insufficient_funds_wallet_positive_balance(self):
|
2020-01-13 16:16:55 +00:00
|
|
|
sender = wallet_users['E']
|
2018-07-20 08:27:33 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-07-20 08:27:33 +00:00
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-11-07 13:38:14 +00:00
|
|
|
eth_value = wallet_view.get_asset_amount_by_name('ETHro')
|
|
|
|
stt_value = wallet_view.get_asset_amount_by_name('STT')
|
2018-07-20 08:27:33 +00:00
|
|
|
if eth_value == 0 or stt_value == 0:
|
2019-10-21 12:48:45 +00:00
|
|
|
self.driver.fail('No funds!')
|
2019-06-28 14:36:24 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-07-20 08:27:33 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.set_value(round(eth_value + 1))
|
|
|
|
error_text = send_transaction.element_by_text('Insufficient funds')
|
|
|
|
if not error_text.is_element_displayed():
|
|
|
|
self.errors.append(
|
2019-11-29 17:32:47 +00:00
|
|
|
"'Insufficient funds' error is not shown when sending %s ETH from wallet with balance %s" % (
|
2018-07-20 08:27:33 +00:00
|
|
|
round(eth_value + 1), eth_value))
|
|
|
|
send_transaction.select_asset_button.click()
|
2018-08-16 16:47:13 +00:00
|
|
|
send_transaction.asset_by_name('STT').scroll_to_element()
|
2018-07-20 08:27:33 +00:00
|
|
|
send_transaction.asset_by_name('STT').click()
|
|
|
|
send_transaction.amount_edit_box.set_value(round(stt_value + 1))
|
|
|
|
if not error_text.is_element_displayed():
|
|
|
|
self.errors.append(
|
2019-11-29 17:32:47 +00:00
|
|
|
"'Insufficient funds' error is not shown when sending %s STT from wallet with balance %s" % (
|
2018-07-20 08:27:33 +00:00
|
|
|
round(stt_value + 1), stt_value))
|
2019-10-29 08:25:57 +00:00
|
|
|
self.errors.verify_no_errors()
|
2018-07-20 08:27:33 +00:00
|
|
|
|
2018-09-28 15:30:06 +00:00
|
|
|
@marks.testrail_id(5359)
|
|
|
|
@marks.critical
|
2020-05-01 19:33:14 +00:00
|
|
|
@marks.skip
|
2018-07-19 09:57:45 +00:00
|
|
|
def test_modify_transaction_fee_values(self):
|
2018-09-17 08:50:01 +00:00
|
|
|
sender = transaction_senders['U']
|
2018-07-19 09:57:45 +00:00
|
|
|
sign_in_view = SignInView(self.driver)
|
2018-09-17 08:50:01 +00:00
|
|
|
sign_in_view.recover_access(sender['passphrase'])
|
2018-07-19 09:57:45 +00:00
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-24 15:53:02 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-07-19 09:57:45 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
|
|
|
|
amount = send_transaction.get_unique_amount()
|
|
|
|
send_transaction.amount_edit_box.set_value(amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.enter_recipient_address_button.click()
|
2018-09-17 08:50:01 +00:00
|
|
|
recipient_address = basic_user['address']
|
2018-07-19 09:57:45 +00:00
|
|
|
send_transaction.enter_recipient_address_input.set_value(recipient_address)
|
|
|
|
send_transaction.done_button.click()
|
2019-06-24 15:53:02 +00:00
|
|
|
send_transaction.sign_transaction_button.click()
|
2020-01-03 15:27:50 +00:00
|
|
|
send_transaction.network_fee_button.click_until_presence_of_element(send_transaction.gas_limit_input)
|
2020-05-01 19:33:14 +00:00
|
|
|
gas_prices = {
|
|
|
|
"1.0000000009": "Invalid number",
|
|
|
|
"0.0000000009": "Min 1 wei",
|
|
|
|
"-1": "Min 1 wei"
|
|
|
|
}
|
|
|
|
gas_limit = {
|
|
|
|
"20999": "Min 21000 units",
|
|
|
|
"21000.1": "Invalid number",
|
|
|
|
"-21000": "Min 21000 units"
|
|
|
|
}
|
|
|
|
for key in gas_prices:
|
|
|
|
send_transaction.gas_price_input.clear()
|
|
|
|
send_transaction.gas_price_input.send_keys(key)
|
|
|
|
if not send_transaction.element_by_text(gas_prices[key]).is_element_displayed():
|
|
|
|
self.errors.append("With %s Gas Price value there is no %s error displayed" % key, gas_prices[key])
|
2018-07-19 09:57:45 +00:00
|
|
|
send_transaction.gas_price_input.clear()
|
2020-05-01 19:33:14 +00:00
|
|
|
send_transaction.gas_price_input.send_keys('10')
|
|
|
|
|
|
|
|
for key in gas_limit:
|
|
|
|
send_transaction.gas_price_input.clear()
|
|
|
|
send_transaction.gas_price_input.send_keys(key)
|
|
|
|
if not send_transaction.element_by_text(gas_limit[key]).is_element_displayed():
|
|
|
|
self.errors.append("With %s Gas Limit value there is no %s error displayed" % key, gas_prices[key])
|
|
|
|
send_transaction.gas_price_input.clear()
|
|
|
|
send_transaction.gas_price_input.send_keys('21000')
|
|
|
|
|
2019-11-21 10:26:53 +00:00
|
|
|
send_transaction.update_fee_button.click_until_absense_of_element(send_transaction.update_fee_button)
|
2019-06-24 15:53:02 +00:00
|
|
|
send_transaction.sign_with_password.click_until_presence_of_element(send_transaction.enter_password_input)
|
2018-09-17 08:50:01 +00:00
|
|
|
send_transaction.enter_password_input.send_keys(common_password)
|
2019-06-24 15:53:02 +00:00
|
|
|
send_transaction.sign_button.click()
|
2018-07-19 09:57:45 +00:00
|
|
|
send_transaction.ok_button.click()
|
|
|
|
|
2018-10-11 20:28:52 +00:00
|
|
|
@marks.testrail_id(5314)
|
2019-11-08 18:24:55 +00:00
|
|
|
@marks.critical
|
2018-10-11 20:28:52 +00:00
|
|
|
def test_can_see_all_transactions_in_history(self):
|
2018-11-14 21:50:19 +00:00
|
|
|
address = wallet_users['D']['address']
|
|
|
|
passphrase = wallet_users['D']['passphrase']
|
2018-10-11 20:28:52 +00:00
|
|
|
|
|
|
|
ropsten_txs = self.network_api.get_transactions(address)
|
|
|
|
ropsten_tokens = self.network_api.get_token_transactions(address)
|
|
|
|
expected_txs_list = get_merged_txs_list(ropsten_txs, ropsten_tokens)
|
|
|
|
signin_view = SignInView(self.driver)
|
|
|
|
home_view = signin_view.recover_access(passphrase=passphrase)
|
|
|
|
wallet_view = home_view.wallet_button.click()
|
2019-07-12 07:16:02 +00:00
|
|
|
wallet_view.set_up_wallet()
|
2019-06-28 14:36:24 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
2018-10-11 20:28:52 +00:00
|
|
|
transaction_view = wallet_view.transaction_history_button.click()
|
|
|
|
|
|
|
|
status_tx_number = transaction_view.transactions_table.get_transactions_number()
|
2019-07-24 22:44:32 +00:00
|
|
|
if status_tx_number < 1:
|
|
|
|
self.driver.fail('No transactions found')
|
2018-10-11 20:28:52 +00:00
|
|
|
|
|
|
|
for n in range(status_tx_number):
|
|
|
|
transactions_details = transaction_view.transactions_table.transaction_by_index(n).click()
|
2019-07-24 22:44:32 +00:00
|
|
|
tx_hash = transactions_details.get_transaction_hash()
|
|
|
|
tx_from = transactions_details.get_sender_address()
|
|
|
|
tx_to = transactions_details.get_recipient_address()
|
|
|
|
if tx_from != expected_txs_list[tx_hash]['from']:
|
2019-06-28 14:36:24 +00:00
|
|
|
self.errors.append('Transactions senders do not match!')
|
2019-07-24 22:44:32 +00:00
|
|
|
if tx_to != expected_txs_list[tx_hash]['to']:
|
2019-06-28 14:36:24 +00:00
|
|
|
self.errors.append('Transactions recipients do not match!')
|
2019-07-24 22:44:32 +00:00
|
|
|
transactions_details.back_button.click()
|
2018-10-11 20:28:52 +00:00
|
|
|
|
2019-10-29 08:25:57 +00:00
|
|
|
self.errors.verify_no_errors()
|
2018-10-11 20:28:52 +00:00
|
|
|
|
2019-08-16 10:14:23 +00:00
|
|
|
@marks.testrail_id(5429)
|
|
|
|
@marks.medium
|
|
|
|
def test_set_currency(self):
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
user_currency = 'Euro (EUR)'
|
|
|
|
sign_in_view.create_user()
|
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
|
|
|
wallet_view.set_currency(user_currency)
|
|
|
|
if not wallet_view.find_text_part('EUR'):
|
|
|
|
self.driver.fail('EUR currency is not displayed')
|
|
|
|
|
2019-10-21 07:15:34 +00:00
|
|
|
@marks.testrail_id(5407)
|
|
|
|
@marks.medium
|
|
|
|
def test_cant_send_transaction_in_offline_mode(self):
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
sign_in_view.create_user()
|
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
|
|
|
wallet_view.set_up_wallet()
|
2019-12-04 18:39:18 +00:00
|
|
|
wallet_view.toggle_airplane_mode()
|
|
|
|
wallet_view.accounts_status_account.click_until_presence_of_element(wallet_view.send_transaction_button)
|
2019-10-21 07:15:34 +00:00
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.accounts_button.click()
|
|
|
|
send_transaction.element_by_text("Status account").click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
|
|
|
send_transaction.amount_edit_box.set_value("0")
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.sign_transaction_button.click()
|
|
|
|
if send_transaction.sign_with_password.is_element_displayed():
|
|
|
|
self.driver.fail("Sign transaction button is active in offline mode")
|
|
|
|
|
2019-08-16 10:14:23 +00:00
|
|
|
@marks.testrail_id(6225)
|
2020-01-03 15:27:50 +00:00
|
|
|
@marks.medium
|
2019-08-16 10:14:23 +00:00
|
|
|
def test_send_funds_between_accounts_in_multiaccount_instance(self):
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
sign_in_view.create_user()
|
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
|
|
|
wallet_view.set_up_wallet()
|
2019-09-26 09:11:46 +00:00
|
|
|
status_account_address = wallet_view.get_wallet_address()[2:]
|
2019-08-16 10:14:23 +00:00
|
|
|
wallet_view.back_button.click()
|
2019-09-26 09:11:46 +00:00
|
|
|
self.network_api.get_donate(status_account_address)
|
2020-05-05 08:52:40 +00:00
|
|
|
wallet_view.wait_balance_is_changed()
|
2019-09-26 09:11:46 +00:00
|
|
|
account_name = 'subaccount'
|
2019-08-16 10:14:23 +00:00
|
|
|
wallet_view.add_account(account_name)
|
2019-09-26 09:11:46 +00:00
|
|
|
|
|
|
|
wallet_view.just_fyi("Send transaction to new account")
|
2019-08-16 10:14:23 +00:00
|
|
|
wallet_view.accounts_status_account.click()
|
|
|
|
send_transaction = wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
|
|
|
transaction_amount = send_transaction.get_unique_amount()
|
|
|
|
send_transaction.amount_edit_box.set_value(transaction_amount)
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.accounts_button.click()
|
|
|
|
send_transaction.element_by_text(account_name).click()
|
|
|
|
send_transaction.sign_transaction_button.click()
|
|
|
|
send_transaction.sign_transaction()
|
2019-09-26 09:11:46 +00:00
|
|
|
self.network_api.wait_for_confirmation_of_transaction(status_account_address, transaction_amount)
|
|
|
|
self.network_api.verify_balance_is_updated('0.1', status_account_address)
|
|
|
|
|
|
|
|
wallet_view.just_fyi("Verifying previously sent transaction in new account")
|
2019-08-16 10:14:23 +00:00
|
|
|
wallet_view.back_button.click()
|
|
|
|
wallet_view.get_account_by_name(account_name).click()
|
|
|
|
wallet_view.send_transaction_button.click()
|
|
|
|
wallet_view.back_button.click()
|
2019-11-07 15:14:28 +00:00
|
|
|
balance_after_receiving_tx = float(wallet_view.get_asset_amount_by_name('ETHro'))
|
2019-10-04 13:50:44 +00:00
|
|
|
expected_balance = self.network_api.get_rounded_balance(balance_after_receiving_tx, transaction_amount)
|
|
|
|
if balance_after_receiving_tx != expected_balance:
|
2019-08-16 10:14:23 +00:00
|
|
|
self.driver.fail('New account balance %s does not match expected %s after receiving a transaction' % (
|
|
|
|
balance_after_receiving_tx, transaction_amount))
|
|
|
|
|
2019-09-26 09:11:46 +00:00
|
|
|
wallet_view.just_fyi("Sending eth from new account to main account")
|
|
|
|
updated_balance = self.network_api.get_balance(status_account_address)
|
2019-08-16 10:14:23 +00:00
|
|
|
wallet_view.send_transaction_button.click()
|
|
|
|
send_transaction.amount_edit_box.click()
|
2019-09-26 09:11:46 +00:00
|
|
|
transaction_amount_1 = round(float(transaction_amount) * 0.05, 11)
|
2019-08-16 10:14:23 +00:00
|
|
|
send_transaction.amount_edit_box.set_value(str(transaction_amount_1))
|
|
|
|
send_transaction.confirm()
|
|
|
|
send_transaction.chose_recipient_button.click()
|
|
|
|
send_transaction.accounts_button.click()
|
|
|
|
send_transaction.element_by_text('Status account').click()
|
|
|
|
send_transaction.sign_transaction_button.click()
|
|
|
|
send_transaction.sign_transaction()
|
2019-09-26 09:11:46 +00:00
|
|
|
send_transaction.back_button.click()
|
|
|
|
sub_account_address = wallet_view.get_wallet_address(account_name)[2:]
|
|
|
|
self.network_api.wait_for_confirmation_of_transaction(status_account_address, transaction_amount)
|
|
|
|
self.network_api.verify_balance_is_updated(updated_balance, status_account_address)
|
2020-05-14 10:41:09 +00:00
|
|
|
transactions_view = wallet_view.transaction_history_button.click()
|
|
|
|
|
|
|
|
wallet_view.just_fyi("Check transactions on subaccount")
|
|
|
|
transactions_view.transactions_table.find_transaction(amount=transaction_amount)
|
|
|
|
transactions_view.transactions_table.find_transaction(amount=format(float(transaction_amount_1),'.11f').rstrip('0'))
|
|
|
|
self.network_api.verify_balance_is_updated(updated_balance, status_account_address)
|
2019-09-26 09:11:46 +00:00
|
|
|
|
|
|
|
wallet_view.just_fyi("Verify total ETH on main wallet view")
|
2020-01-03 15:27:50 +00:00
|
|
|
self.network_api.wait_for_confirmation_of_transaction(status_account_address, transaction_amount_1, 3)
|
2019-10-04 13:50:44 +00:00
|
|
|
self.network_api.verify_balance_is_updated((updated_balance + transaction_amount_1), status_account_address)
|
2019-09-26 09:11:46 +00:00
|
|
|
send_transaction.back_button.click()
|
|
|
|
balance_of_sub_account = float(self.network_api.get_balance(sub_account_address)) / 1000000000000000000
|
|
|
|
balance_of_status_account = float(self.network_api.get_balance(status_account_address)) / 1000000000000000000
|
2019-11-07 15:14:28 +00:00
|
|
|
total_eth_from_two_accounts = float(wallet_view.get_asset_amount_by_name('ETHro'))
|
2019-10-04 13:50:44 +00:00
|
|
|
expected_balance = self.network_api.get_rounded_balance(total_eth_from_two_accounts,
|
|
|
|
(balance_of_status_account + balance_of_sub_account))
|
|
|
|
|
|
|
|
if total_eth_from_two_accounts != expected_balance:
|
2019-09-26 09:11:46 +00:00
|
|
|
self.driver.fail('Total wallet balance %s != of Status account (%s) + SubAccount (%s)' % (
|
|
|
|
total_eth_from_two_accounts, balance_of_status_account, balance_of_sub_account))
|
2019-06-28 14:36:24 +00:00
|
|
|
|
2019-10-25 14:33:56 +00:00
|
|
|
@marks.testrail_id(6235)
|
|
|
|
@marks.medium
|
|
|
|
def test_can_change_account_settings(self):
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
sign_in_view.create_user()
|
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
|
|
|
wallet_view.set_up_wallet()
|
|
|
|
status_account_address = wallet_view.get_wallet_address()
|
2019-12-20 17:35:36 +00:00
|
|
|
wallet_view.get_account_options_by_name().click()
|
2019-10-25 14:33:56 +00:00
|
|
|
|
|
|
|
wallet_view.just_fyi('open Account Settings screen and check that all elements are shown')
|
|
|
|
wallet_view.account_settings_button.click()
|
|
|
|
for text in 'On Status tree', status_account_address, "m/44'/60'/0'/0/0":
|
|
|
|
if not wallet_view.element_by_text(text).is_element_displayed():
|
|
|
|
self.errors.append("'%s' text is not shown on Account Settings screen!" % text)
|
|
|
|
|
|
|
|
wallet_view.just_fyi('change account name/color and verified applied changes')
|
|
|
|
account_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
|
|
|
|
wallet_view.account_name_input.send_keys(account_name)
|
|
|
|
wallet_view.account_color_button.select_color_by_position(1)
|
|
|
|
wallet_view.apply_settings_button.click()
|
|
|
|
wallet_view.element_by_text('This device').scroll_to_element()
|
|
|
|
wallet_view.back_button.click()
|
|
|
|
wallet_view.back_button.click()
|
|
|
|
account_button = wallet_view.get_account_by_name(account_name)
|
|
|
|
if not account_button.is_element_displayed():
|
|
|
|
self.driver.fail('Account name was not changed')
|
|
|
|
if not account_button.color_matches('multi_account_color.png'):
|
|
|
|
self.driver.fail('Account color does not match expected')
|
|
|
|
|
2020-04-15 14:25:18 +00:00
|
|
|
self.errors.verify_no_errors()
|
|
|
|
|
|
|
|
@marks.testrail_id(6282)
|
|
|
|
@marks.medium
|
|
|
|
def test_can_scan_eip_681_links(self):
|
|
|
|
sign_in_view = SignInView(self.driver)
|
|
|
|
sign_in_view.recover_access(transaction_senders['C']['passphrase'])
|
|
|
|
wallet_view = sign_in_view.wallet_button.click()
|
|
|
|
wallet_view.set_up_wallet()
|
|
|
|
send_transaction_view = SendTransactionView(self.driver)
|
|
|
|
url_data = {
|
|
|
|
'ens_for_receiver': {
|
|
|
|
'url': 'ethereum:0xc55cf4b03948d7ebc8b9e8bad92643703811d162@3/transfer?address=nastya.stateofus.eth&uint256=1e-1',
|
|
|
|
'data':{
|
|
|
|
'asset': 'STT',
|
|
|
|
'amount': '0.1',
|
|
|
|
'address': '0x58d8…F2ff',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'gas_settings': {
|
|
|
|
'url': 'ethereum:0x3d597789ea16054a084ac84ce87f50df9198f415@3?value=1e16&gasPrice=1000000000&gasLimit=100000',
|
|
|
|
'data': {
|
|
|
|
'amount': '0.01',
|
|
|
|
'asset': 'ETHro',
|
|
|
|
'address': '0x3D59…F415',
|
|
|
|
'gas_limit': '100000',
|
|
|
|
'gas_price': '1',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'payment_link': {
|
|
|
|
'url': 'ethereum:pay-0xc55cf4b03948d7ebc8b9e8bad92643703811d162@3/transfer?address=0x3d597789ea16054a084ac84ce87f50df9198f415&uint256=1e1',
|
|
|
|
'data': {
|
|
|
|
'amount': '10',
|
|
|
|
'asset': 'STT',
|
|
|
|
'address': '0x3D59…F415',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'validation_amount_too_presize': {
|
|
|
|
'url': 'ethereum:0xc55cf4b03948d7ebc8b9e8bad92643703811d162@3/transfer?address=0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA&uint256=1e-19',
|
|
|
|
'data': {
|
|
|
|
'amount': '1e-19',
|
|
|
|
'asset': 'STT',
|
|
|
|
'address': '0x1018…82FA',
|
|
|
|
|
|
|
|
},
|
|
|
|
'send_transaction_validation_error': 'Amount is too precise',
|
|
|
|
},
|
|
|
|
'validation_amount_too_big': {
|
|
|
|
'url': 'ethereum:0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA@3?value=1e25',
|
|
|
|
'data': {
|
|
|
|
'amount': '10000000',
|
|
|
|
'asset': 'ETHro',
|
|
|
|
'address': '0x1018…82FA',
|
|
|
|
|
|
|
|
},
|
|
|
|
'send_transaction_validation_error': 'Insufficient funds',
|
|
|
|
},
|
|
|
|
'validation_wrong_chain_id': {
|
|
|
|
'url': 'ethereum:0x101848D5C5bBca18E6b4431eEdF6B95E9ADF82FA?value=1e17',
|
|
|
|
'error': 'Network does not match',
|
|
|
|
'data': {
|
|
|
|
'amount': '0.1',
|
|
|
|
'asset': 'ETHro',
|
|
|
|
'address': '0x1018…82FA',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'validation_wrong_address': {
|
|
|
|
'url': 'ethereum:0x744d70fdbe2ba4cf95131626614a1763df805b9e@3/transfer?address=blablabla&uint256=1e10',
|
|
|
|
'error': 'Invalid address',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for key in url_data:
|
|
|
|
wallet_view.just_fyi('Checking %s case' % key)
|
|
|
|
wallet_view.scan_qr_button.click()
|
|
|
|
if wallet_view.allow_button.is_element_displayed():
|
|
|
|
wallet_view.allow_button.click()
|
|
|
|
wallet_view.enter_qr_edit_box.set_value(url_data[key]['url'])
|
|
|
|
wallet_view.ok_button.click()
|
|
|
|
if url_data[key].get('error'):
|
|
|
|
if not wallet_view.element_by_text_part(url_data[key]['error']).is_element_displayed():
|
|
|
|
self.errors.append('Expected error %s is not shown' % url_data[key]['error'])
|
|
|
|
wallet_view.ok_button.click()
|
|
|
|
if url_data[key].get('data'):
|
|
|
|
if 'gas' in key:
|
|
|
|
actual_data = send_transaction_view.get_values_from_send_transaction_bottom_sheet(gas=True)
|
|
|
|
else:
|
|
|
|
actual_data = send_transaction_view.get_values_from_send_transaction_bottom_sheet()
|
|
|
|
difference_in_data = url_data[key]['data'].items() - actual_data.items()
|
|
|
|
if difference_in_data:
|
|
|
|
self.errors.append(
|
|
|
|
'In %s case returned value does not match expected in %s' % (key, repr(difference_in_data)))
|
|
|
|
if url_data[key].get('send_transaction_validation_error'):
|
|
|
|
error = url_data[key]['send_transaction_validation_error']
|
|
|
|
if not wallet_view.element_by_text_part(error).is_element_displayed():
|
|
|
|
self.errors.append(
|
|
|
|
'Expected error %s is not shown' % error)
|
|
|
|
send_transaction_view.cancel_button.click()
|
|
|
|
|
|
|
|
self.errors.verify_no_errors()
|