@@ -553,195 +553,6 @@ private slots:
553553 verifyFolderSyncChangesOnReceivedFileIdNotification (user2, {50 }, {" 2" });
554554 verifyFolderSyncChangesOnReceivedFileIdNotification (user2, {10 , 11 , 17 , 18 , 404 }, {});
555555 }
556-
557- void testE2EFolderBlacklistRestoration ()
558- {
559- // Test that E2E folders can be tracked in the database for restoration
560- // This test verifies the database operations work without requiring full FolderMan setup
561- QTemporaryDir dir;
562- QString dbPath = dir.path () + " /.sync_test.db" ;
563-
564- // Create a database directly
565- SyncJournalDb db (dbPath);
566-
567- // Simulate E2E folders being blacklisted during initialization
568- QStringList e2eFoldersToRestore = {" /encrypted1/" , " /encrypted2/" };
569- QStringList blacklist = {" /regular_blacklisted/" , " /encrypted1/" , " /encrypted2/" };
570-
571- db.setSelectiveSyncList (
572- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist,
573- e2eFoldersToRestore);
574- db.setSelectiveSyncList (
575- SyncJournalDb::SelectiveSyncBlackList,
576- blacklist);
577-
578- // Verify restoration list is set
579- bool ok = false ;
580- auto restorationList = db.getSelectiveSyncList (
581- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
582- QVERIFY (ok);
583- QCOMPARE (restorationList.size (), 2 );
584- QVERIFY (restorationList.contains (" /encrypted1/" ));
585- QVERIFY (restorationList.contains (" /encrypted2/" ));
586-
587- // Verify blacklist includes E2E folders
588- auto currentBlacklist = db.getSelectiveSyncList (
589- SyncJournalDb::SelectiveSyncBlackList, &ok);
590- QVERIFY (ok);
591- QCOMPARE (currentBlacklist.size (), 3 );
592- QVERIFY (currentBlacklist.contains (" /encrypted1/" ));
593- QVERIFY (currentBlacklist.contains (" /encrypted2/" ));
594- QVERIFY (currentBlacklist.contains (" /regular_blacklisted/" ));
595- }
596-
597- void testE2EFolderNotTrackedIfUserBlacklisted ()
598- {
599- // Test that manually blacklisted E2E folders are not tracked for restoration
600- // This is a simplified database test
601- QTemporaryDir dir;
602- QString dbPath = dir.path () + " /.sync_test.db" ;
603-
604- // Create a database directly
605- SyncJournalDb db (dbPath);
606-
607- // User manually blacklisted an E2E folder
608- QStringList userBlacklist = {" /user_blacklisted_e2e/" };
609- db.setSelectiveSyncList (
610- SyncJournalDb::SelectiveSyncBlackList,
611- userBlacklist);
612-
613- // Verify it's blacklisted
614- bool ok = false ;
615- auto blacklist = db.getSelectiveSyncList (
616- SyncJournalDb::SelectiveSyncBlackList, &ok);
617- QVERIFY (ok);
618- QCOMPARE (blacklist.size (), 1 );
619-
620- // Verify it's NOT in restoration list (user choice should be preserved)
621- auto restorationList = db.getSelectiveSyncList (
622- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
623- QVERIFY (ok);
624- QVERIFY (restorationList.isEmpty ());
625- }
626-
627- void testE2ERestorationClearsTrackingList ()
628- {
629- // Test that restoration tracking list can be cleared
630- // This is a simplified database test
631-
632- QTemporaryDir dir;
633- QString dbPath = dir.path () + " /.sync_test.db" ;
634-
635- // Create a database directly
636- SyncJournalDb db (dbPath);
637-
638- // Set up E2E folders for restoration
639- QStringList e2eFoldersToRestore = {" /encrypted/" };
640- db.setSelectiveSyncList (
641- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist,
642- e2eFoldersToRestore);
643- db.setSelectiveSyncList (
644- SyncJournalDb::SelectiveSyncBlackList,
645- e2eFoldersToRestore);
646-
647- // Verify restoration list exists
648- bool ok = false ;
649- auto restorationList = db.getSelectiveSyncList (
650- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
651- QVERIFY (ok);
652- QCOMPARE (restorationList.size (), 1 );
653-
654- // Clear the restoration list (simulating what happens after restoration)
655- db.setSelectiveSyncList (
656- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist,
657- {});
658-
659- // Verify it's cleared
660- restorationList = db.getSelectiveSyncList (
661- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
662- QVERIFY (ok);
663- QVERIFY (restorationList.isEmpty ());
664- }
665-
666- void testScenario1_RestartSimulation ()
667- {
668- QTemporaryDir dir;
669- QString dbPath = dir.path () + " /.sync_test.db" ;
670- SyncJournalDb db (dbPath);
671-
672- // Phase 1: Simulate client startup BEFORE E2E is initialized
673- // E2E folders get temporarily blacklisted
674- QStringList e2eFolders = {" /encrypted-folder/" };
675- QStringList blacklist = {" /encrypted-folder/" };
676-
677- db.setSelectiveSyncList (
678- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist,
679- e2eFolders);
680- db.setSelectiveSyncList (
681- SyncJournalDb::SelectiveSyncBlackList,
682- blacklist);
683-
684- // Verify folders are tracked for restoration
685- bool ok = false ;
686- auto restorationList = db.getSelectiveSyncList (
687- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
688- QVERIFY (ok);
689- QCOMPARE (restorationList.size (), 1 );
690- QVERIFY (restorationList.contains (" /encrypted-folder/" ));
691-
692- // Phase 2: E2E initialization completes
693- // FolderMan::restoreFoldersWhenE2EInitialized() would be called
694- // It should remove folders from blacklist and clear tracking list
695-
696- // Simulate restoration: remove from blacklist
697- db.setSelectiveSyncList (
698- SyncJournalDb::SelectiveSyncBlackList,
699- {});
700-
701- // Clear tracking list
702- db.setSelectiveSyncList (
703- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist,
704- {});
705-
706- // Phase 3: Verify restoration complete
707- auto finalBlacklist = db.getSelectiveSyncList (
708- SyncJournalDb::SelectiveSyncBlackList, &ok);
709- QVERIFY (ok);
710- QVERIFY (finalBlacklist.isEmpty ());
711-
712- auto finalRestorationList = db.getSelectiveSyncList (
713- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
714- QVERIFY (ok);
715- QVERIFY (finalRestorationList.isEmpty ());
716-
717- // Success: Folder is no longer blacklisted and tracking is cleared
718- // This is what allows E2E folders to survive restart
719- }
720-
721- void testScenario4_FreshSetupNoBlacklist ()
722- {
723- QTemporaryDir dir;
724- QString dbPath = dir.path () + " /.sync_test.db" ;
725- SyncJournalDb db (dbPath);
726-
727- // On fresh account setup with E2E already initialized,
728- // folders should NOT be added to blacklist or restoration list
729-
730- // Verify restoration list is empty (no folders were blacklisted)
731- bool ok = false ;
732- auto restorationList = db.getSelectiveSyncList (
733- SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, &ok);
734- QVERIFY (ok);
735- QVERIFY (restorationList.isEmpty ());
736-
737- // Verify blacklist is empty
738- auto blacklist = db.getSelectiveSyncList (
739- SyncJournalDb::SelectiveSyncBlackList, &ok);
740- QVERIFY (ok);
741- QVERIFY (blacklist.isEmpty ());
742-
743- // This ensures fresh setups work correctly without temporary blacklisting
744- }
745556};
746557
747558QTEST_GUILESS_MAIN (TestFolderMan)
0 commit comments