Requires integration test with real Graph client. Intended behaviour: IProgress<int>.Report is called once per user with an incrementing count (1, 2, 3, ...). Requires live CSOM context — covered by Plan 03-04 implementation Requires live SharePoint admin context Requires live SharePoint admin context Requires live CSOM context — covered by Plan 03-04 implementation Requires live SharePoint tenant Requires live CSOM context — covered by Plan 03-04 implementation Requires live SharePoint tenant Requires live CSOM context — covered by Plan 03-04 implementation Requires live CSOM context — covered by Plan 03-02 implementation Requires live SharePoint tenant Requires live SharePoint tenant Requires Graph permissions - Group.ReadWrite.All Requires live CSOM context — covered by Plan 03-02 implementation Requires live CSOM context — covered by Plan 02 implementation Requires live SharePoint admin context Requires integration test with real Graph client. Intended behaviour: when CancellationToken is cancelled during iteration, the callback returns false and iteration stops, returning partial results (or OperationCanceledException if cancellation fires before first page). Requires live SharePoint tenant Requires live CSOM context — covered by Plan 02 implementation Requires live SharePoint admin context Requires live SharePoint tenant Requires integration test with real Graph client. Intended behaviour: when Graph returns null response, GetUsersAsync returns an empty IReadOnlyList without throwing. Requires interactive MSAL — integration test only Requires live SharePoint tenant and Graph permissions Requires live SP tenant — verify case-insensitive lookup with real data Requires live SP tenant — run manually against a real ClientContext Requires live CSOM context — covered by Plan 03-04 implementation Requires integration test with real Graph client — PageIterator.CreatePageIterator uses internal GraphServiceClient request execution that cannot be mocked via Moq. Intended behaviour: returns all users matching filter across all pages, correctly mapping all 5 fields per user. [xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v3.1.4+50e68bbb8b (64-bit .NET 10.0.4) [xUnit.net 00:00:00.06] Discovering: SharepointToolbox.Tests [xUnit.net 00:00:00.12] Discovered: SharepointToolbox.Tests [xUnit.net 00:00:00.15] Starting: SharepointToolbox.Tests [xUnit.net 00:00:00.26] Requires live SharePoint tenant Test 'SharepointToolbox.Tests.Services.FolderStructureServiceTests.CreateFoldersAsync_ValidRows_CreatesFolders' was skipped in the test run. [xUnit.net 00:00:00.47] Requires interactive MSAL — integration test only Test 'SharepointToolbox.Tests.Auth.SessionManagerTests.GetOrCreateContextAsync_CreatesContext' was skipped in the test run. [xUnit.net 00:00:00.47] Requires live SharePoint tenant [xUnit.net 00:00:00.47] Requires live SharePoint admin context Test 'SharepointToolbox.Tests.Services.TemplateServiceTests.CaptureTemplateAsync_CapturesLibrariesAndFolders' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.TemplateServiceTests.ApplyTemplateAsync_CreatesTeamSiteWithStructure' was skipped in the test run. [xUnit.net 00:00:00.50] Requires live CSOM context — covered by Plan 03-02 implementation [xUnit.net 00:00:00.51] Requires live CSOM context — covered by Plan 03-02 implementation Test 'SharepointToolbox.Tests.Services.StorageServiceTests.CollectStorageAsync_WithFolderDepth1_ReturnsSubfolderNodes' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.StorageServiceTests.CollectStorageAsync_ReturnsLibraryNodes_ForDocumentLibraries' was skipped in the test run. [xUnit.net 00:00:00.57] Requires live CSOM context — covered by Plan 02 implementation [xUnit.net 00:00:00.57] Requires live CSOM context — covered by Plan 02 implementation Test 'SharepointToolbox.Tests.Services.PermissionsServiceTests.ScanSiteAsync_ReturnsPermissionEntries_ForMockedSite' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.PermissionsServiceTests.ScanSiteAsync_WithIncludeInheritedFalse_SkipsItemsWithoutUniquePermissions' was skipped in the test run. [xUnit.net 00:00:00.58] Requires live CSOM context — covered by Plan 03-04 implementation Test 'SharepointToolbox.Tests.Services.DuplicatesServiceTests.ScanDuplicatesAsync_Folders_UsesCamlFSObjType1' was skipped in the test run. [xUnit.net 00:00:00.58] Requires live CSOM context — covered by Plan 03-04 implementation [xUnit.net 00:00:00.58] Requires live CSOM context — covered by Plan 03-04 implementation [xUnit.net 00:00:00.58] Requires live CSOM context — covered by Plan 03-04 implementation [xUnit.net 00:00:00.58] Requires live CSOM context — covered by Plan 03-04 implementation Test 'SharepointToolbox.Tests.Services.DuplicatesServiceTests.ScanDuplicatesAsync_Files_GroupsByCompositeKey' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.SearchServiceTests.SearchFilesAsync_PaginationStopsAt50000' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.SearchServiceTests.SearchFilesAsync_FiltersVersionHistoryPaths' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.SearchServiceTests.SearchFilesAsync_WithExtensionFilter_BuildsCorrectKql' was skipped in the test run. [xUnit.net 00:00:00.62] Requires live SharePoint tenant [xUnit.net 00:00:00.62] Requires live SharePoint tenant and Graph permissions [xUnit.net 00:00:00.62] Requires Graph permissions - Group.ReadWrite.All [xUnit.net 00:00:00.62] Requires live SharePoint admin context Test 'SharepointToolbox.Tests.Services.BulkMemberServiceTests.AddMembersAsync_InvalidEmail_ReportsPerItemError' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.BulkMemberServiceTests.AddMembersAsync_ValidRows_AddsToGroups' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.BulkMemberServiceTests.AddMembersAsync_M365Group_UsesGraphApi' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.BulkSiteServiceTests.CreateSitesAsync_CommunicationSite_CreatesWithUrl' was skipped in the test run. [xUnit.net 00:00:00.62] Requires live SharePoint admin context [xUnit.net 00:00:00.62] Requires live SharePoint admin context [xUnit.net 00:00:00.62] Requires live SharePoint tenant Test 'SharepointToolbox.Tests.Services.BulkSiteServiceTests.CreateSitesAsync_MixedTypes_HandlesEachCorrectly' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.BulkSiteServiceTests.CreateSitesAsync_TeamSite_CreatesWithOwners' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.FileTransferServiceTests.TransferAsync_SkipConflict_DoesNotOverwrite' was skipped in the test run. [xUnit.net 00:00:00.63] Requires live SharePoint tenant [xUnit.net 00:00:00.63] Requires live SharePoint tenant Test 'SharepointToolbox.Tests.Services.FileTransferServiceTests.TransferAsync_CopyMode_CopiesFiles' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.FileTransferServiceTests.TransferAsync_MoveMode_DeletesSourceAfterCopy' was skipped in the test run. [xUnit.net 00:00:00.70] Requires integration test with real Graph client. Intended behaviour: when CancellationToken is cancelled during iteration, the callback returns false and iteration stops, returning partial results (or OperationCanceledException if cancellation fires before first page). Test 'SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_CancelledToken_StopsIteration' was skipped in the test run. [xUnit.net 00:00:00.70] Requires integration test with real Graph client — PageIterator.CreatePageIterator uses internal GraphServiceClient request execution that cannot be mocked via Moq. Intended behaviour: returns all users matching filter across all pages, correctly mapping all 5 fields per user. [xUnit.net 00:00:00.70] Requires integration test with real Graph client. Intended behaviour: when Graph returns null response, GetUsersAsync returns an empty IReadOnlyList without throwing. [xUnit.net 00:00:00.70] Requires integration test with real Graph client. Intended behaviour: IProgress<int>.Report is called once per user with an incrementing count (1, 2, 3, ...). Test 'SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_SinglePage_ReturnsMappedUsers' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_NullResponse_ReturnsEmptyList' was skipped in the test run. Test 'SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_ReportsProgressWithIncrementingCount' was skipped in the test run. [xUnit.net 00:00:00.71] Requires live SP tenant — verify case-insensitive lookup with real data Test 'SharepointToolbox.Tests.Services.SharePointGroupResolverTests.ResolveGroupsAsync_LookupDifferentCasing_FindsGroup' was skipped in the test run. [xUnit.net 00:00:00.71] Requires live SP tenant — run manually against a real ClientContext Test 'SharepointToolbox.Tests.Services.SharePointGroupResolverTests.ResolveGroupsAsync_KnownGroup_ReturnsMembers' was skipped in the test run. [xUnit.net 00:00:01.34] Finished: SharepointToolbox.Tests [xUnit.net 00:00:00.26] SharepointToolbox.Tests.Services.FolderStructureServiceTests.CreateFoldersAsync_ValidRows_CreatesFolders [SKIP] [xUnit.net 00:00:00.47] SharepointToolbox.Tests.Auth.SessionManagerTests.GetOrCreateContextAsync_CreatesContext [SKIP] [xUnit.net 00:00:00.47] SharepointToolbox.Tests.Services.TemplateServiceTests.CaptureTemplateAsync_CapturesLibrariesAndFolders [SKIP] [xUnit.net 00:00:00.47] SharepointToolbox.Tests.Services.TemplateServiceTests.ApplyTemplateAsync_CreatesTeamSiteWithStructure [SKIP] [xUnit.net 00:00:00.50] SharepointToolbox.Tests.Services.StorageServiceTests.CollectStorageAsync_WithFolderDepth1_ReturnsSubfolderNodes [SKIP] [xUnit.net 00:00:00.51] SharepointToolbox.Tests.Services.StorageServiceTests.CollectStorageAsync_ReturnsLibraryNodes_ForDocumentLibraries [SKIP] [xUnit.net 00:00:00.57] SharepointToolbox.Tests.Services.PermissionsServiceTests.ScanSiteAsync_ReturnsPermissionEntries_ForMockedSite [SKIP] [xUnit.net 00:00:00.57] SharepointToolbox.Tests.Services.PermissionsServiceTests.ScanSiteAsync_WithIncludeInheritedFalse_SkipsItemsWithoutUniquePermissions [SKIP] [xUnit.net 00:00:00.58] SharepointToolbox.Tests.Services.DuplicatesServiceTests.ScanDuplicatesAsync_Folders_UsesCamlFSObjType1 [SKIP] [xUnit.net 00:00:00.58] SharepointToolbox.Tests.Services.DuplicatesServiceTests.ScanDuplicatesAsync_Files_GroupsByCompositeKey [SKIP] [xUnit.net 00:00:00.58] SharepointToolbox.Tests.Services.SearchServiceTests.SearchFilesAsync_PaginationStopsAt50000 [SKIP] [xUnit.net 00:00:00.58] SharepointToolbox.Tests.Services.SearchServiceTests.SearchFilesAsync_FiltersVersionHistoryPaths [SKIP] [xUnit.net 00:00:00.58] SharepointToolbox.Tests.Services.SearchServiceTests.SearchFilesAsync_WithExtensionFilter_BuildsCorrectKql [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.BulkMemberServiceTests.AddMembersAsync_InvalidEmail_ReportsPerItemError [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.BulkMemberServiceTests.AddMembersAsync_ValidRows_AddsToGroups [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.BulkMemberServiceTests.AddMembersAsync_M365Group_UsesGraphApi [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.BulkSiteServiceTests.CreateSitesAsync_CommunicationSite_CreatesWithUrl [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.BulkSiteServiceTests.CreateSitesAsync_MixedTypes_HandlesEachCorrectly [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.BulkSiteServiceTests.CreateSitesAsync_TeamSite_CreatesWithOwners [SKIP] [xUnit.net 00:00:00.62] SharepointToolbox.Tests.Services.FileTransferServiceTests.TransferAsync_SkipConflict_DoesNotOverwrite [SKIP] [xUnit.net 00:00:00.63] SharepointToolbox.Tests.Services.FileTransferServiceTests.TransferAsync_CopyMode_CopiesFiles [SKIP] [xUnit.net 00:00:00.63] SharepointToolbox.Tests.Services.FileTransferServiceTests.TransferAsync_MoveMode_DeletesSourceAfterCopy [SKIP] [xUnit.net 00:00:00.70] SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_CancelledToken_StopsIteration [SKIP] [xUnit.net 00:00:00.70] SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_SinglePage_ReturnsMappedUsers [SKIP] [xUnit.net 00:00:00.70] SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_NullResponse_ReturnsEmptyList [SKIP] [xUnit.net 00:00:00.70] SharepointToolbox.Tests.Services.GraphUserDirectoryServiceTests.GetUsersAsync_ReportsProgressWithIncrementingCount [SKIP] [xUnit.net 00:00:00.71] SharepointToolbox.Tests.Services.SharePointGroupResolverTests.ResolveGroupsAsync_LookupDifferentCasing_FindsGroup [SKIP] [xUnit.net 00:00:00.71] SharepointToolbox.Tests.Services.SharePointGroupResolverTests.ResolveGroupsAsync_KnownGroup_ReturnsMembers [SKIP]