stack_wallet/integration_test/restore_wallet_test.dart
2022-08-26 16:11:35 +08:00

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);
});
}