mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-12-22 19:39:22 +00:00
124 lines
4.9 KiB
Dart
124 lines
4.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:integration_test/integration_test.dart';
|
|
import 'package:stackwallet/main.dart' as campfireApp;
|
|
import 'package:stackwallet/notifications/campfire_alert.dart';
|
|
import 'package:stackwallet/pages/main_view.dart';
|
|
|
|
import 'bot_runners/create_wallet_until_pin_confirmation.dart';
|
|
import 'bots/onboarding/create_pin_view_bot.dart';
|
|
import 'bots/onboarding/name_your_wallet_view_bot.dart';
|
|
import 'bots/onboarding/onboarding_view_bot.dart';
|
|
import 'bots/onboarding/restore_wallet_form_view_bot.dart';
|
|
import 'bots/onboarding/terms_and_conditions_bot.dart';
|
|
import 'private.dart';
|
|
|
|
void main() {
|
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
|
testWidgets("restore from seed test", (tester) async {
|
|
campfireApp.main();
|
|
await tester.pumpAndSettle(Duration(seconds: 10));
|
|
|
|
// robots
|
|
final onboardingViewBot = OnboardingViewBot(tester);
|
|
final termsAndConditionsViewBot = TermsAndConditionsViewBot(tester);
|
|
final nameYourWalletViewBot = NameYourWalletViewBot(tester);
|
|
final createPinViewBot = CreatePinViewBot(tester);
|
|
|
|
// tap restore wallet button
|
|
await onboardingViewBot.ensureVisible();
|
|
await onboardingViewBot.tapRestoreWallet();
|
|
await termsAndConditionsViewBot.ensureVisible();
|
|
|
|
await createWalletUntilPinConfirmation(
|
|
termsAndConditionsViewBot,
|
|
nameYourWalletViewBot,
|
|
createPinViewBot,
|
|
);
|
|
|
|
await tester.pumpAndSettle(Duration(seconds: 2));
|
|
final restoreWalletFormViewBot = RestoreWalletFormViewBot(tester);
|
|
await restoreWalletFormViewBot.ensureVisible();
|
|
|
|
// test back
|
|
await restoreWalletFormViewBot.tapBack();
|
|
await onboardingViewBot.ensureVisible();
|
|
await onboardingViewBot.tapRestoreWallet();
|
|
await termsAndConditionsViewBot.ensureVisible();
|
|
await createWalletUntilPinConfirmation(
|
|
termsAndConditionsViewBot,
|
|
nameYourWalletViewBot,
|
|
createPinViewBot,
|
|
);
|
|
await tester.pumpAndSettle();
|
|
await restoreWalletFormViewBot.ensureVisible();
|
|
|
|
// open qr scanner and cancel
|
|
// this test fails due to system popup?
|
|
// await restoreWalletFormViewBot.tapScanQrCode();
|
|
// await tester.tap(find.text("ONLY THIS TIME"));
|
|
// await tester.pumpAndSettle();
|
|
// await restoreWalletFormViewBot.tapCancelScanQrCode();
|
|
// await restoreWalletFormViewBot.ensureVisible();
|
|
|
|
// paste invalid mnemonic test
|
|
await Clipboard.setData(ClipboardData(
|
|
text:
|
|
"some mnemonic words some mnemonic words some mnemonic words some mnemonic words some mnemonic words some mnemonic words some mnemonic words some mnemonic words"));
|
|
await restoreWalletFormViewBot.tapPaste();
|
|
await restoreWalletFormViewBot.scrollDown();
|
|
expect(find.text("Please check spelling", skipOffstage: false),
|
|
findsNWidgets(24));
|
|
expect(find.text("some", skipOffstage: false), findsNWidgets(8));
|
|
expect(find.text("mnemonic", skipOffstage: false), findsNWidgets(8));
|
|
expect(find.text("words", skipOffstage: false), findsNWidgets(8));
|
|
|
|
// tap restore on invalid mnemonic words
|
|
await restoreWalletFormViewBot.tapRestore(true);
|
|
await restoreWalletFormViewBot.ensureVisible();
|
|
|
|
// paste valid mnemonic
|
|
await Clipboard.setData(ClipboardData(text: TEST_MNEMONIC));
|
|
await restoreWalletFormViewBot.tapPaste();
|
|
await restoreWalletFormViewBot.scrollDown();
|
|
|
|
// enter a valid word which gives us an invalid mnemonic
|
|
await restoreWalletFormViewBot.enterWord("old", 24);
|
|
await restoreWalletFormViewBot.tapRestore(true);
|
|
expect(find.byType(CampfireAlert), findsOneWidget);
|
|
await tester.tap(find.byKey(Key("campfireAlertOKButtonKey")));
|
|
await tester.pumpAndSettle();
|
|
expect(find.byType(CampfireAlert), findsNothing);
|
|
|
|
// re paste valid mnemonic, restore, and cancel
|
|
await Clipboard.setData(ClipboardData(text: TEST_MNEMONIC));
|
|
await restoreWalletFormViewBot.tapPaste();
|
|
await restoreWalletFormViewBot.scrollDown();
|
|
await restoreWalletFormViewBot.tapRestore(false);
|
|
await restoreWalletFormViewBot.tapCancelRestore();
|
|
await onboardingViewBot.ensureVisible();
|
|
|
|
// full restore
|
|
await onboardingViewBot.tapRestoreWallet();
|
|
await termsAndConditionsViewBot.ensureVisible();
|
|
await createWalletUntilPinConfirmation(
|
|
termsAndConditionsViewBot,
|
|
nameYourWalletViewBot,
|
|
createPinViewBot,
|
|
);
|
|
await tester.pumpAndSettle();
|
|
await restoreWalletFormViewBot.ensureVisible();
|
|
await Clipboard.setData(ClipboardData(text: TEST_MNEMONIC));
|
|
await restoreWalletFormViewBot.tapPaste();
|
|
await restoreWalletFormViewBot.scrollDown();
|
|
await restoreWalletFormViewBot.tapRestore(true);
|
|
|
|
expect(find.byType(MainView), findsOneWidget);
|
|
|
|
await Future.delayed(Duration(seconds: 10));
|
|
|
|
expect(find.byType(ListView, skipOffstage: false), findsNWidgets(1));
|
|
expect(find.text("0.00041252 FIRO"), findsOneWidget);
|
|
});
|
|
}
|