145 초기화 창 캡처: 마스터 입력 창에 최상 비밀번호 → 초기화 창 길 그대로 · 처음 체크는 마스터만 확인 (관리자 지시 10/21)

- windows_reset_shot_test: 마스터 · 최상 비밀번호를 가짜 저장소 (MemorySecretStore) 에 정하고 askMaster 창에 최상 비밀번호를 넣어
  초기화 창으로 (예전에는 showSuperReset 을 바로 불렀다). 체크 3개 · 처음 값 [마스터만] 을 확인하고 마스터 입력 창도 찍음 (0_master)
- [초기화] 는 끝까지 누르지 않음 (정말? 창에서 닫음) - 끝에 마스터 · 최상이 그대로인지 확인
- 결과 (after_1020 024d6e0 + 이것): ko · en · ja × 412 · 960 의 6개 모두 통과, 넘침 없음, 30장 (release\test\shots_145)
- 문구 = 실제로 지우는 것: "저장된 실제 비밀번호 · API 키" = clearStoredSecrets (WebDAV · SFTP 비밀번호 · 키 · 키 암호 · SMB · FTP ·
  AI API 키 · OpenSubtitles 키 · 비밀번호, 아이디 · 서버 목록 남김), "앱 설정 전체" = AppSettings() 저장 (서버 목록과 그 비밀번호 -
  저장할 때 지운 서버의 열쇠를 안전 저장소에서도 지움 - 파일 탐색기 즐겨찾기 포함, videos.json · bookmarks.json 은 따로라 그대로)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rc2
RyuJongJin 2026-10-21 00:41:35 +09:00
parent 024d6e04b0
commit 5d8c79260e
1 changed files with 16 additions and 2 deletions

View File

@ -36,7 +36,9 @@ void main() {
await t.runAsync(() async {
await lock.load();
await lock.setMaster('시험-마스터');
await lock.setSuper('시험-최상');
});
lock.unlocked = false;
final navKey = GlobalKey<NavigatorState>();
final shotKey = GlobalKey();
await t.pumpWidget(RepaintBoundary(
@ -66,10 +68,21 @@ void main() {
await settle();
}
// ① 최상 비밀번호 - 초기화 (무엇을 초기화할지) - 셋 다 체크해 긴 설명까지 보이게
unawaited(showSuperReset(navKey.currentContext!, c, lock));
// ⓪ 관리자 지시 (10/21): 사용자가 가는 길 그대로 - 마스터 입력 창에 최상 비밀번호를 넣으면 초기화 창 (가짜 저장소 · 가짜 비밀번호)
unawaited(askMaster(navKey.currentContext!, c, lock));
await settle();
await shot('0_master');
await t.enterText(find.byType(TextField), '시험-최상');
await t.tap(find.byType(FilledButton).last);
for (var i = 0; i < 100 && find.byType(CheckboxListTile).evaluate().isEmpty; i++) {
await settle(1);
}
// ① 최상 비밀번호 - 초기화 (무엇을 초기화할지): 체크 3개, 처음 체크는 마스터만
expect(find.byType(CheckboxListTile), findsNWidgets(3), reason: '마스터 창에 최상 비밀번호 → 초기화 창');
expect([for (final e in find.byType(CheckboxListTile).evaluate()) (e.widget as CheckboxListTile).value], [true, false, false],
reason: '처음 체크는 마스터만');
await shot('1_super');
// 셋 다 체크해 긴 설명까지 보이게
for (final cb in find.byType(CheckboxListTile).evaluate().toList()) {
final tile = cb.widget as CheckboxListTile;
if (tile.value != true && tile.onChanged != null) tile.onChanged!(true);
@ -88,6 +101,7 @@ void main() {
await shot('4_forgot');
await closeAll();
expect(lock.hasMaster, isTrue, reason: '찍기만 하고 지우지 않음');
expect(lock.hasSuper, isTrue);
});
}
}