Skip to content

Commit

Permalink
Merge branch 'main' into CW-774-Enforce-Seed-Verification
Browse files Browse the repository at this point in the history
  • Loading branch information
tuxpizza authored Dec 13, 2024
2 parents b89a41f + 3ad0422 commit c8a2b3f
Show file tree
Hide file tree
Showing 39 changed files with 559 additions and 77 deletions.
298 changes: 298 additions & 0 deletions .github/workflows/automated_integration_test.yml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/workflows/pr_test_build_android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ jobs:
echo "const tronGridApiKey = '${{ secrets.TRON_GRID_API_KEY }}';" >> cw_tron/lib/.secrets.g.dart
echo "const tronNowNodesApiKey = '${{ secrets.TRON_NOW_NODES_API_KEY }}';" >> cw_tron/lib/.secrets.g.dart
echo "const meldTestApiKey = '${{ secrets.MELD_TEST_API_KEY }}';" >> lib/.secrets.g.dart
echo "const meldTestPublicKey = '${{ secrets.MELD_TEST_PUBLIC_KEY}}';" >> lib/.secrets.g.dar
echo "const meldTestPublicKey = '${{ secrets.MELD_TEST_PUBLIC_KEY}}';" >> lib/.secrets.g.dart
echo "const letsExchangeBearerToken = '${{ secrets.LETS_EXCHANGE_TOKEN }}';" >> lib/.secrets.g.dart
echo "const letsExchangeAffiliateId = '${{ secrets.LETS_EXCHANGE_AFFILIATE_ID }}';" >> lib/.secrets.g.dart
echo "const stealthExBearerToken = '${{ secrets.STEALTH_EX_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
Expand Down
2 changes: 1 addition & 1 deletion cw_bitcoin/lib/electrum_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1346,7 +1346,7 @@ abstract class ElectrumWalletBase
}

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
try {
await _receiveStream?.cancel();
await electrumClient.close();
Expand Down
2 changes: 1 addition & 1 deletion cw_bitcoin/lib/litecoin_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1191,7 +1191,7 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store {
}

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_utxoStream?.cancel();
_feeRatesTimer?.cancel();
_syncTimer?.cancel();
Expand Down
2 changes: 1 addition & 1 deletion cw_core/lib/wallet_base.dart
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ abstract class WalletBase<BalanceType extends Balance, HistoryType extends Trans

Future<void> rescan({required int height});

Future<void> close({required bool shouldCleanup});
Future<void> close({bool shouldCleanup = false});

Future<void> changePassword(String password);

Expand Down
2 changes: 1 addition & 1 deletion cw_evm/lib/evm_chain_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ abstract class EVMChainWalletBase
}

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_client.stop();
_transactionsUpdateTimer?.cancel();
_updateFeesTimer?.cancel();
Expand Down
2 changes: 1 addition & 1 deletion cw_haven/lib/haven_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ abstract class HavenWalletBase
Future<void>? updateBalance() => null;

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_listener?.stop();
_onAccountChangeReaction?.reaction.dispose();
_autoSaveTimer?.cancel();
Expand Down
1 change: 0 additions & 1 deletion cw_monero/lib/api/wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ Future<bool> setupNodeSync(
daemonUsername: login ?? '',
daemonPassword: password ?? '');
});
// monero.Wallet_init3(wptr!, argv0: '', defaultLogBaseName: 'moneroc', console: true, logPath: '');

final status = monero.Wallet_status(wptr!);

Expand Down
2 changes: 1 addition & 1 deletion cw_monero/lib/monero_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
Future<void>? updateBalance() => null;

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_listener?.stop();
_onAccountChangeReaction?.reaction.dispose();
_onTxHistoryChangeReaction?.reaction.dispose();
Expand Down
8 changes: 4 additions & 4 deletions cw_monero/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -503,8 +503,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: c41c4dad9aa5003a914cfb2c528c76386f952665
resolved-ref: c41c4dad9aa5003a914cfb2c528c76386f952665
ref: af5277f96073917185864d3596e82b67bee54e78
resolved-ref: af5277f96073917185864d3596e82b67bee54e78
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
Expand Down Expand Up @@ -829,10 +829,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev"
source: hosted
version: "14.2.4"
version: "14.2.5"
watcher:
dependency: "direct overridden"
description:
Expand Down
2 changes: 1 addition & 1 deletion cw_monero/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: c41c4dad9aa5003a914cfb2c528c76386f952665
ref: af5277f96073917185864d3596e82b67bee54e78
# ref: 6eb571ea498ed7b854934785f00fabfd0dadf75b # monero_c hash
path: impls/monero.dart
mutex: ^3.1.0
Expand Down
2 changes: 1 addition & 1 deletion cw_nano/lib/nano_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ abstract class NanoWalletBase
Future<void> changePassword(String password) => throw UnimplementedError("changePassword");

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_client.stop();
_receiveTimer?.cancel();
}
Expand Down
2 changes: 1 addition & 1 deletion cw_solana/lib/solana_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ abstract class SolanaWalletBase
Future<void> changePassword(String password) => throw UnimplementedError("changePassword");

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_client.stop();
_transactionsUpdateTimer?.cancel();
}
Expand Down
2 changes: 1 addition & 1 deletion cw_tron/lib/tron_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ abstract class TronWalletBase
Future<void> changePassword(String password) => throw UnimplementedError("changePassword");

@override
Future<void> close({required bool shouldCleanup}) async => _transactionsUpdateTimer?.cancel();
Future<void> close({bool shouldCleanup = false}) async => _transactionsUpdateTimer?.cancel();

@action
@override
Expand Down
2 changes: 1 addition & 1 deletion cw_wownero/lib/wownero_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ abstract class WowneroWalletBase
Future<void>? updateBalance() => null;

@override
Future<void> close({required bool shouldCleanup}) async {
Future<void> close({bool shouldCleanup = false}) async {
_listener?.stop();
_onAccountChangeReaction?.reaction.dispose();
_onTxHistoryChangeReaction?.reaction.dispose();
Expand Down
8 changes: 4 additions & 4 deletions cw_wownero/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -463,8 +463,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: c41c4dad9aa5003a914cfb2c528c76386f952665
resolved-ref: c41c4dad9aa5003a914cfb2c528c76386f952665
ref: af5277f96073917185864d3596e82b67bee54e78
resolved-ref: af5277f96073917185864d3596e82b67bee54e78
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
Expand Down Expand Up @@ -757,10 +757,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev"
source: hosted
version: "14.2.4"
version: "14.2.5"
watcher:
dependency: "direct overridden"
description:
Expand Down
2 changes: 1 addition & 1 deletion cw_wownero/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: c41c4dad9aa5003a914cfb2c528c76386f952665
ref: af5277f96073917185864d3596e82b67bee54e78
# ref: 6eb571ea498ed7b854934785f00fabfd0dadf75b # monero_c hash
path: impls/monero.dart
mutex: ^3.1.0
Expand Down
6 changes: 3 additions & 3 deletions integration_test/components/common_test_constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import 'package:cw_core/wallet_type.dart';
class CommonTestConstants {
static final pin = [0, 8, 0, 1];
static final String sendTestAmount = '0.00008';
static final String exchangeTestAmount = '8';
static final String exchangeTestAmount = '0.01';
static final WalletType testWalletType = WalletType.solana;
static final String testWalletName = 'Integrated Testing Wallet';
static final CryptoCurrency testReceiveCurrency = CryptoCurrency.sol;
static final CryptoCurrency testDepositCurrency = CryptoCurrency.usdtSol;
static final CryptoCurrency testReceiveCurrency = CryptoCurrency.usdtSol;
static final CryptoCurrency testDepositCurrency = CryptoCurrency.sol;
static final String testWalletAddress = '5v9gTW1yWPffhnbNKuvtL2frevAf4HpBMw8oYnfqUjhm';
}
13 changes: 10 additions & 3 deletions integration_test/components/common_test_flows.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:flutter_test/flutter_test.dart';

import 'package:cake_wallet/main.dart' as app;

import '../robots/create_pin_welcome_page_robot.dart';
import '../robots/dashboard_page_robot.dart';
import '../robots/disclaimer_page_robot.dart';
import '../robots/new_wallet_page_robot.dart';
Expand Down Expand Up @@ -37,6 +38,7 @@ class CommonTestFlows {
_walletListPageRobot = WalletListPageRobot(_tester),
_newWalletTypePageRobot = NewWalletTypePageRobot(_tester),
_restoreOptionsPageRobot = RestoreOptionsPageRobot(_tester),
_createPinWelcomePageRobot = CreatePinWelcomePageRobot(_tester),
_restoreFromSeedOrKeysPageRobot = RestoreFromSeedOrKeysPageRobot(_tester),
_walletGroupDescriptionPageRobot = WalletGroupDescriptionPageRobot(_tester);

Expand All @@ -53,6 +55,7 @@ class CommonTestFlows {
final WalletListPageRobot _walletListPageRobot;
final NewWalletTypePageRobot _newWalletTypePageRobot;
final RestoreOptionsPageRobot _restoreOptionsPageRobot;
final CreatePinWelcomePageRobot _createPinWelcomePageRobot;
final RestoreFromSeedOrKeysPageRobot _restoreFromSeedOrKeysPageRobot;
final WalletGroupDescriptionPageRobot _walletGroupDescriptionPageRobot;

Expand Down Expand Up @@ -190,23 +193,27 @@ class CommonTestFlows {
WalletType walletTypeToCreate,
List<int> pin,
) async {
await _welcomePageRobot.navigateToCreateNewWalletPage();
await _createPinWelcomePageRobot.tapSetAPinButton();

await setupPinCodeForWallet(pin);

await _welcomePageRobot.navigateToCreateNewWalletPage();

await _selectWalletTypeForWallet(walletTypeToCreate);
}

Future<void> _welcomeToRestoreFromSeedsOrKeysPath(
WalletType walletTypeToRestore,
List<int> pin,
) async {
await _createPinWelcomePageRobot.tapSetAPinButton();

await setupPinCodeForWallet(pin);

await _welcomePageRobot.navigateToRestoreWalletPage();

await _restoreOptionsPageRobot.navigateToRestoreFromSeedsOrKeysPage();

await setupPinCodeForWallet(pin);

await _selectWalletTypeForWallet(walletTypeToRestore);
}

Expand Down
53 changes: 53 additions & 0 deletions integration_test/robots/create_pin_welcome_page_robot.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/welcome/create_pin_welcome_page.dart';
import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:flutter_test/flutter_test.dart';

import '../components/common_test_cases.dart';

class CreatePinWelcomePageRobot {
CreatePinWelcomePageRobot(this.tester) : commonTestCases = CommonTestCases(tester);

final WidgetTester tester;
late CommonTestCases commonTestCases;

Future<void> isCreatePinWelcomePage() async {
await commonTestCases.isSpecificPage<CreatePinWelcomePage>();
}

void hasTitle() {
String title;
if (isMoneroOnly) {
title = S.current.monero_com;
}

if (isHaven) {
title = S.current.haven_app;
}

title = S.current.cake_wallet;

commonTestCases.hasText(title);
}

void hasDescription() {
String description;
if (isMoneroOnly) {
description = S.current.monero_com_wallet_text;
}

if (isHaven) {
description = S.current.haven_app_wallet_text;
}

description = S.current.new_first_wallet_text;

commonTestCases.hasText(description);
}

Future<void> tapSetAPinButton() async {
await commonTestCases.tapItemByKey('create_pin_welcome_page_create_a_pin_button_key');

await commonTestCases.defaultSleepTime();
}
}
14 changes: 5 additions & 9 deletions integration_test/robots/exchange_page_robot.dart
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,8 @@ class ExchangePageRobot {
return;
}

await commonTestCases.dragUntilVisible(
'picker_items_index_${depositCurrency.name}_button_key',
'picker_scrollbar_key',
);
await commonTestCases.enterText(depositCurrency.name, 'search_bar_widget_key');

await commonTestCases.defaultSleepTime();

await commonTestCases.tapItemByKey('picker_items_index_${depositCurrency.name}_button_key');
Expand All @@ -149,10 +147,8 @@ class ExchangePageRobot {
return;
}

await commonTestCases.dragUntilVisible(
'picker_items_index_${receiveCurrency.name}_button_key',
'picker_scrollbar_key',
);
await commonTestCases.enterText(receiveCurrency.name, 'search_bar_widget_key');

await commonTestCases.defaultSleepTime();

await commonTestCases.tapItemByKey('picker_items_index_${receiveCurrency.name}_button_key');
Expand Down Expand Up @@ -318,7 +314,7 @@ class ExchangePageRobot {

Future<void> handleErrors(String initialAmount) async {
await tester.pumpAndSettle();

await _handleMinLimitError(initialAmount);

await _handleMaxLimitError(initialAmount);
Expand Down
11 changes: 5 additions & 6 deletions integration_test/robots/send_page_robot.dart
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,11 @@ class SendPageRobot {
return;
}

await commonTestCases.dragUntilVisible(
'picker_items_index_${receiveCurrency.name}_button_key',
'picker_scrollbar_key',
);
await commonTestCases.enterText(receiveCurrency.title, 'search_bar_widget_key');

await commonTestCases.defaultSleepTime();

await commonTestCases.tapItemByKey('picker_items_index_${receiveCurrency.name}_button_key');
await commonTestCases.tapItemByKey('picker_items_index_${receiveCurrency.fullName}_button_key');
}

Future<void> enterReceiveAddress(String receiveAddress) async {
Expand Down Expand Up @@ -210,6 +208,7 @@ class SendPageRobot {
_handleAuthPage();
}
}
await tester.pump();
}

Future<void> handleSendResult() async {
Expand Down Expand Up @@ -366,4 +365,4 @@ class SendPageRobot {
Future<void> _onIgnoreButtonOnSentDialogPressed() async {
await commonTestCases.tapItemByKey('send_page_sent_dialog_ignore_button_key');
}
}
}
Loading

0 comments on commit c8a2b3f

Please sign in to comment.