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
parent
024d6e04b0
commit
5d8c79260e
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue