Skip to content

Commit 6a6937d

Browse files
committed
test: add integration test for tpm with pin
1 parent acd1ee9 commit 6a6937d

File tree

3 files changed

+92
-11
lines changed

3 files changed

+92
-11
lines changed

apps/ubuntu_bootstrap/integration_test/ubuntu_bootstrap_test.dart

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ void main() {
316316
guidedCapability: GuidedCapability.CORE_BOOT_ENCRYPTED,
317317
);
318318

319-
await tester.testPassphrasePage(passphrase: '', skip: true);
319+
await tester.testPassphraseTypePage();
320320

321321
await tester.testIdentityPage(identity: identity, password: 'password');
322322
await expectIdentity(identity);
@@ -370,6 +370,9 @@ void main() {
370370
guidedCapability: GuidedCapability.CORE_BOOT_ENCRYPTED,
371371
);
372372

373+
await tester.testPassphraseTypePage(
374+
passphraseType: PassphraseType.passphrase,
375+
);
373376
await tester.testPassphrasePage(passphrase: 'passphrase');
374377

375378
await tester.testIdentityPage(identity: identity, password: 'password');
@@ -391,6 +394,66 @@ void main() {
391394
);
392395
});
393396

397+
testWidgets('tpm with pin', (tester) async {
398+
const identity = Identity(
399+
realname: 'User',
400+
hostname: 'ubuntu',
401+
username: 'user',
402+
);
403+
404+
await tester.runApp(
405+
() => app.main([
406+
'--source-catalog=examples/sources/tpm.yaml',
407+
'--dry-run-config=examples/dry-run-configs/tpm.yaml',
408+
'--',
409+
'--bootloader=uefi',
410+
]),
411+
);
412+
413+
await tester.pumpAndSettle();
414+
await tester.testLocalePage();
415+
await tester.testAccessibilityPage();
416+
await tester.testKeyboardPage();
417+
await tester.testNetworkPage(mode: ConnectMode.none);
418+
await tester.testRefreshPage();
419+
await tester.testAutoinstallPage();
420+
await tester.testSourceSelectionPage();
421+
await tester.testCodecsAndDriversPage();
422+
423+
await tester.testStoragePage(
424+
type: StorageType.erase,
425+
);
426+
await tester.testGuidedCapabilityPage(
427+
guidedCapability: GuidedCapability.CORE_BOOT_ENCRYPTED,
428+
);
429+
430+
await tester.testPassphraseTypePage(
431+
passphraseType: PassphraseType.pin,
432+
);
433+
await tester.testPassphrasePage(
434+
passphrase: '12345',
435+
passphraseType: PassphraseType.pin,
436+
);
437+
438+
await tester.testIdentityPage(identity: identity, password: 'password');
439+
await expectIdentity(identity);
440+
441+
await tester.testTimezonePage();
442+
await tester.testConfirmPage();
443+
await tester.testInstallPage();
444+
await tester.testRecoveryKeyPage();
445+
await tester.testDonePage();
446+
447+
final windowClosed = YaruTestWindow.waitForClosed();
448+
await tester.tapContinueTesting();
449+
await expectLater(windowClosed, completes);
450+
451+
await verifySubiquityConfig(
452+
identity: identity,
453+
capability: GuidedCapability.CORE_BOOT_ENCRYPTED,
454+
);
455+
});
456+
394457
testWidgets('manual partitioning', (tester) async {
395458
final storage = [
396459
fakeDisk(

apps/ubuntu_bootstrap/lib/pages/storage/storage_wizard.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export 'guided_reformat/guided_reformat_page.dart';
1616
export 'guided_resize/guided_resize_page.dart';
1717
export 'manual/manual_storage_page.dart';
1818
export 'passphrase/passphrase_page.dart';
19+
export 'passphrase_type/passphrase_type_l10n.dart';
20+
export 'passphrase_type/passphrase_type_page.dart';
1921
export 'storage_page.dart';
2022
export 'storage_routes.dart';
2123

packages/ubuntu_provision_test/lib/src/bootstrap_tester.dart

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -404,30 +404,46 @@ extension UbuntuBootstrapPageTester on WidgetTester {
404404
await pumpAndSettle();
405405
}
406406

407+
Future<void> testPassphraseTypePage({
408+
PassphraseType passphraseType = PassphraseType.none,
409+
String? screenshot,
410+
}) async {
411+
await pumpUntilPage(PassphraseTypePage);
412+
413+
final context = element(find.byType(PassphraseTypePage));
414+
final l10n = UbuntuBootstrapLocalizations.of(context);
415+
416+
expect(find.titleBar(l10n.passphrasePageTitle), findsOneWidget);
417+
418+
if (screenshot != null) {
419+
await takeScreenshot(screenshot);
420+
}
421+
422+
await tap(find.text(passphraseType.localizedTileTitle(l10n)));
423+
await pumpAndSettle();
424+
425+
await tapNext();
426+
await pumpAndSettle();
427+
}
428+
407429
Future<void> testPassphrasePage({
408430
required String passphrase,
409431
String? screenshot,
410-
bool skip = false,
432+
PassphraseType passphraseType = PassphraseType.passphrase,
411433
}) async {
412434
await pumpUntilPage(PassphrasePage);
413435

414436
final context = element(find.byType(PassphrasePage));
415437
final l10n = UbuntuBootstrapLocalizations.of(context);
416438

417-
expect(find.titleBar(l10n.choosePassphraseTitle), findsOneWidget);
418-
419-
if (skip) {
420-
await tapSkip();
421-
await pumpAndSettle();
422-
return;
423-
}
439+
expect(find.titleBar(l10n.passphrasePageTitle), findsOneWidget);
424440

425441
await enterText(
426-
find.textField(l10n.choosePassphraseHint),
442+
find.textField(passphraseType.localizedChooseHint(l10n)),
427443
passphrase,
428444
);
429445
await enterText(
430-
find.textField(l10n.confirmPassphrase),
446+
find.textField(passphraseType.localizedConfirmHint(l10n)),
431447
passphrase,
432448
);
433449

0 commit comments

Comments
 (0)