From 5d8c79260e8a35f0c1ba8f1a83ceefdb144b65f8 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Wed, 21 Oct 2026 00:41:35 +0900 Subject: [PATCH] =?UTF-8?q?145=20=EC=B4=88=EA=B8=B0=ED=99=94=20=EC=B0=BD?= =?UTF-8?q?=20=EC=BA=A1=EC=B2=98:=20=EB=A7=88=EC=8A=A4=ED=84=B0=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EC=B0=BD=EC=97=90=20=EC=B5=9C=EC=83=81=20?= =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20=E2=86=92=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EC=B0=BD=20=EA=B8=B8=20=EA=B7=B8=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=C2=B7=20=EC=B2=98=EC=9D=8C=20=EC=B2=B4=ED=81=AC?= =?UTF-8?q?=EB=8A=94=20=EB=A7=88=EC=8A=A4=ED=84=B0=EB=A7=8C=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20(=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=A7=80=EC=8B=9C?= =?UTF-8?q?=2010/21)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- integration_test/windows_reset_shot_test.dart | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/integration_test/windows_reset_shot_test.dart b/integration_test/windows_reset_shot_test.dart index afd553b..e0c92a8 100644 --- a/integration_test/windows_reset_shot_test.dart +++ b/integration_test/windows_reset_shot_test.dart @@ -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(); 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); }); } }