From d884f308cb0e841259c184b46ea09f1fcec5425e Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Wed, 3 Dec 2025 14:12:42 +0000 Subject: [PATCH 1/8] Main --- .../Providers/BaseDmsProvider.vb | 200 ++++++++++++++++++ .../BaseDmsProviderTestBase.vb | 98 +++++++++ 2 files changed, 298 insertions(+) diff --git a/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb b/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb index 5987cb2..eb907c7 100644 --- a/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb +++ b/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb @@ -122,6 +122,26 @@ Namespace Providers Return RemoteItem IsNot Nothing End Function + ''' + ''' Async alternative to + ''' + ''' + Public Overridable Async Function RemoteItemExistsAsync(remotePath As String) As Task(Of Boolean) + Dim RemoteItem As DmsResourceItem = Await Me.ListRemoteItemAsync(remotePath) + Return RemoteItem IsNot Nothing + End Function + + ''' + ''' Async alternative to + ''' Default implementation calls the synchronous implementation on a background task to preserve compatibility. + ''' + ''' + Public Overridable Async Function ListRemoteItemAsync(remotePath As String) As Task(Of DmsResourceItem) + Return Await Task.Run(Function() + Return Me.ListRemoteItem(remotePath) + End Function) + End Function + ''' ''' An existance check for a remote item ''' @@ -137,6 +157,18 @@ Namespace Providers End If End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function RemoteItemExistsAsAsync(remotePath As String) As Task(Of DmsResourceItem.FoundItemType) + Dim RemoteItem As DmsResourceItem = Await Me.ListRemoteItemAsync(remotePath) + If RemoteItem Is Nothing Then + Return DmsResourceItem.FoundItemType.NotFound + Else + Return CType(CType(RemoteItem.ItemType, Byte), DmsResourceItem.FoundItemType) + End If + End Function + ''' ''' An existance check for a remote item (collissions with remote items under the very same name are checked) ''' @@ -154,6 +186,20 @@ Namespace Providers End If End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function RemoteItemExistsUniquelyAsAsync(remotePath As String) As Task(Of DmsResourceItem.FoundItemResult) + Dim RemoteItem As DmsResourceItem = Await Me.ListRemoteItemAsync(remotePath) + If RemoteItem Is Nothing Then + Return DmsResourceItem.FoundItemResult.NotFound + ElseIf RemoteItem.ExtendedInfosCollisionDetected Then + Return DmsResourceItem.FoundItemResult.WithNameCollisions + Else + Return CType(CType(RemoteItem.ItemType, Byte), DmsResourceItem.FoundItemResult) + End If + End Function + ''' ''' Reset file system cache and force refresh on next access ''' @@ -170,6 +216,16 @@ Namespace Providers End Select End Sub + ''' + ''' Async alternative to + ''' Default implementation runs the sync override in a background task. + ''' + Public Overridable Async Function ResetCachesForRemoteItemsAsync(remoteItem As DmsResourceItem, searchType As SearchItemType) As Task + Await Task.Run(Sub() + Me.ResetCachesForRemoteItems(remoteItem, searchType) + End Sub) + End Function + ''' ''' Reset file system cache and force refresh on next access ''' @@ -177,6 +233,16 @@ Namespace Providers ''' Public MustOverride Sub ResetCachesForRemoteItems(remoteFolderPath As String, searchType As SearchItemType) + ''' + ''' Async alternative to + ''' Default implementation calls synchronous override on background thread. + ''' + Public Overridable Async Function ResetCachesForRemoteItemsAsync(remoteFolderPath As String, searchType As SearchItemType) As Task + Await Task.Run(Sub() + Me.ResetCachesForRemoteItems(remoteFolderPath, searchType) + End Sub) + End Function + ''' ''' List all child items (files/folders/collections) for a remote path ''' @@ -185,6 +251,16 @@ Namespace Providers ''' Public MustOverride Function ListAllRemoteItems(remoteFolderPath As String, searchType As SearchItemType) As List(Of DmsResourceItem) + ''' + ''' Async alternative to + ''' Default implementation calls synchronous override on background thread. + ''' + Public Overridable Async Function ListAllRemoteItemsAsync(remoteFolderPath As String, searchType As SearchItemType) As Task(Of List(Of DmsResourceItem)) + Return Await Task.Run(Function() + Return Me.ListAllRemoteItems(remoteFolderPath, searchType) + End Function) + End Function + ''' ''' List all child collections for a remote path ''' @@ -200,6 +276,19 @@ Namespace Providers Return Result End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function ListAllCollectionItemsAsync(remoteFolderPath As String) As Task(Of List(Of DmsResourceItem)) + Dim Result As New List(Of DmsResourceItem) + For Each Item In Await Me.ListAllRemoteItemsAsync(remoteFolderPath, SearchItemType.Collections) + If Item.ItemType = DmsResourceItem.ItemTypes.Collection Then + Result.Add(Item) + End If + Next + Return Result + End Function + ''' ''' List all child folders for a remote path ''' @@ -215,6 +304,19 @@ Namespace Providers Return Result End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function ListAllFolderItemsAsync(remoteFolderPath As String) As Task(Of List(Of DmsResourceItem)) + Dim Result As New List(Of DmsResourceItem) + For Each Item In Await Me.ListAllRemoteItemsAsync(remoteFolderPath, SearchItemType.Folders) + If Item.ItemType = DmsResourceItem.ItemTypes.Folder Then + Result.Add(Item) + End If + Next + Return Result + End Function + ''' ''' List all child files for a remote path ''' @@ -230,6 +332,19 @@ Namespace Providers Return Result End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function ListAllFileItemsAsync(remoteFolderPath As String) As Task(Of List(Of DmsResourceItem)) + Dim Result As New List(Of DmsResourceItem) + For Each Item In Await Me.ListAllRemoteItemsAsync(remoteFolderPath, SearchItemType.Files) + If Item.ItemType = DmsResourceItem.ItemTypes.File Then + Result.Add(Item) + End If + Next + Return Result + End Function + ''' ''' List all child collection names for a remote path ''' @@ -245,6 +360,19 @@ Namespace Providers Return Result End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function ListAllCollectionNamesAsync(remoteFolderPath As String) As Task(Of List(Of String)) + Dim Result As New List(Of String) + For Each Item In Await Me.ListAllCollectionItemsAsync(remoteFolderPath) + If Item.ItemType = DmsResourceItem.ItemTypes.Collection Then + Result.Add(Item.Name) + End If + Next + Return Result + End Function + ''' ''' List all child folder names for a remote path ''' @@ -260,6 +388,19 @@ Namespace Providers Return Result End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function ListAllFolderNamesAsync(remoteFolderPath As String) As Task(Of List(Of String)) + Dim Result As New List(Of String) + For Each Item In Await Me.ListAllFolderItemsAsync(remoteFolderPath) + If Item.ItemType = DmsResourceItem.ItemTypes.Folder Then + Result.Add(Item.Name) + End If + Next + Return Result + End Function + ''' ''' List all child file names for a remote path ''' @@ -275,6 +416,19 @@ Namespace Providers Return Result End Function + ''' + ''' Async alternative to + ''' + Public Overridable Async Function ListAllFileNamesAsync(remoteFolderPath As String) As Task(Of List(Of String)) + Dim Result As New List(Of String) + For Each Item In Await Me.ListAllFileItemsAsync(remoteFolderPath) + If Item.ItemType = DmsResourceItem.ItemTypes.File Then + Result.Add(Item.Name) + End If + Next + Return Result + End Function + ''' ''' Load a remote collection item based on its ID ''' @@ -629,6 +783,37 @@ Namespace Providers End Select End Sub + ''' + ''' Async alternative to Move + ''' + Public Async Function MoveAsync(remoteSourcePath As String, remoteDestinationPath As String) As Task + Await Me.MoveAsync(remoteSourcePath, remoteDestinationPath, False, False) + End Function + + ''' + ''' Async alternative to Move + ''' + Public Overridable Async Function MoveAsync(remoteSourcePath As String, remoteDestinationPath As String, allowOverwrite As Boolean?, allowCreationOfRemoteDirectory As Boolean) As Task + Dim FoundRemoteSourceItem As DmsResourceItem.FoundItemResult = Await Me.RemoteItemExistsUniquelyAsAsync(remoteSourcePath) + Me.CopyMoveArgumentsCheck(FoundRemoteSourceItem, remoteSourcePath, remoteDestinationPath, allowOverwrite, allowCreationOfRemoteDirectory) + Dim ParentDirPathSource As String = Me.ParentDirectoryPath(remoteSourcePath) + Dim ParentDirPathDestination As String = Me.ParentDirectoryPath(remoteDestinationPath) + Select Case FoundRemoteSourceItem + Case DmsResourceItem.FoundItemResult.File + Await Me.MoveFileItemAsync(remoteSourcePath, remoteDestinationPath, allowOverwrite) + Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathSource, SearchItemType.Files) + Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathDestination, SearchItemType.Files) + Case DmsResourceItem.FoundItemResult.Folder, DmsResourceItem.FoundItemResult.Collection + Await Me.MoveDirectoryItemAsync(remoteSourcePath, remoteDestinationPath) + Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathSource, SearchItemType.Folders) + Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathDestination, SearchItemType.Folders) + Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathSource, SearchItemType.Collections) + Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathDestination, SearchItemType.Collections) + Case Else + Throw New NotImplementedException + End Select + End Function + ''' ''' Move a remote DMS item ''' @@ -664,6 +849,13 @@ Namespace Providers ''' ''' Protected MustOverride Sub MoveFileItem(remoteSourcePath As String, remoteDestinationPath As String, allowOverwrite As Boolean?) + ''' + ''' Async alternative to MoveFileItem. Default implementation calls synchronous override on background thread. + ''' + Protected Overridable Async Function MoveFileItemAsync(remoteSourcePath As String, remoteDestinationPath As String, allowOverwrite As Boolean?) As Task + Await Task.Run(Sub() + Me.MoveFileItem(remoteSourcePath, remoteDestinationPath, allowOverwrite) + End Sub) ''' ''' Move a remote DMS item @@ -672,6 +864,14 @@ Namespace Providers ''' Protected MustOverride Sub MoveDirectoryItem(remoteSourcePath As String, remoteDestinationPath As String) + ''' + ''' Async alternative to MoveDirectoryItem. Default implementation calls synchronous override on background thread. + ''' + Protected Overridable Async Function MoveDirectoryItemAsync(remoteSourcePath As String, remoteDestinationPath As String) As Task + Await Task.Run(Sub() + Me.MoveDirectoryItem(remoteSourcePath, remoteDestinationPath) + End Sub) + ''' ''' Delete a remote item (folder, collection or file) ''' diff --git a/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb b/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb index de14b51..e707f44 100644 --- a/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb +++ b/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb @@ -19,6 +19,104 @@ Public MustInherit Class BaseDmsProviderTestBase End If End Sub + Public Async Function ListRemoteItemAsync() As Threading.Tasks.Task + Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider + Dim Item As DmsResourceItem + + Assert.Catch(Of System.ArgumentNullException)(Async Sub() + Await DmsProvider.ListRemoteItemAsync(Nothing) + End Sub) + Item = Await DmsProvider.ListRemoteItemAsync(DmsProvider.BrowseInRootFolderName) + System.Console.WriteLine(Item) + Assert.NotNull(Item) + Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) + Assert.AreEqual("", Item.Folder) + Assert.AreEqual("", Item.Name) + + Item = Await DmsProvider.ListRemoteItemAsync(DmsProvider.DirectorySeparator) + System.Console.WriteLine(Item) + Assert.NotNull(Item) + Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) + Assert.AreEqual("", Item.Folder) + Assert.AreEqual("", Item.Name) + + Item = Await DmsProvider.ListRemoteItemAsync("") + System.Console.WriteLine(Item) + Assert.NotNull(Item) + Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) + Assert.AreEqual("", Item.Folder) + Assert.AreEqual("", Item.Name) + + For Each RemoteFolder As String In Me.RemoteFoldersMustExist + Item = Await DmsProvider.ListRemoteItemAsync(RemoteFolder) + System.Console.WriteLine(Item) + Assert.NotNull(Item) + Assert.AreEqual(True, Item.ItemType = DmsResourceItem.ItemTypes.Folder OrElse Item.ItemType = DmsResourceItem.ItemTypes.Collection) + Assert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) + Assert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), Item.Name) + System.Console.WriteLine("---") + Next + + For Each RemoteFile As String In Me.RemoteFilesMustExist + Item = Await DmsProvider.ListRemoteItemAsync(RemoteFile) + System.Console.WriteLine(Item) + Assert.NotNull(Item) + Assert.AreEqual(DmsResourceItem.ItemTypes.File, Item.ItemType) + Assert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) + Assert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), Item.Name) + System.Console.WriteLine("---") + Next + + Item = Await DmsProvider.ListRemoteItemAsync("not-found") + System.Console.WriteLine(Item) + Assert.Null(Item) + For Each RemoteItem As String In Me.RemoteItemsMustNotExist + Item = Await DmsProvider.ListRemoteItemAsync(RemoteItem) + System.Console.WriteLine(Item) + Assert.Null(Item) + Next + + End Function + + Public Async Function ListAllRemoteItemsAsync() As Threading.Tasks.Task + Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider + Dim Items As List(Of DmsResourceItem) + + Items = Await DmsProvider.ListAllRemoteItemsAsync(DmsProvider.BrowseInRootFolderName, BaseDmsProvider.SearchItemType.AllItems) + For Each MyItem As DmsResourceItem In Items + System.Console.WriteLine(MyItem.ToString & " [ETag/ProvderSpecificHash: " & MyItem.ProviderSpecificHashOrETag & "] [Last Modification: " & MyItem.LastModificationOnLocalTime.GetValueOrDefault.ToString("yyyy-MM-dd HH:mm:ss") & "]") + Assert.AreEqual("", MyItem.Folder) + Next + Assert.NotZero(Items.Count) + System.Console.WriteLine("---") + + For Each RemoteFolder As String In Me.RemoteFoldersMustExist + Items = Await DmsProvider.ListAllRemoteItemsAsync(RemoteFolder, BaseDmsProvider.SearchItemType.AllItems) + For Each MyItem As DmsResourceItem In Items + System.Console.WriteLine(MyItem.ToString & " [ETag/ProvderSpecificHash: " & MyItem.ProviderSpecificHashOrETag & "] [Last Modification: " & MyItem.LastModificationOnLocalTime.GetValueOrDefault.ToString("yyyy-MM-dd HH:mm:ss") & "]") + Assert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), IIf(MyItem.Folder <> Nothing, MyItem.Folder, MyItem.Collection)) + Assert.IsNotEmpty(MyItem.Name) + Next + System.Console.WriteLine("---") + Next + End Function + + Public Async Function RemoteItemExistsAsync() As Threading.Tasks.Task + Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider + For Each MustNotExistItem As String In Me.RemoteItemsMustNotExist + Assert.IsFalse(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) + Next + For Each MustNotExistItem As String In Me.RemoteFilesMustExist + Assert.IsTrue(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) + Next + For Each MustNotExistItem As String In Me.RemoteCollectionsMustExist + Assert.IsTrue(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) + Next + For Each MustNotExistItem As String In Me.RemoteFoldersMustExist + Assert.IsTrue(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) + Next + End Function + Public Sub RemoveSslIgnore() If IgnoreSslErrors Then System.Net.ServicePointManager.ServerCertificateValidationCallback = OriginalSslValidateCallback From 020aba41e7d88597ffe2843b1104341ae4fa8fb2 Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Wed, 3 Dec 2025 15:17:20 +0100 Subject: [PATCH 2/8] Revert "accidential commits for async feature on main branch at this stage" This reverts commit 657d3ab174f8852dbb3f0788c80471db3b4667a8. --- .../Providers/BaseDmsProvider.vb | 200 ------------------ .../BaseDmsProviderTestBase.vb | 98 --------- 2 files changed, 298 deletions(-) diff --git a/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb b/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb index eb907c7..5987cb2 100644 --- a/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb +++ b/CompuMaster.Dms.Providers/Providers/BaseDmsProvider.vb @@ -122,26 +122,6 @@ Namespace Providers Return RemoteItem IsNot Nothing End Function - ''' - ''' Async alternative to - ''' - ''' - Public Overridable Async Function RemoteItemExistsAsync(remotePath As String) As Task(Of Boolean) - Dim RemoteItem As DmsResourceItem = Await Me.ListRemoteItemAsync(remotePath) - Return RemoteItem IsNot Nothing - End Function - - ''' - ''' Async alternative to - ''' Default implementation calls the synchronous implementation on a background task to preserve compatibility. - ''' - ''' - Public Overridable Async Function ListRemoteItemAsync(remotePath As String) As Task(Of DmsResourceItem) - Return Await Task.Run(Function() - Return Me.ListRemoteItem(remotePath) - End Function) - End Function - ''' ''' An existance check for a remote item ''' @@ -157,18 +137,6 @@ Namespace Providers End If End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function RemoteItemExistsAsAsync(remotePath As String) As Task(Of DmsResourceItem.FoundItemType) - Dim RemoteItem As DmsResourceItem = Await Me.ListRemoteItemAsync(remotePath) - If RemoteItem Is Nothing Then - Return DmsResourceItem.FoundItemType.NotFound - Else - Return CType(CType(RemoteItem.ItemType, Byte), DmsResourceItem.FoundItemType) - End If - End Function - ''' ''' An existance check for a remote item (collissions with remote items under the very same name are checked) ''' @@ -186,20 +154,6 @@ Namespace Providers End If End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function RemoteItemExistsUniquelyAsAsync(remotePath As String) As Task(Of DmsResourceItem.FoundItemResult) - Dim RemoteItem As DmsResourceItem = Await Me.ListRemoteItemAsync(remotePath) - If RemoteItem Is Nothing Then - Return DmsResourceItem.FoundItemResult.NotFound - ElseIf RemoteItem.ExtendedInfosCollisionDetected Then - Return DmsResourceItem.FoundItemResult.WithNameCollisions - Else - Return CType(CType(RemoteItem.ItemType, Byte), DmsResourceItem.FoundItemResult) - End If - End Function - ''' ''' Reset file system cache and force refresh on next access ''' @@ -216,16 +170,6 @@ Namespace Providers End Select End Sub - ''' - ''' Async alternative to - ''' Default implementation runs the sync override in a background task. - ''' - Public Overridable Async Function ResetCachesForRemoteItemsAsync(remoteItem As DmsResourceItem, searchType As SearchItemType) As Task - Await Task.Run(Sub() - Me.ResetCachesForRemoteItems(remoteItem, searchType) - End Sub) - End Function - ''' ''' Reset file system cache and force refresh on next access ''' @@ -233,16 +177,6 @@ Namespace Providers ''' Public MustOverride Sub ResetCachesForRemoteItems(remoteFolderPath As String, searchType As SearchItemType) - ''' - ''' Async alternative to - ''' Default implementation calls synchronous override on background thread. - ''' - Public Overridable Async Function ResetCachesForRemoteItemsAsync(remoteFolderPath As String, searchType As SearchItemType) As Task - Await Task.Run(Sub() - Me.ResetCachesForRemoteItems(remoteFolderPath, searchType) - End Sub) - End Function - ''' ''' List all child items (files/folders/collections) for a remote path ''' @@ -251,16 +185,6 @@ Namespace Providers ''' Public MustOverride Function ListAllRemoteItems(remoteFolderPath As String, searchType As SearchItemType) As List(Of DmsResourceItem) - ''' - ''' Async alternative to - ''' Default implementation calls synchronous override on background thread. - ''' - Public Overridable Async Function ListAllRemoteItemsAsync(remoteFolderPath As String, searchType As SearchItemType) As Task(Of List(Of DmsResourceItem)) - Return Await Task.Run(Function() - Return Me.ListAllRemoteItems(remoteFolderPath, searchType) - End Function) - End Function - ''' ''' List all child collections for a remote path ''' @@ -276,19 +200,6 @@ Namespace Providers Return Result End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function ListAllCollectionItemsAsync(remoteFolderPath As String) As Task(Of List(Of DmsResourceItem)) - Dim Result As New List(Of DmsResourceItem) - For Each Item In Await Me.ListAllRemoteItemsAsync(remoteFolderPath, SearchItemType.Collections) - If Item.ItemType = DmsResourceItem.ItemTypes.Collection Then - Result.Add(Item) - End If - Next - Return Result - End Function - ''' ''' List all child folders for a remote path ''' @@ -304,19 +215,6 @@ Namespace Providers Return Result End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function ListAllFolderItemsAsync(remoteFolderPath As String) As Task(Of List(Of DmsResourceItem)) - Dim Result As New List(Of DmsResourceItem) - For Each Item In Await Me.ListAllRemoteItemsAsync(remoteFolderPath, SearchItemType.Folders) - If Item.ItemType = DmsResourceItem.ItemTypes.Folder Then - Result.Add(Item) - End If - Next - Return Result - End Function - ''' ''' List all child files for a remote path ''' @@ -332,19 +230,6 @@ Namespace Providers Return Result End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function ListAllFileItemsAsync(remoteFolderPath As String) As Task(Of List(Of DmsResourceItem)) - Dim Result As New List(Of DmsResourceItem) - For Each Item In Await Me.ListAllRemoteItemsAsync(remoteFolderPath, SearchItemType.Files) - If Item.ItemType = DmsResourceItem.ItemTypes.File Then - Result.Add(Item) - End If - Next - Return Result - End Function - ''' ''' List all child collection names for a remote path ''' @@ -360,19 +245,6 @@ Namespace Providers Return Result End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function ListAllCollectionNamesAsync(remoteFolderPath As String) As Task(Of List(Of String)) - Dim Result As New List(Of String) - For Each Item In Await Me.ListAllCollectionItemsAsync(remoteFolderPath) - If Item.ItemType = DmsResourceItem.ItemTypes.Collection Then - Result.Add(Item.Name) - End If - Next - Return Result - End Function - ''' ''' List all child folder names for a remote path ''' @@ -388,19 +260,6 @@ Namespace Providers Return Result End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function ListAllFolderNamesAsync(remoteFolderPath As String) As Task(Of List(Of String)) - Dim Result As New List(Of String) - For Each Item In Await Me.ListAllFolderItemsAsync(remoteFolderPath) - If Item.ItemType = DmsResourceItem.ItemTypes.Folder Then - Result.Add(Item.Name) - End If - Next - Return Result - End Function - ''' ''' List all child file names for a remote path ''' @@ -416,19 +275,6 @@ Namespace Providers Return Result End Function - ''' - ''' Async alternative to - ''' - Public Overridable Async Function ListAllFileNamesAsync(remoteFolderPath As String) As Task(Of List(Of String)) - Dim Result As New List(Of String) - For Each Item In Await Me.ListAllFileItemsAsync(remoteFolderPath) - If Item.ItemType = DmsResourceItem.ItemTypes.File Then - Result.Add(Item.Name) - End If - Next - Return Result - End Function - ''' ''' Load a remote collection item based on its ID ''' @@ -783,37 +629,6 @@ Namespace Providers End Select End Sub - ''' - ''' Async alternative to Move - ''' - Public Async Function MoveAsync(remoteSourcePath As String, remoteDestinationPath As String) As Task - Await Me.MoveAsync(remoteSourcePath, remoteDestinationPath, False, False) - End Function - - ''' - ''' Async alternative to Move - ''' - Public Overridable Async Function MoveAsync(remoteSourcePath As String, remoteDestinationPath As String, allowOverwrite As Boolean?, allowCreationOfRemoteDirectory As Boolean) As Task - Dim FoundRemoteSourceItem As DmsResourceItem.FoundItemResult = Await Me.RemoteItemExistsUniquelyAsAsync(remoteSourcePath) - Me.CopyMoveArgumentsCheck(FoundRemoteSourceItem, remoteSourcePath, remoteDestinationPath, allowOverwrite, allowCreationOfRemoteDirectory) - Dim ParentDirPathSource As String = Me.ParentDirectoryPath(remoteSourcePath) - Dim ParentDirPathDestination As String = Me.ParentDirectoryPath(remoteDestinationPath) - Select Case FoundRemoteSourceItem - Case DmsResourceItem.FoundItemResult.File - Await Me.MoveFileItemAsync(remoteSourcePath, remoteDestinationPath, allowOverwrite) - Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathSource, SearchItemType.Files) - Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathDestination, SearchItemType.Files) - Case DmsResourceItem.FoundItemResult.Folder, DmsResourceItem.FoundItemResult.Collection - Await Me.MoveDirectoryItemAsync(remoteSourcePath, remoteDestinationPath) - Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathSource, SearchItemType.Folders) - Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathDestination, SearchItemType.Folders) - Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathSource, SearchItemType.Collections) - Await Me.ResetCachesForRemoteItemsAsync(ParentDirPathDestination, SearchItemType.Collections) - Case Else - Throw New NotImplementedException - End Select - End Function - ''' ''' Move a remote DMS item ''' @@ -849,13 +664,6 @@ Namespace Providers ''' ''' Protected MustOverride Sub MoveFileItem(remoteSourcePath As String, remoteDestinationPath As String, allowOverwrite As Boolean?) - ''' - ''' Async alternative to MoveFileItem. Default implementation calls synchronous override on background thread. - ''' - Protected Overridable Async Function MoveFileItemAsync(remoteSourcePath As String, remoteDestinationPath As String, allowOverwrite As Boolean?) As Task - Await Task.Run(Sub() - Me.MoveFileItem(remoteSourcePath, remoteDestinationPath, allowOverwrite) - End Sub) ''' ''' Move a remote DMS item @@ -864,14 +672,6 @@ Namespace Providers ''' Protected MustOverride Sub MoveDirectoryItem(remoteSourcePath As String, remoteDestinationPath As String) - ''' - ''' Async alternative to MoveDirectoryItem. Default implementation calls synchronous override on background thread. - ''' - Protected Overridable Async Function MoveDirectoryItemAsync(remoteSourcePath As String, remoteDestinationPath As String) As Task - Await Task.Run(Sub() - Me.MoveDirectoryItem(remoteSourcePath, remoteDestinationPath) - End Sub) - ''' ''' Delete a remote item (folder, collection or file) ''' diff --git a/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb b/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb index e707f44..de14b51 100644 --- a/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb +++ b/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb @@ -19,104 +19,6 @@ Public MustInherit Class BaseDmsProviderTestBase End If End Sub - Public Async Function ListRemoteItemAsync() As Threading.Tasks.Task - Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider - Dim Item As DmsResourceItem - - Assert.Catch(Of System.ArgumentNullException)(Async Sub() - Await DmsProvider.ListRemoteItemAsync(Nothing) - End Sub) - Item = Await DmsProvider.ListRemoteItemAsync(DmsProvider.BrowseInRootFolderName) - System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) - Assert.AreEqual("", Item.Folder) - Assert.AreEqual("", Item.Name) - - Item = Await DmsProvider.ListRemoteItemAsync(DmsProvider.DirectorySeparator) - System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) - Assert.AreEqual("", Item.Folder) - Assert.AreEqual("", Item.Name) - - Item = Await DmsProvider.ListRemoteItemAsync("") - System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) - Assert.AreEqual("", Item.Folder) - Assert.AreEqual("", Item.Name) - - For Each RemoteFolder As String In Me.RemoteFoldersMustExist - Item = Await DmsProvider.ListRemoteItemAsync(RemoteFolder) - System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(True, Item.ItemType = DmsResourceItem.ItemTypes.Folder OrElse Item.ItemType = DmsResourceItem.ItemTypes.Collection) - Assert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) - Assert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), Item.Name) - System.Console.WriteLine("---") - Next - - For Each RemoteFile As String In Me.RemoteFilesMustExist - Item = Await DmsProvider.ListRemoteItemAsync(RemoteFile) - System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.File, Item.ItemType) - Assert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) - Assert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), Item.Name) - System.Console.WriteLine("---") - Next - - Item = Await DmsProvider.ListRemoteItemAsync("not-found") - System.Console.WriteLine(Item) - Assert.Null(Item) - For Each RemoteItem As String In Me.RemoteItemsMustNotExist - Item = Await DmsProvider.ListRemoteItemAsync(RemoteItem) - System.Console.WriteLine(Item) - Assert.Null(Item) - Next - - End Function - - Public Async Function ListAllRemoteItemsAsync() As Threading.Tasks.Task - Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider - Dim Items As List(Of DmsResourceItem) - - Items = Await DmsProvider.ListAllRemoteItemsAsync(DmsProvider.BrowseInRootFolderName, BaseDmsProvider.SearchItemType.AllItems) - For Each MyItem As DmsResourceItem In Items - System.Console.WriteLine(MyItem.ToString & " [ETag/ProvderSpecificHash: " & MyItem.ProviderSpecificHashOrETag & "] [Last Modification: " & MyItem.LastModificationOnLocalTime.GetValueOrDefault.ToString("yyyy-MM-dd HH:mm:ss") & "]") - Assert.AreEqual("", MyItem.Folder) - Next - Assert.NotZero(Items.Count) - System.Console.WriteLine("---") - - For Each RemoteFolder As String In Me.RemoteFoldersMustExist - Items = Await DmsProvider.ListAllRemoteItemsAsync(RemoteFolder, BaseDmsProvider.SearchItemType.AllItems) - For Each MyItem As DmsResourceItem In Items - System.Console.WriteLine(MyItem.ToString & " [ETag/ProvderSpecificHash: " & MyItem.ProviderSpecificHashOrETag & "] [Last Modification: " & MyItem.LastModificationOnLocalTime.GetValueOrDefault.ToString("yyyy-MM-dd HH:mm:ss") & "]") - Assert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), IIf(MyItem.Folder <> Nothing, MyItem.Folder, MyItem.Collection)) - Assert.IsNotEmpty(MyItem.Name) - Next - System.Console.WriteLine("---") - Next - End Function - - Public Async Function RemoteItemExistsAsync() As Threading.Tasks.Task - Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider - For Each MustNotExistItem As String In Me.RemoteItemsMustNotExist - Assert.IsFalse(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) - Next - For Each MustNotExistItem As String In Me.RemoteFilesMustExist - Assert.IsTrue(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) - Next - For Each MustNotExistItem As String In Me.RemoteCollectionsMustExist - Assert.IsTrue(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) - Next - For Each MustNotExistItem As String In Me.RemoteFoldersMustExist - Assert.IsTrue(Await DmsProvider.RemoteItemExistsAsync(MustNotExistItem)) - Next - End Function - Public Sub RemoveSslIgnore() If IgnoreSslErrors Then System.Net.ServicePointManager.ServerCertificateValidationCallback = OriginalSslValidateCallback From 10b6abe05c7508d64e20cfe3a1365026991e3b58 Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Fri, 2 Jan 2026 16:06:05 +0100 Subject: [PATCH 3/8] allow ignoring ssl handshake errors --- .../CompuMaster.Dms.BrowserUI.vbproj | 2 +- .../CompuMaster.Dms.Providers.vbproj | 2 +- .../Data/BaseDmsLoginCredentials.vb | 15 +++++ .../Data/IDmsLoginProfile.vb | 11 ++++ .../Providers/CenterDeviceDmsProvider.vb | 4 +- .../ScopevisioTeamworkDmsProvider.vb | 22 +++++-- .../Providers/WebDavDmsProvider.vb | 59 ++++++++++++++++++- .../CompuMaster.Dms.Test.Providers.vbproj | 2 +- 8 files changed, 104 insertions(+), 13 deletions(-) diff --git a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj index 4891e21..8685d5a 100644 --- a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj +++ b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj @@ -55,7 +55,7 @@ - + diff --git a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj index d8ac53a..e81e05f 100644 --- a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj +++ b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj @@ -59,7 +59,7 @@ - + diff --git a/CompuMaster.Dms.Providers/Data/BaseDmsLoginCredentials.vb b/CompuMaster.Dms.Providers/Data/BaseDmsLoginCredentials.vb index 0c09030..b8d8b7c 100644 --- a/CompuMaster.Dms.Providers/Data/BaseDmsLoginCredentials.vb +++ b/CompuMaster.Dms.Providers/Data/BaseDmsLoginCredentials.vb @@ -9,19 +9,28 @@ Namespace Data Implements IDmsLoginProfile Public Property DmsProvider As BaseDmsProvider.DmsProviders + ''' ''' An optional server address ''' ''' Public Overridable Property BaseUrl As String + ''' ''' An optional customer reference ''' ''' Public Overridable Property CustomerInstance As String + Public Property Username As String Public Property Password As String + ''' + ''' Ignore SSL handshake errors for this DMS server + ''' + ''' + Public Property IgnoreSslErrors As Boolean + Public Property EncryptionProvider As Byte Protected Overridable ReadOnly Property IDmsLoginProfile_ProfileName As String Implements IDmsLoginProfile.ProfileName @@ -60,6 +69,12 @@ Namespace Data End Get End Property + Private ReadOnly Property IDmsLoginProfile_IgnoreSslErrors As Boolean Implements IDmsLoginProfile.IgnoreSslErrors + Get + Return Me.IgnoreSslErrors + End Get + End Property + Protected Function EncryptText(value As String) As String Return value End Function diff --git a/CompuMaster.Dms.Providers/Data/IDmsLoginProfile.vb b/CompuMaster.Dms.Providers/Data/IDmsLoginProfile.vb index b7627ad..b2b65da 100644 --- a/CompuMaster.Dms.Providers/Data/IDmsLoginProfile.vb +++ b/CompuMaster.Dms.Providers/Data/IDmsLoginProfile.vb @@ -12,31 +12,42 @@ Namespace Data ''' ''' ReadOnly Property ProfileName As String + ''' ''' A provider ID ''' ReadOnly Property ProviderID As BaseDmsProvider.DmsProviders + ''' ''' The username for login ''' ''' ReadOnly Property UserName As String + ''' ''' The password for login ''' ''' ReadOnly Property Password As String + ''' ''' An optional reference to the customer instance, e.g. a client number ''' ''' ReadOnly Property CustomerInstance As String + ''' ''' An optional reference to a server ''' ''' ReadOnly Property ServerAddress As String + ''' + ''' Ignore SSL handshake errors for this DMS server + ''' + ''' + ReadOnly Property IgnoreSslErrors As Boolean + End Interface End Namespace \ No newline at end of file diff --git a/CompuMaster.Dms.Providers/Providers/CenterDeviceDmsProvider.vb b/CompuMaster.Dms.Providers/Providers/CenterDeviceDmsProvider.vb index 306ab72..7d5ec34 100644 --- a/CompuMaster.Dms.Providers/Providers/CenterDeviceDmsProvider.vb +++ b/CompuMaster.Dms.Providers/Providers/CenterDeviceDmsProvider.vb @@ -52,7 +52,7 @@ Namespace Providers Return Me.WebApiDefaultUrl End Function - Public Overloads Sub Authorize(loginCredentials As CenterDeviceLoginCredentials) + Public Overloads Sub Authorize(loginCredentials As CenterDeviceLoginCredentials, ignoreSslErrors As Boolean) 'Dim Url As String = Me.CustomizedWebApiUrl(loginCredentials) 'Dim OpenScopeConfig As New Global.CompuMaster.Scopevisio.OpenApi.Client.Configuration() 'OpenScopeConfig.Username = loginCredentials.Username @@ -77,7 +77,7 @@ Namespace Providers Credentials.Username = dmsProfile.UserName Credentials.ClientNumber = dmsProfile.CustomerInstance Credentials.Password = dmsProfile.Password - Me.Authorize(Credentials) + Me.Authorize(Credentials, dmsProfile.IgnoreSslErrors) End Sub End Class diff --git a/CompuMaster.Dms.Providers/Providers/ScopevisioTeamworkDmsProvider.vb b/CompuMaster.Dms.Providers/Providers/ScopevisioTeamworkDmsProvider.vb index 60acf90..6f5785b 100644 --- a/CompuMaster.Dms.Providers/Providers/ScopevisioTeamworkDmsProvider.vb +++ b/CompuMaster.Dms.Providers/Providers/ScopevisioTeamworkDmsProvider.vb @@ -1,6 +1,7 @@ Option Explicit On Option Strict On +Imports System.Net.Http Imports CompuMaster.Dms.Data Imports CompuMaster.Dms.Providers Imports CompuMaster.Scopevisio.OpenApi @@ -55,13 +56,22 @@ Namespace Providers End Function Public Overloads Sub Authorize(loginCredentials As ScopevisioLoginCredentials) + Me.Authorize(loginCredentials, False) + End Sub + Public Overloads Sub Authorize(loginCredentials As ScopevisioLoginCredentials, ignoreSslErrors As Boolean) Try Dim OpenScopeConfig As New Global.CompuMaster.Scopevisio.OpenApi.Client.Configuration With { - .Username = loginCredentials.Username, - .Password = loginCredentials.Password, - .ClientNumber = loginCredentials.ClientNumber, - .OrganisationName = loginCredentials.OrganisationName - } + .Username = loginCredentials.Username, + .Password = loginCredentials.Password, + .ClientNumber = loginCredentials.ClientNumber, + .OrganisationName = loginCredentials.OrganisationName + } + If ignoreSslErrors Then + Dim Handler As New System.Net.Http.HttpClientHandler() With { + .ServerCertificateCustomValidationCallback = Function(sender, certificate, chain, sslPolicyErrors) True + } + OpenScopeConfig.HttpClient = New System.Net.Http.HttpClient(Handler) + End If Dim OpenScopeClient As New CompuMaster.Scopevisio.OpenApi.OpenScopeApiClient(OpenScopeConfig) OpenScopeClient.AuthorizeWithUserCredentials() Me.IOClient = New CompuMaster.Scopevisio.Teamwork.TeamworkIOClient(OpenScopeClient) @@ -93,7 +103,7 @@ Namespace Providers Credentials.Username = dmsProfile.UserName Credentials.ClientNumber = dmsProfile.CustomerInstance Credentials.Password = dmsProfile.Password - Me.Authorize(Credentials) + Me.Authorize(Credentials, dmsProfile.IgnoreSslErrors) End Sub End Class diff --git a/CompuMaster.Dms.Providers/Providers/WebDavDmsProvider.vb b/CompuMaster.Dms.Providers/Providers/WebDavDmsProvider.vb index 1436cef..8c697ed 100644 --- a/CompuMaster.Dms.Providers/Providers/WebDavDmsProvider.vb +++ b/CompuMaster.Dms.Providers/Providers/WebDavDmsProvider.vb @@ -1,8 +1,13 @@ Option Explicit On Option Strict On +Imports System.Net +Imports System.Net.Http +Imports System.Runtime.ConstrainedExecution +Imports System.Security.Claims Imports CompuMaster.Dms.Data Imports CompuMaster.Dms.Providers +Imports WebDav Namespace Providers @@ -56,14 +61,64 @@ Namespace Providers ''' Public Property CustomWebApiUrl As String + Private Shared Function CreateHttpClient(ignoreSslErrors As Boolean, ByVal params As WebDavClientParams) As System.Net.Http.HttpClient + Dim Handler As HttpClientHandler + If ignoreSslErrors = True Then + Handler = New HttpClientHandler() With { + .ServerCertificateCustomValidationCallback = Function(message, cert, chain, errors) True + } + Else + Handler = New HttpClientHandler() + End If + Return CreateConfiguredHttpClient(Handler, params) + End Function + + Private Shared Function CreateConfiguredHttpClient(httpHandler As HttpClientHandler, ByVal params As WebDavClientParams) As System.Net.Http.HttpClient + With httpHandler + .AutomaticDecompression = DecompressionMethods.Deflate Or DecompressionMethods.GZip + .PreAuthenticate = params.PreAuthenticate + .UseDefaultCredentials = params.UseDefaultCredentials + .UseProxy = params.UseProxy + End With + + If params.Credentials IsNot Nothing Then + httpHandler.Credentials = params.Credentials + httpHandler.UseDefaultCredentials = False + End If + + If params.Proxy IsNot Nothing Then + httpHandler.Proxy = params.Proxy + End If + + Dim httpClient = New HttpClient(httpHandler, True) With { + .BaseAddress = params.BaseAddress + } + + If params.Timeout.HasValue Then + httpClient.Timeout = params.Timeout.Value + End If + + For Each header In params.DefaultRequestHeaders + httpClient.DefaultRequestHeaders.Add(header.Key, header.Value) + Next + + Return httpClient + End Function + Public Overloads Sub Authorize(loginCredentials As WebDavLoginCredentials) + Me.Authorize(loginCredentials, False) + End Sub + + Public Overloads Sub Authorize(loginCredentials As WebDavLoginCredentials, ignoreSslErrors As Boolean) Dim Url As String = Me.CustomizedWebApiUrl(loginCredentials) Dim ClientParams As New Global.WebDav.WebDavClientParams() With { .BaseAddress = New System.Uri(Url), .Credentials = New System.Net.NetworkCredential(loginCredentials.Username, loginCredentials.Password) } - Me.WebDavClient = New Global.WebDav.WebDavClient(ClientParams) + Dim HttpClient = CreateHttpClient(True, ClientParams) + Me.WebDavClient = New Global.WebDav.WebDavClient(HttpClient) 'uses copy of method ConfiguredHttpClient from WebDavClient + 'Me.WebDavClient = New Global.WebDav.WebDavClient(ClientParams) 'uses internal method ConfiguredHttpClient from WebDavClient Me._AuthorizedUser = loginCredentials.Username If Url.EndsWith("/") Then Me.CustomWebApiUrl = Url @@ -468,7 +523,7 @@ Namespace Providers Credentials.BaseUrl = dmsProfile.ServerAddress Credentials.Username = dmsProfile.UserName Credentials.Password = dmsProfile.Password - Me.Authorize(Credentials) + Me.Authorize(Credentials, dmsProfile.IgnoreSslErrors) End Sub Public Overrides ReadOnly Property SupportsCollections As Boolean diff --git a/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj b/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj index 1f074cb..fc87ade 100644 --- a/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj +++ b/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj @@ -31,7 +31,7 @@ - + From b2372f0184d8efab6e24d4bd371814c633b4707f Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Fri, 2 Jan 2026 16:09:45 +0100 Subject: [PATCH 4/8] upgraded NUnit from 3.x to 4.x --- .../BaseDmsProviderTestBase.vb | 517 +++++++++--------- .../CompuMaster.Dms.Test.Providers.vbproj | 4 +- .../DmsProviderFactoryTest.vb | 13 +- .../ScopevisioTeamworkSettings.vb | 7 +- CompuMaster.Dms.Test.Providers/ToolsTest.vb | 67 +-- .../WebDavSettings.vb | 7 +- 6 files changed, 310 insertions(+), 305 deletions(-) diff --git a/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb b/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb index de14b51..3efcfd3 100644 --- a/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb +++ b/CompuMaster.Dms.Test.Providers/BaseDmsProviderTestBase.vb @@ -2,6 +2,7 @@ Option Strict On Imports NUnit.Framework +Imports NUnit.Framework.Legacy Imports CompuMaster.Dms Imports CompuMaster.Dms.Data Imports CompuMaster.Dms.Providers @@ -31,7 +32,7 @@ Public MustInherit Class BaseDmsProviderTestBase Public Sub LoginAtRestApiWebservice() Me.LoggedInDmsProvider() - Assert.Pass() + ClassicAssert.Pass() End Sub Public Overridable Sub ListAllFolderNames() @@ -42,7 +43,7 @@ Public MustInherit Class BaseDmsProviderTestBase For Each MyItem As String In Items System.Console.WriteLine(MyItem) Next - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") For Each RemoteFolder As String In Me.RemoteFoldersWithSubFolders @@ -50,7 +51,7 @@ Public MustInherit Class BaseDmsProviderTestBase For Each MyItem As String In Items System.Console.WriteLine(MyItem) Next - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") Next End Sub @@ -65,9 +66,9 @@ Public MustInherit Class BaseDmsProviderTestBase Throw New NotSupportedException("Provider doesn't support collections, but " & NameOf(RemoteCollectionsMustExist) & " contains elements") End If If Me.RemoteCollectionsMustExist.Length = 0 Then - Assert.Zero(Items.Count) + ClassicAssert.Zero(Items.Count) Else - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) End If End Sub @@ -80,9 +81,9 @@ Public MustInherit Class BaseDmsProviderTestBase System.Console.WriteLine(MyItem) Next If DmsProvider.SupportsFilesInRootFolder Then - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) Else - Assert.Zero(Items.Count) + ClassicAssert.Zero(Items.Count) End If System.Console.WriteLine("---") @@ -91,7 +92,7 @@ Public MustInherit Class BaseDmsProviderTestBase For Each MyItem As String In Items System.Console.WriteLine(MyItem) Next - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") Next End Sub @@ -104,28 +105,28 @@ Public MustInherit Class BaseDmsProviderTestBase Items = DmsProvider.ListAllCollectionItems(DmsProvider.BrowseInRootFolderName) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem) - Assert.AreEqual("", MyItem.Collection) - Assert.AreEqual("", MyItem.Folder) - Assert.AreEqual(DmsResourceItem.ItemTypes.Collection, MyItem.ItemType) + ClassicAssert.AreEqual("", MyItem.Collection) + ClassicAssert.AreEqual("", MyItem.Folder) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.Collection, MyItem.ItemType) Next - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") End If Items = DmsProvider.ListAllFolderItems(DmsProvider.BrowseInRootFolderName) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem) - Assert.AreEqual("", MyItem.Collection) - Assert.AreEqual("", MyItem.Folder) - Assert.AreEqual(DmsResourceItem.ItemTypes.Folder, MyItem.ItemType) + ClassicAssert.AreEqual("", MyItem.Collection) + ClassicAssert.AreEqual("", MyItem.Folder) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.Folder, MyItem.ItemType) Next If DmsProvider.SupportsCollections Then 'expect no folders - Assert.Zero(Items.Count) + ClassicAssert.Zero(Items.Count) System.Console.WriteLine("---") Else 'expect existing folders count > 1 - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") End If @@ -133,11 +134,11 @@ Public MustInherit Class BaseDmsProviderTestBase Items = DmsProvider.ListAllFolderItems(RemoteFolder) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem) - Assert.AreEqual("", MyItem.Collection) - Assert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), MyItem.Folder) - Assert.AreEqual(DmsResourceItem.ItemTypes.Folder, MyItem.ItemType) + ClassicAssert.AreEqual("", MyItem.Collection) + ClassicAssert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), MyItem.Folder) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.Folder, MyItem.ItemType) Next - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") Next End Sub @@ -145,16 +146,16 @@ Public MustInherit Class BaseDmsProviderTestBase Public Sub RemoteItemExists() Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider For Each MustNotExistItem As String In Me.RemoteItemsMustNotExist - Assert.IsFalse(DmsProvider.RemoteItemExists(MustNotExistItem)) + ClassicAssert.IsFalse(DmsProvider.RemoteItemExists(MustNotExistItem)) Next For Each MustNotExistItem As String In Me.RemoteFilesMustExist - Assert.IsTrue(DmsProvider.RemoteItemExists(MustNotExistItem)) + ClassicAssert.IsTrue(DmsProvider.RemoteItemExists(MustNotExistItem)) Next For Each MustNotExistItem As String In Me.RemoteCollectionsMustExist - Assert.IsTrue(DmsProvider.RemoteItemExists(MustNotExistItem)) + ClassicAssert.IsTrue(DmsProvider.RemoteItemExists(MustNotExistItem)) Next For Each MustNotExistItem As String In Me.RemoteFoldersMustExist - Assert.IsTrue(DmsProvider.RemoteItemExists(MustNotExistItem)) + ClassicAssert.IsTrue(DmsProvider.RemoteItemExists(MustNotExistItem)) Next End Sub @@ -168,9 +169,9 @@ Public MustInherit Class BaseDmsProviderTestBase Throw New NotSupportedException("Provider doesn't support collections, but " & NameOf(RemoteCollectionsMustExist) & " contains elements") End If If Me.RemoteCollectionsMustExist.Length = 0 Then - Assert.Zero(Items.Count) + ClassicAssert.Zero(Items.Count) Else - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) End If End Sub @@ -181,14 +182,14 @@ Public MustInherit Class BaseDmsProviderTestBase Items = DmsProvider.ListAllFileItems(DmsProvider.BrowseInRootFolderName) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem) - Assert.AreEqual("", MyItem.Collection) - Assert.AreEqual("", MyItem.Folder) - Assert.AreEqual(DmsResourceItem.ItemTypes.File, MyItem.ItemType) + ClassicAssert.AreEqual("", MyItem.Collection) + ClassicAssert.AreEqual("", MyItem.Folder) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.File, MyItem.ItemType) Next If DmsProvider.SupportsFilesInRootFolder Then - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) Else - Assert.Zero(Items.Count) + ClassicAssert.Zero(Items.Count) End If System.Console.WriteLine("---") @@ -196,12 +197,12 @@ Public MustInherit Class BaseDmsProviderTestBase Items = DmsProvider.ListAllFileItems(RemoteFolder) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem) - Assert.AreEqual("", MyItem.Collection) - Assert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), MyItem.Folder) - Assert.AreEqual(DmsResourceItem.ItemTypes.File, MyItem.ItemType) + ClassicAssert.AreEqual("", MyItem.Collection) + ClassicAssert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), MyItem.Folder) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.File, MyItem.ItemType) Next System.Console.WriteLine("---") - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) Next End Sub @@ -220,17 +221,17 @@ Public MustInherit Class BaseDmsProviderTestBase Items = DmsProvider.ListAllRemoteItems(DmsProvider.BrowseInRootFolderName, BaseDmsProvider.SearchItemType.AllItems) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem.ToString & " [ETag/ProvderSpecificHash: " & MyItem.ProviderSpecificHashOrETag & "] [Last Modification: " & MyItem.LastModificationOnLocalTime.GetValueOrDefault.ToString("yyyy-MM-dd HH:mm:ss") & "]") - Assert.AreEqual("", MyItem.Folder) + ClassicAssert.AreEqual("", MyItem.Folder) Next - Assert.NotZero(Items.Count) + ClassicAssert.NotZero(Items.Count) System.Console.WriteLine("---") For Each RemoteFolder As String In Me.RemoteFoldersMustExist Items = DmsProvider.ListAllRemoteItems(RemoteFolder, BaseDmsProvider.SearchItemType.AllItems) For Each MyItem As DmsResourceItem In Items System.Console.WriteLine(MyItem.ToString & " [ETag/ProvderSpecificHash: " & MyItem.ProviderSpecificHashOrETag & "] [Last Modification: " & MyItem.LastModificationOnLocalTime.GetValueOrDefault.ToString("yyyy-MM-dd HH:mm:ss") & "]") - Assert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), IIf(MyItem.Folder <> Nothing, MyItem.Folder, MyItem.Collection)) - Assert.IsNotEmpty(MyItem.Name) + ClassicAssert.AreEqual(Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder), IIf(MyItem.Folder <> Nothing, MyItem.Folder, MyItem.Collection)) + ClassicAssert.IsNotEmpty(MyItem.Name) Next System.Console.WriteLine("---") Next @@ -240,57 +241,57 @@ Public MustInherit Class BaseDmsProviderTestBase Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider Dim Item As DmsResourceItem - Assert.Catch(Of System.ArgumentNullException)(Sub() - DmsProvider.ListRemoteItem(Nothing) - End Sub) + ClassicAssert.Catch(Of System.ArgumentNullException)(Sub() + DmsProvider.ListRemoteItem(Nothing) + End Sub) Item = DmsProvider.ListRemoteItem(DmsProvider.BrowseInRootFolderName) System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) - Assert.AreEqual("", Item.Folder) - Assert.AreEqual("", Item.Name) + ClassicAssert.NotNull(Item) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) + ClassicAssert.AreEqual("", Item.Folder) + ClassicAssert.AreEqual("", Item.Name) Item = DmsProvider.ListRemoteItem(DmsProvider.DirectorySeparator) System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) - Assert.AreEqual("", Item.Folder) - Assert.AreEqual("", Item.Name) + ClassicAssert.NotNull(Item) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) + ClassicAssert.AreEqual("", Item.Folder) + ClassicAssert.AreEqual("", Item.Name) Item = DmsProvider.ListRemoteItem("") System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) - Assert.AreEqual("", Item.Folder) - Assert.AreEqual("", Item.Name) + ClassicAssert.NotNull(Item) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.Root, Item.ItemType) + ClassicAssert.AreEqual("", Item.Folder) + ClassicAssert.AreEqual("", Item.Name) For Each RemoteFolder As String In Me.RemoteFoldersMustExist Item = DmsProvider.ListRemoteItem(RemoteFolder) System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(True, Item.ItemType = DmsResourceItem.ItemTypes.Folder OrElse Item.ItemType = DmsResourceItem.ItemTypes.Collection) - Assert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) - Assert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), Item.Name) + ClassicAssert.NotNull(Item) + ClassicAssert.AreEqual(True, Item.ItemType = DmsResourceItem.ItemTypes.Folder OrElse Item.ItemType = DmsResourceItem.ItemTypes.Collection) + ClassicAssert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) + ClassicAssert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFolder)), Item.Name) System.Console.WriteLine("---") Next For Each RemoteFile As String In Me.RemoteFilesMustExist Item = DmsProvider.ListRemoteItem(RemoteFile) System.Console.WriteLine(Item) - Assert.NotNull(Item) - Assert.AreEqual(DmsResourceItem.ItemTypes.File, Item.ItemType) - Assert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) - Assert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), Item.Name) + ClassicAssert.NotNull(Item) + ClassicAssert.AreEqual(DmsResourceItem.ItemTypes.File, Item.ItemType) + ClassicAssert.AreEqual(Me.RemoteTestItemFolderName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), IIf(Item.Folder <> Nothing, Item.Folder, Item.Collection)) + ClassicAssert.AreEqual(Me.RemoteTestItemFileName(DmsProvider, Me.FolderNameWithoutTrailingDirectorySeparator(DmsProvider, RemoteFile)), Item.Name) System.Console.WriteLine("---") Next Item = DmsProvider.ListRemoteItem("not-found") System.Console.WriteLine(Item) - Assert.Null(Item) + ClassicAssert.Null(Item) For Each RemoteItem As String In Me.RemoteItemsMustNotExist Item = DmsProvider.ListRemoteItem(RemoteItem) System.Console.WriteLine(Item) - Assert.Null(Item) + ClassicAssert.Null(Item) Next End Sub @@ -357,16 +358,16 @@ Public MustInherit Class BaseDmsProviderTestBase Public Sub CorrectTestConfigOverrides() 'Copy property - Assert.AreEqual(CopyDirTestDirSource.Length, CopyDirTestDirTarget.Length) - Assert.AreEqual(CopyDirTestDirSource.Length, CopyDirTestExpectedTargetFile.Length) + ClassicAssert.AreEqual(CopyDirTestDirSource.Length, CopyDirTestDirTarget.Length) + ClassicAssert.AreEqual(CopyDirTestDirSource.Length, CopyDirTestExpectedTargetFile.Length) For Each SourceDir As String In Me.CopyDirTestDirSource - Assert.True(CopyDirTestFileSource.Key.StartsWith(SourceDir)) + ClassicAssert.True(CopyDirTestFileSource.Key.StartsWith(SourceDir)) Next 'Move property - Assert.AreEqual(MoveDirTestDirSource.Length, MoveDirTestDirTarget.Length) - Assert.AreEqual(MoveDirTestDirSource.Length, MoveDirTestExpectedTargetFile.Length) + ClassicAssert.AreEqual(MoveDirTestDirSource.Length, MoveDirTestDirTarget.Length) + ClassicAssert.AreEqual(MoveDirTestDirSource.Length, MoveDirTestExpectedTargetFile.Length) For Each SourceDir As String In Me.MoveDirTestDirSource - Assert.True(MoveDirTestFileSource.Key.StartsWith(SourceDir)) + ClassicAssert.True(MoveDirTestFileSource.Key.StartsWith(SourceDir)) Next End Sub @@ -391,39 +392,39 @@ Public MustInherit Class BaseDmsProviderTestBase Public Sub CombinePath() Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.UninitializedDmsProvider - Assert.AreEqual("folder1/folder2/folder3/folder4", DmsProvider.CombinePath("folder1/folder2", "folder3/folder4")) - Assert.AreEqual("folder1/folder2/folder3/folder4", DmsProvider.CombinePath("folder1", "folder2", "folder3", "folder4")) - Assert.AreEqual("folder3/folder4", DmsProvider.CombinePath("folder1/folder2", "/folder3/folder4")) - Assert.AreEqual("folder3/folder4", DmsProvider.CombinePath("", "/folder3/folder4")) - Assert.AreEqual("folder3/folder4", DmsProvider.CombinePath("", "folder3/folder4")) - Assert.AreEqual("", DmsProvider.CombinePath("folder1/folder2", "/")) - Assert.AreEqual("", DmsProvider.CombinePath("", "/")) - Assert.AreEqual("", DmsProvider.CombinePath("", "")) + ClassicAssert.AreEqual("folder1/folder2/folder3/folder4", DmsProvider.CombinePath("folder1/folder2", "folder3/folder4")) + ClassicAssert.AreEqual("folder1/folder2/folder3/folder4", DmsProvider.CombinePath("folder1", "folder2", "folder3", "folder4")) + ClassicAssert.AreEqual("folder3/folder4", DmsProvider.CombinePath("folder1/folder2", "/folder3/folder4")) + ClassicAssert.AreEqual("folder3/folder4", DmsProvider.CombinePath("", "/folder3/folder4")) + ClassicAssert.AreEqual("folder3/folder4", DmsProvider.CombinePath("", "folder3/folder4")) + ClassicAssert.AreEqual("", DmsProvider.CombinePath("folder1/folder2", "/")) + ClassicAssert.AreEqual("", DmsProvider.CombinePath("", "/")) + ClassicAssert.AreEqual("", DmsProvider.CombinePath("", "")) End Sub Public Sub ParentDirectoryPath() Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.UninitializedDmsProvider - Assert.AreEqual("folder1/folder2/folder3/folder4", DmsProvider.ParentDirectoryPath("folder1/folder2/folder3/folder4/folder5")) - Assert.AreEqual("/folder1/folder2/folder3/folder4", DmsProvider.ParentDirectoryPath("/folder1/folder2/folder3/folder4/folder5")) - Assert.AreEqual("", DmsProvider.ParentDirectoryPath("/folder1/")) - Assert.AreEqual("", DmsProvider.ParentDirectoryPath("/file1")) - Assert.AreEqual("", DmsProvider.ParentDirectoryPath("file1")) - Assert.AreEqual(Nothing, DmsProvider.ParentDirectoryPath("/")) - Assert.AreEqual(Nothing, DmsProvider.ParentDirectoryPath("")) + ClassicAssert.AreEqual("folder1/folder2/folder3/folder4", DmsProvider.ParentDirectoryPath("folder1/folder2/folder3/folder4/folder5")) + ClassicAssert.AreEqual("/folder1/folder2/folder3/folder4", DmsProvider.ParentDirectoryPath("/folder1/folder2/folder3/folder4/folder5")) + ClassicAssert.AreEqual("", DmsProvider.ParentDirectoryPath("/folder1/")) + ClassicAssert.AreEqual("", DmsProvider.ParentDirectoryPath("/file1")) + ClassicAssert.AreEqual("", DmsProvider.ParentDirectoryPath("file1")) + ClassicAssert.AreEqual(Nothing, DmsProvider.ParentDirectoryPath("/")) + ClassicAssert.AreEqual(Nothing, DmsProvider.ParentDirectoryPath("")) End Sub Public Sub ItemName() Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.UninitializedDmsProvider - Assert.AreEqual("folder4", DmsProvider.ItemName("folder1/folder2/folder3/folder4")) - Assert.AreEqual("folder4", DmsProvider.ItemName("/folder1/folder2/folder3/folder4")) - Assert.AreEqual("folder1", DmsProvider.ItemName("/folder1/")) - Assert.AreEqual("file1", DmsProvider.ItemName("/file1")) - Assert.AreEqual("file1", DmsProvider.ItemName("file1")) - Assert.AreEqual("", DmsProvider.ItemName("/")) - Assert.AreEqual("", DmsProvider.ItemName("")) - Assert.Catch(Of ArgumentException)(Sub() - DmsProvider.ItemName(Nothing) - End Sub) + ClassicAssert.AreEqual("folder4", DmsProvider.ItemName("folder1/folder2/folder3/folder4")) + ClassicAssert.AreEqual("folder4", DmsProvider.ItemName("/folder1/folder2/folder3/folder4")) + ClassicAssert.AreEqual("folder1", DmsProvider.ItemName("/folder1/")) + ClassicAssert.AreEqual("file1", DmsProvider.ItemName("/file1")) + ClassicAssert.AreEqual("file1", DmsProvider.ItemName("file1")) + ClassicAssert.AreEqual("", DmsProvider.ItemName("/")) + ClassicAssert.AreEqual("", DmsProvider.ItemName("")) + ClassicAssert.Catch(Of ArgumentException)(Sub() + DmsProvider.ItemName(Nothing) + End Sub) End Sub Protected OriginalSslValidateCallback As System.Net.Security.RemoteCertificateValidationCallback = System.Net.ServicePointManager.ServerCertificateValidationCallback @@ -449,8 +450,8 @@ Public MustInherit Class BaseDmsProviderTestBase 'Lookup status again and check that old caches don't exist Item = dmsProvider.ListRemoteItem(remotePath) - Assert.IsNotNull(Item) - Assert.IsTrue(dmsProvider.RemoteItemExists(remotePath)) + ClassicAssert.IsNotNull(Item) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remotePath)) End Sub Private Shared Sub CreateRemoteTestFolderIfNotExisting(dmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider, remotePath As String) @@ -466,8 +467,8 @@ Public MustInherit Class BaseDmsProviderTestBase 'Lookup status again and check that old caches don't exist Item = dmsProvider.ListRemoteItem(remotePath) - Assert.IsNotNull(Item) - Assert.IsTrue(dmsProvider.RemoteItemExists(remotePath)) + ClassicAssert.IsNotNull(Item) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remotePath)) End Sub Private Shared Sub RemoveRemoteTestCollectionOrFolder(dmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider, remotePath As String) @@ -475,16 +476,16 @@ Public MustInherit Class BaseDmsProviderTestBase 'Lookup status (and fill caches) Item = dmsProvider.ListRemoteItem(remotePath) - Assert.IsNotNull(Item) - Assert.IsTrue(dmsProvider.RemoteItemExists(remotePath)) + ClassicAssert.IsNotNull(Item) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remotePath)) 'Delete the folder dmsProvider.DeleteRemoteItem(remotePath, DmsResourceItem.ItemTypes.Collection, DmsResourceItem.ItemTypes.Folder) 'Lookup status again and check that old caches don't exist Item = dmsProvider.ListRemoteItem(remotePath) - Assert.IsNull(Item) - Assert.IsFalse(dmsProvider.RemoteItemExists(remotePath)) + ClassicAssert.IsNull(Item) + ClassicAssert.IsFalse(dmsProvider.RemoteItemExists(remotePath)) End Sub @@ -497,9 +498,9 @@ Public MustInherit Class BaseDmsProviderTestBase RemoteItemExists = dmsProvider.RemoteItemExists(remotePath) System.Console.WriteLine("CHECK: file " & remotePath & " exists: " & RemoteItemExists) If preCheckItemExistance = TriState.True Then - Assert.IsTrue(RemoteItemExists) + ClassicAssert.IsTrue(RemoteItemExists) ElseIf preCheckItemExistance = TriState.False Then - Assert.IsFalse(RemoteItemExists) + ClassicAssert.IsFalse(RemoteItemExists) End If If RemoteItemExists Then If expectedRemoteItemType = Nothing Then @@ -515,26 +516,26 @@ Public MustInherit Class BaseDmsProviderTestBase Else System.Console.WriteLine("DELETION NOT REQUIRED") End If - Assert.IsFalse(RemoteItemExists) + ClassicAssert.IsFalse(RemoteItemExists) End Sub Public Sub CreateCollectionOrFolderAndCleanup() Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider 'Test RemoteTestFolderName as is - Assert.IsFalse(Me.RemoteTestFolderName.StartsWith(DmsProvider.DirectorySeparator)) 'ensure RemoteTestFolderName is without leading "/" + ClassicAssert.IsFalse(Me.RemoteTestFolderName.StartsWith(DmsProvider.DirectorySeparator)) 'ensure RemoteTestFolderName is without leading "/" If DmsProvider.SupportsCollections Then System.Console.WriteLine("Remote test collection name: " & Me.RemoteTestFolderName) CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) RemoveRemoteTestCollectionOrFolder(DmsProvider, Me.RemoteTestFolderName) - Assert.IsFalse(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsFalse(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else System.Console.WriteLine("Remote test folder name: " & Me.RemoteTestFolderName) CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) RemoveRemoteTestCollectionOrFolder(DmsProvider, Me.RemoteTestFolderName) - Assert.IsFalse(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsFalse(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Test RemoteTestFolderName with leading "/" @@ -542,34 +543,34 @@ Public MustInherit Class BaseDmsProviderTestBase If DmsProvider.SupportsCollections Then System.Console.WriteLine("Remote test collection name: " & RemoteTestFolderNameWithLeadingDirectorySeparator) CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, RemoteTestFolderNameWithLeadingDirectorySeparator) - Assert.IsTrue(DmsProvider.CollectionExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) RemoveRemoteTestCollectionOrFolder(DmsProvider, RemoteTestFolderNameWithLeadingDirectorySeparator) - Assert.IsFalse(DmsProvider.CollectionExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) + ClassicAssert.IsFalse(DmsProvider.CollectionExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) Else System.Console.WriteLine("Remote test folder name: " & RemoteTestFolderNameWithLeadingDirectorySeparator) CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, RemoteTestFolderNameWithLeadingDirectorySeparator) - Assert.IsTrue(DmsProvider.FolderExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) RemoveRemoteTestCollectionOrFolder(DmsProvider, RemoteTestFolderNameWithLeadingDirectorySeparator) - Assert.IsFalse(DmsProvider.FolderExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) + ClassicAssert.IsFalse(DmsProvider.FolderExists(RemoteTestFolderNameWithLeadingDirectorySeparator)) End If End Sub Protected Overridable Sub CreateRemoteCollection(dmsProvider As BaseDmsProvider, remoteCollectionName As String) Try dmsProvider.CreateCollection(remoteCollectionName) - Assert.IsTrue(dmsProvider.RemoteItemExists(remoteCollectionName)) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remoteCollectionName)) Catch ex As NotSupportedException 'OK: e.g. WebDAV doesn't support collections #Disable Warning CA1031 ' Do not catch general exception types Catch ex As Exception - Assert.Fail(ex.Message) + ClassicAssert.Fail(ex.Message) #Enable Warning CA1031 ' Do not catch general exception types End Try End Sub Protected Overridable Sub CreateRemoteFolder(dmsProvider As BaseDmsProvider, remoteFolderName As String) dmsProvider.CreateCollection(remoteFolderName) - Assert.IsTrue(dmsProvider.RemoteItemExists(remoteFolderName)) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remoteFolderName)) End Sub ''' @@ -583,24 +584,24 @@ Public MustInherit Class BaseDmsProviderTestBase Dim FoundFirstDirLevelType = DmsProvider.RemoteItemExistsUniquelyAs(RemotePath) Select Case FoundFirstDirLevelType Case DmsResourceItem.FoundItemResult.Collection - Assert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FoundFirstDirLevelType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FoundFirstDirLevelType) Case Else - Assert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FoundFirstDirLevelType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FoundFirstDirLevelType) End Select Dim DeepFolderStructure As String = DmsProvider.CombinePath(RemotePath, "with", "a", "deep", "folder", "structure") - Assert.Catch(Of DirectoryNotFoundException)(Sub() - DmsProvider.CreateDirectory(DeepFolderStructure, False) - End Sub) + ClassicAssert.Catch(Of DirectoryNotFoundException)(Sub() + DmsProvider.CreateDirectory(DeepFolderStructure, False) + End Sub) DmsProvider.CreateFolder(DeepFolderStructure, True) - Assert.AreEqual(DmsResourceItem.FoundItemResult.Folder, DmsProvider.RemoteItemExistsUniquelyAs(DeepFolderStructure)) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Folder, DmsProvider.RemoteItemExistsUniquelyAs(DeepFolderStructure)) Dim FirstDirType = DmsProvider.RemoteItemExistsUniquelyAs(RemotePath) Select Case FirstDirType Case DmsResourceItem.FoundItemResult.Collection - Assert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FirstDirType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FirstDirType) Case Else - Assert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FirstDirType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FirstDirType) End Select Me.RemoveRemoteItemIfItExists(DmsProvider, RemotePath, DmsResourceItem.ItemTypes.Folder, DmsResourceItem.ItemTypes.Collection, TriState.True) @@ -616,24 +617,24 @@ Public MustInherit Class BaseDmsProviderTestBase Dim FoundFirstDirLevelType = DmsProvider.RemoteItemExistsUniquelyAs(RemotePath) Select Case FoundFirstDirLevelType Case DmsResourceItem.FoundItemResult.Collection - Assert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FoundFirstDirLevelType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FoundFirstDirLevelType) Case Else - Assert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FoundFirstDirLevelType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FoundFirstDirLevelType) End Select Dim DeepFolderStructure As String = DmsProvider.CombinePath(RemotePath, "with", "a", "deep", "folder", "structure") - Assert.Catch(Of DirectoryNotFoundException)(Sub() - DmsProvider.CreateFolder(DeepFolderStructure, False) - End Sub) + ClassicAssert.Catch(Of DirectoryNotFoundException)(Sub() + DmsProvider.CreateFolder(DeepFolderStructure, False) + End Sub) DmsProvider.CreateFolder(DeepFolderStructure, True) - Assert.AreEqual(DmsResourceItem.FoundItemResult.Folder, DmsProvider.RemoteItemExistsUniquelyAs(DeepFolderStructure)) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Folder, DmsProvider.RemoteItemExistsUniquelyAs(DeepFolderStructure)) FoundFirstDirLevelType = DmsProvider.RemoteItemExistsUniquelyAs(RemotePath) Select Case FoundFirstDirLevelType Case DmsResourceItem.FoundItemResult.Collection - Assert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FoundFirstDirLevelType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Collection, FoundFirstDirLevelType) Case Else - Assert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FoundFirstDirLevelType) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Folder, FoundFirstDirLevelType) End Select Me.RemoveRemoteItemIfItExists(DmsProvider, RemotePath, DmsResourceItem.ItemTypes.Folder, DmsResourceItem.ItemTypes.Collection, TriState.True) @@ -648,32 +649,32 @@ Public MustInherit Class BaseDmsProviderTestBase '1st step: create collection as it must work DmsProvider.CreateCollection(RemotePath) - Assert.AreEqual(DmsResourceItem.FoundItemResult.Collection, DmsProvider.RemoteItemExistsUniquelyAs(RemotePath)) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Collection, DmsProvider.RemoteItemExistsUniquelyAs(RemotePath)) Me.RemoveRemoteItemIfItExists(DmsProvider, RemotePath, DmsResourceItem.ItemTypes.Collection, TriState.True) '2nd step: create a remote collection with multiple sub directories that is expected to fail because parent directory doesn't exist If DmsProvider.SupportsCollections Then - Assert.Catch(Of NotSupportedException)(Sub() - DmsProvider.CreateCollection(DmsProvider.CombinePath(RemotePath, "with", "a", "deep", "folder", "structure")) - End Sub) + ClassicAssert.Catch(Of NotSupportedException)(Sub() + DmsProvider.CreateCollection(DmsProvider.CombinePath(RemotePath, "with", "a", "deep", "folder", "structure")) + End Sub) Else - Assert.Catch(Of CompuMaster.Dms.Data.DirectoryNotFoundException)(Sub() - DmsProvider.CreateCollection(DmsProvider.CombinePath(RemotePath, "with", "a", "deep", "folder", "structure")) - End Sub) + ClassicAssert.Catch(Of CompuMaster.Dms.Data.DirectoryNotFoundException)(Sub() + DmsProvider.CreateCollection(DmsProvider.CombinePath(RemotePath, "with", "a", "deep", "folder", "structure")) + End Sub) End If '3nd step: create a remote collection with multiple sub directories that is expected to fail because collections are supported at very first directory level, only DmsProvider.CreateCollection(RemotePath) - Assert.AreEqual(DmsResourceItem.FoundItemResult.Collection, DmsProvider.RemoteItemExistsUniquelyAs(RemotePath)) + ClassicAssert.AreEqual(DmsResourceItem.FoundItemResult.Collection, DmsProvider.RemoteItemExistsUniquelyAs(RemotePath)) - Assert.Catch(Of NotSupportedException)(Sub() - DmsProvider.CreateCollection(DmsProvider.CombinePath(RemotePath, "sub-collection")) - End Sub) + ClassicAssert.Catch(Of NotSupportedException)(Sub() + DmsProvider.CreateCollection(DmsProvider.CombinePath(RemotePath, "sub-collection")) + End Sub) Else 'WebDAV - Assert.Catch(Of NotSupportedException)(Sub() - DmsProvider.CreateCollection(RemotePath) - End Sub) + ClassicAssert.Catch(Of NotSupportedException)(Sub() + DmsProvider.CreateCollection(RemotePath) + End Sub) End If 'Cleanup @@ -688,9 +689,9 @@ Public MustInherit Class BaseDmsProviderTestBase CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If For Each upload In Me.UploadTestFilesAndCleanupAgainFilePath @@ -703,9 +704,9 @@ Public MustInherit Class BaseDmsProviderTestBase Next If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If RemoveRemoteTestCollectionOrFolder(DmsProvider, Me.RemoteTestFolderName) @@ -792,13 +793,13 @@ Public MustInherit Class BaseDmsProviderTestBase 'Lookup status again and check that old caches don't exist Select Case directoryType Case DirectoryTypes.Collection - Assert.IsTrue(DmsProvider.CollectionExists(remotePath)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(remotePath)) RemoteItem = DmsProvider.ListRemoteItem(remotePath) - Assert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteItem.ItemType) + ClassicAssert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteItem.ItemType) Case DirectoryTypes.Folder - Assert.IsTrue(DmsProvider.FolderExists(remotePath)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(remotePath)) RemoteItem = DmsProvider.ListRemoteItem(remotePath) - Assert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Folder, RemoteItem.ItemType) + ClassicAssert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Folder, RemoteItem.ItemType) Case Else Throw New NotImplementedException End Select @@ -812,13 +813,13 @@ Public MustInherit Class BaseDmsProviderTestBase If remoteItemMustExist Then Select Case directoryType Case DirectoryTypes.Collection - Assert.IsTrue(DmsProvider.CollectionExists(remotePath)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(remotePath)) RemoteItem = DmsProvider.ListRemoteItem(remotePath) - Assert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteItem.ItemType) + ClassicAssert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteItem.ItemType) Case DirectoryTypes.Folder - Assert.IsTrue(DmsProvider.FolderExists(remotePath)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(remotePath)) RemoteItem = DmsProvider.ListRemoteItem(remotePath) - Assert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Folder, RemoteItem.ItemType) + ClassicAssert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Folder, RemoteItem.ItemType) Case Else Throw New NotImplementedException End Select @@ -853,13 +854,13 @@ Public MustInherit Class BaseDmsProviderTestBase 'Lookup status again and check that old caches don't exist Select Case directoryType Case DirectoryTypes.Collection - Assert.IsFalse(DmsProvider.CollectionExists(remotePath)) + ClassicAssert.IsFalse(DmsProvider.CollectionExists(remotePath)) RemoteItem = DmsProvider.ListRemoteItem(remotePath) - Assert.IsNull(RemoteItem) + ClassicAssert.IsNull(RemoteItem) Case DirectoryTypes.Folder - Assert.IsFalse(DmsProvider.FolderExists(remotePath)) + ClassicAssert.IsFalse(DmsProvider.FolderExists(remotePath)) RemoteItem = DmsProvider.ListRemoteItem(remotePath) - Assert.IsNull(RemoteItem) + ClassicAssert.IsNull(RemoteItem) Case Else Throw New NotImplementedException End Select @@ -873,14 +874,14 @@ Public MustInherit Class BaseDmsProviderTestBase Const RemoteTestFolderName As String = "ZZZ_UnitTest_CM.Dms.CenterDevice_TempUploadLinkDir" Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider - If DmsProvider.SupportsSharingSetup = False Then Assert.Ignore("Sharing setup not supported by provider") + If DmsProvider.SupportsSharingSetup = False Then ClassicAssert.Ignore("Sharing setup not supported by provider") Me.CreateRemoteTestFolderIfNotExisting(RemoteTestFolderName, DirectoryTypes.Collection) Dim RemoteDirItem As CompuMaster.Dms.Data.DmsResourceItem = DmsProvider.ListRemoteItem(RemoteTestFolderName) - Assert.NotNull(RemoteDirItem.FullName) - Assert.IsNotEmpty(RemoteDirItem.FullName) - Assert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteDirItem.ItemType) - Assert.AreEqual(RemoteTestFolderName, RemoteDirItem.FullName) + ClassicAssert.NotNull(RemoteDirItem.FullName) + ClassicAssert.IsNotEmpty(RemoteDirItem.FullName) + ClassicAssert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteDirItem.ItemType) + ClassicAssert.AreEqual(RemoteTestFolderName, RemoteDirItem.FullName) Dim ShareLink As New Data.DmsLink(RemoteDirItem, DmsProvider) With { @@ -893,20 +894,20 @@ Public MustInherit Class BaseDmsProviderTestBase ShareLink = DmsProvider.CreateLink(RemoteDirItem, ShareLink) - Assert.NotNull(ShareLink.ID) - Assert.IsNotEmpty(ShareLink.ID) + ClassicAssert.NotNull(ShareLink.ID) + ClassicAssert.IsNotEmpty(ShareLink.ID) Select Case DmsProvider.DmsProviderID Case BaseDmsProvider.DmsProviders.CenterDevice, BaseDmsProvider.DmsProviders.Scopevisio Dim CenterDeviceProvider As CompuMaster.Dms.Providers.CenterDeviceDmsProviderBase = CType(DmsProvider, CompuMaster.Dms.Providers.CenterDeviceDmsProviderBase) - Assert.IsNull(CenterDeviceProvider._AllUploadLinks) - Assert.AreEqual(ShareLink.ID, CenterDeviceProvider.IOClient.GetUploadLink(ShareLink.ID).Id) + ClassicAssert.IsNull(CenterDeviceProvider._AllUploadLinks) + ClassicAssert.AreEqual(ShareLink.ID, CenterDeviceProvider.IOClient.GetUploadLink(ShareLink.ID).Id) Case Else Throw New NotImplementedException End Select Dim RefreshedRemoteDirItem As CompuMaster.Dms.Data.DmsResourceItem = DmsProvider.ListRemoteItem(RemoteTestFolderName) - Assert.AreEqual(True, RefreshedRemoteDirItem.ExtendedInfosHasLinks) - Assert.AreEqual(1, RefreshedRemoteDirItem.ExtendedInfosLinks.Count) - Assert.AreEqual(ShareLink.AllowedActions, RefreshedRemoteDirItem.ExtendedInfosLinks(0).AllowedActions) + ClassicAssert.AreEqual(True, RefreshedRemoteDirItem.ExtendedInfosHasLinks) + ClassicAssert.AreEqual(1, RefreshedRemoteDirItem.ExtendedInfosLinks.Count) + ClassicAssert.AreEqual(ShareLink.AllowedActions, RefreshedRemoteDirItem.ExtendedInfosLinks(0).AllowedActions) 'Remove link again Me.RemoveRemoteTestFolder(RemoteTestFolderName, If(DmsProvider.SupportsCollections, DirectoryTypes.Collection, DirectoryTypes.Folder), True) @@ -916,7 +917,7 @@ Public MustInherit Class BaseDmsProviderTestBase Case BaseDmsProvider.DmsProviders.CenterDevice, BaseDmsProvider.DmsProviders.Scopevisio Dim CenterDeviceProvider As CompuMaster.Dms.Providers.CenterDeviceDmsProviderBase = CType(DmsProvider, CompuMaster.Dms.Providers.CenterDeviceDmsProviderBase) 'Re-check with re-querying from server - Assert.Catch(Of CenterDevice.Rest.Exceptions.NotFoundException)( + ClassicAssert.Catch(Of CenterDevice.Rest.Exceptions.NotFoundException)( Sub() CenterDeviceProvider.IOClient.GetUploadLink(ShareLink.ID) End Sub) @@ -926,7 +927,7 @@ Public MustInherit Class BaseDmsProviderTestBase Function(item As CenterDevice.Rest.Clients.Link.UploadLink) As Boolean Return item.Id = ShareLink.ID End Function) - Assert.IsNull(FoundUploadLink) + ClassicAssert.IsNull(FoundUploadLink) Case Else Throw New NotImplementedException End Select @@ -937,7 +938,7 @@ Public MustInherit Class BaseDmsProviderTestBase Const RemoteTestFolderName As String = "ZZZ_UnitTest_CM.Dms.CenterDevice_TempDownloadLinkDir" Dim DmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider = Me.LoggedInDmsProvider - If DmsProvider.SupportsSharingSetup = False Then Assert.Ignore("Sharing setup not supported by provider") + If DmsProvider.SupportsSharingSetup = False Then ClassicAssert.Ignore("Sharing setup not supported by provider") Dim CenterDeviceProvider As CompuMaster.Dms.Providers.CenterDeviceDmsProviderBase = CType(DmsProvider, CompuMaster.Dms.Providers.CenterDeviceDmsProviderBase) @@ -946,10 +947,10 @@ Public MustInherit Class BaseDmsProviderTestBase Me.CreateRemoteTestFolderIfNotExisting(RemoteTestFolderName, DirectoryTypes.Collection) Dim RemoteDirItem As CompuMaster.Dms.Data.DmsResourceItem = DmsProvider.ListRemoteItem(RemoteTestFolderName) - Assert.NotNull(RemoteDirItem.FullName) - Assert.IsNotEmpty(RemoteDirItem.FullName) - Assert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteDirItem.ItemType) - Assert.AreEqual(RemoteTestFolderName, RemoteDirItem.FullName) + ClassicAssert.NotNull(RemoteDirItem.FullName) + ClassicAssert.IsNotEmpty(RemoteDirItem.FullName) + ClassicAssert.AreEqual(Dms.Data.DmsResourceItem.ItemTypes.Collection, RemoteDirItem.ItemType) + ClassicAssert.AreEqual(RemoteTestFolderName, RemoteDirItem.FullName) Dim ShareLink As New Data.DmsLink(RemoteDirItem, DmsProvider) With { @@ -962,15 +963,15 @@ Public MustInherit Class BaseDmsProviderTestBase ShareLink = CenterDeviceProvider.CreateLink(RemoteDirItem, ShareLink) - Assert.NotNull(ShareLink.ID) - Assert.IsNotEmpty(ShareLink.ID) - Assert.AreEqual(ShareLink.ID, CenterDeviceProvider.IOClient.GetLink(ShareLink.ID).Id) + ClassicAssert.NotNull(ShareLink.ID) + ClassicAssert.IsNotEmpty(ShareLink.ID) + ClassicAssert.AreEqual(ShareLink.ID, CenterDeviceProvider.IOClient.GetLink(ShareLink.ID).Id) Me.RemoveRemoteTestFolder(RemoteTestFolderName, DirectoryTypes.Collection, True) - Assert.Catch(Of CenterDevice.Rest.Exceptions.NotFoundException)(Sub() - CenterDeviceProvider.IOClient.GetLink(ShareLink.ID) - End Sub) + ClassicAssert.Catch(Of CenterDevice.Rest.Exceptions.NotFoundException)(Sub() + CenterDeviceProvider.IOClient.GetLink(ShareLink.ID) + End Sub) End Sub @@ -982,9 +983,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Prepare pre-requisites CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Run copy-file tests @@ -995,9 +996,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Test the test If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Cleanup @@ -1015,9 +1016,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Prepare pre-requisites CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Run copy-dir tests @@ -1031,9 +1032,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Test the test If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Cleanup @@ -1072,9 +1073,9 @@ Public MustInherit Class BaseDmsProviderTestBase AssertRemoteDirectoryNotExists(dmsProvider, RemotePathTarget, True) '1st step: copy remote dir on remote storage into a non-existing directory - Assert.Catch(Of DirectoryNotFoundException)(Sub() - dmsProvider.Copy(RemotePathSource, dmsProvider.CombinePath(RemotePathTarget, "will", "never", "exist"), False, False) - End Sub) + ClassicAssert.Catch(Of DirectoryNotFoundException)(Sub() + dmsProvider.Copy(RemotePathSource, dmsProvider.CombinePath(RemotePathTarget, "will", "never", "exist"), False, False) + End Sub) Try dmsProvider.Copy(RemotePathSource, RemotePathTarget, False, True) @@ -1083,18 +1084,18 @@ Public MustInherit Class BaseDmsProviderTestBase Catch ex As NotImplementedException Throw New IgnoreException("Implementation required" & System.Environment.NewLine & ex.ToString, ex) Catch ex As Exception - Assert.AreEqual(RemotePathExpectedTarget, "{NOT-SUPPORTED:" & ex.GetType.FullName & "}", "Catched exception type must match with expected result" & System.Environment.NewLine & ex.ToString) + ClassicAssert.AreEqual(RemotePathExpectedTarget, "{NOT-SUPPORTED:" & ex.GetType.FullName & "}", "Catched exception type must match with expected result" & System.Environment.NewLine & ex.ToString) End Try '3rd step: copy again and fail because of trial to overwrite: not yet implemented to handle what happens if destination already exists (partially)! If RemotePathTarget.EndsWith(dmsProvider.DirectorySeparator) Then - Assert.Catch(Of System.ArgumentException)(Sub() - dmsProvider.Copy(RemotePathSource, RemotePathTarget, True, False) - End Sub) + ClassicAssert.Catch(Of System.ArgumentException)(Sub() + dmsProvider.Copy(RemotePathSource, RemotePathTarget, True, False) + End Sub) Else - Assert.Catch(Of NotImplementedException)(Sub() - dmsProvider.Copy(RemotePathSource, RemotePathTarget, True, False) - End Sub) + ClassicAssert.Catch(Of NotImplementedException)(Sub() + dmsProvider.Copy(RemotePathSource, RemotePathTarget, True, False) + End Sub) End If 'Cleanup @@ -1120,9 +1121,9 @@ Public MustInherit Class BaseDmsProviderTestBase AssertRemoteFileExists(dmsProvider, RemoteFilePathTarget) '3rd step: copy again and fail because of trial to overwrite - Assert.Catch(Of FileAlreadyExistsException)(Sub() - dmsProvider.Copy(RemoteFilePathSource, RemoteFilePathTarget, False, False) - End Sub) + ClassicAssert.Catch(Of FileAlreadyExistsException)(Sub() + dmsProvider.Copy(RemoteFilePathSource, RemoteFilePathTarget, False, False) + End Sub) '4th step: copy again and overwrite dmsProvider.Copy(RemoteFilePathSource, RemoteFilePathTarget, True, False) @@ -1150,22 +1151,22 @@ Public MustInherit Class BaseDmsProviderTestBase Dim CopyTask As Task CopyTask = dmsProvider.CopyAsync(RemoteFilePathSource, RemoteFilePathTarget, False, True) CopyTask.Wait() - Assert.True(CopyTask.IsCompleted) - Assert.False(CopyTask.IsFaulted) - Assert.AreEqual(TaskStatus.RanToCompletion, CopyTask.Status) + ClassicAssert.True(CopyTask.IsCompleted) + ClassicAssert.False(CopyTask.IsFaulted) + ClassicAssert.AreEqual(TaskStatus.RanToCompletion, CopyTask.Status) AssertRemoteFileExists(dmsProvider, RemoteFilePathTarget) '3rd step: copy again and fail because of trial to overwrite - Assert.ThrowsAsync(Of FileAlreadyExistsException)(Async Function() - Await dmsProvider.CopyAsync(RemoteFilePathSource, RemoteFilePathTarget, False, False) - End Function) + ClassicAssert.ThrowsAsync(Of FileAlreadyExistsException)(Async Function() + Await dmsProvider.CopyAsync(RemoteFilePathSource, RemoteFilePathTarget, False, False) + End Function) '4th step: copy again and overwrite CopyTask = dmsProvider.CopyAsync(RemoteFilePathSource, RemoteFilePathTarget, True, False) CopyTask.Wait() - Assert.True(CopyTask.IsCompleted) - Assert.False(CopyTask.IsFaulted) - Assert.AreEqual(TaskStatus.RanToCompletion, CopyTask.Status) + ClassicAssert.True(CopyTask.IsCompleted) + ClassicAssert.False(CopyTask.IsFaulted) + ClassicAssert.AreEqual(TaskStatus.RanToCompletion, CopyTask.Status) AssertRemoteFileExists(dmsProvider, RemoteFilePathTarget) 'Cleanup @@ -1181,9 +1182,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Prepare pre-requisites CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Run move-file tests @@ -1194,9 +1195,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Test the test If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Cleanup @@ -1214,9 +1215,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Prepare pre-requisites CreateRemoteTestCollectionOrFolderIfNotExisting(DmsProvider, Me.RemoteTestFolderName) If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Run move-dir tests @@ -1227,9 +1228,9 @@ Public MustInherit Class BaseDmsProviderTestBase 'Test the test If DmsProvider.SupportsCollections Then - Assert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.CollectionExists(Me.RemoteTestFolderName)) Else - Assert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) + ClassicAssert.IsTrue(DmsProvider.FolderExists(Me.RemoteTestFolderName)) End If 'Cleanup @@ -1257,9 +1258,9 @@ Public MustInherit Class BaseDmsProviderTestBase AssertRemoteDirectoryNotExists(dmsProvider, RemotePathTarget, True) '2nd step: move remote dir on remote storage into a non-existing directory - Assert.Catch(Of DirectoryNotFoundException)(Sub() - dmsProvider.Move(RemotePathSource, dmsProvider.CombinePath(RemotePathTarget, "will", "never", "exist"), False, False) - End Sub) + ClassicAssert.Catch(Of DirectoryNotFoundException)(Sub() + dmsProvider.Move(RemotePathSource, dmsProvider.CombinePath(RemotePathTarget, "will", "never", "exist"), False, False) + End Sub) Try dmsProvider.Move(RemotePathSource, RemotePathTarget, False, True) @@ -1268,26 +1269,26 @@ Public MustInherit Class BaseDmsProviderTestBase AssertRemoteFileExists(dmsProvider, RemotePathExpectedTarget) AssertRemoteFileNotExists(dmsProvider, RemotePathExpectedMovedSourceNotExistingAnyMore, False) Catch ex As DirectoryNotFoundException - Assert.AreEqual(RemotePathExpectedTarget, "{NOT-FOUND:" & ex.RemotePath & "}", "Catched exception type must match with expected result") + ClassicAssert.AreEqual(RemotePathExpectedTarget, "{NOT-FOUND:" & ex.RemotePath & "}", "Catched exception type must match with expected result") Catch ex As DirectoryActionFailedException Throw New IgnoreException(ex.ToString) Catch ex As NotImplementedException Throw New IgnoreException(ex.ToString) Catch ex As Exception - Assert.AreEqual(RemotePathExpectedTarget, "{NOT-SUPPORTED:" & ex.GetType.FullName & "}", "Catched exception type must match with expected result" & System.Environment.NewLine & ex.ToString) + ClassicAssert.AreEqual(RemotePathExpectedTarget, "{NOT-SUPPORTED:" & ex.GetType.FullName & "}", "Catched exception type must match with expected result" & System.Environment.NewLine & ex.ToString) End Try '3rd step: move again and fail because of trial to overwrite: not yet implemented to handle what happens if destination already exists (partially)! UploadInitialTestFile(dmsProvider, Me.MoveDirTestFileSource.Key, Me.MoveDirTestFileSource.Value) AssertRemoteDirectoryExists(dmsProvider, RemotePathSource) If RemotePathTarget.EndsWith(dmsProvider.DirectorySeparator) Then - Assert.Catch(Of System.ArgumentException)(Sub() - dmsProvider.Move(RemotePathSource, RemotePathTarget, True, False) - End Sub) + ClassicAssert.Catch(Of System.ArgumentException)(Sub() + dmsProvider.Move(RemotePathSource, RemotePathTarget, True, False) + End Sub) Else - Assert.Catch(Of NotImplementedException)(Sub() - dmsProvider.Move(RemotePathSource, RemotePathTarget, True, False) - End Sub) + ClassicAssert.Catch(Of NotImplementedException)(Sub() + dmsProvider.Move(RemotePathSource, RemotePathTarget, True, False) + End Sub) End If 'Cleanup @@ -1326,9 +1327,9 @@ Public MustInherit Class BaseDmsProviderTestBase '3rd step: move again and fail because of trial to overwrite If dmsProvider.RemoteItemExists(RemoteFilePathSource) = False Then dmsProvider.UploadFile(RemoteFilePathSource, binaryData) - Assert.Catch(Of FileAlreadyExistsException)(Sub() - dmsProvider.Move(RemoteFilePathSource, RemoteFilePathTarget, False, False) - End Sub) + ClassicAssert.Catch(Of FileAlreadyExistsException)(Sub() + dmsProvider.Move(RemoteFilePathSource, RemoteFilePathTarget, False, False) + End Sub) '4th step: move again and overwrite If dmsProvider.RemoteItemExists(RemoteFilePathSource) = False Then dmsProvider.UploadFile(RemoteFilePathSource, binaryData) @@ -1357,8 +1358,8 @@ Public MustInherit Class BaseDmsProviderTestBase dmsProvider.DeleteRemoteItem(Item, DmsResourceItem.ItemTypes.File) Item = dmsProvider.ListRemoteItem(remoteFilePath) End If - Assert.IsNull(Item, "Remote file must not exist: " & remoteFilePath) - Assert.IsFalse(dmsProvider.RemoteItemExists(remoteFilePath), "Remote file must not exist: " & remoteFilePath) + ClassicAssert.IsNull(Item, "Remote file must not exist: " & remoteFilePath) + ClassicAssert.IsFalse(dmsProvider.RemoteItemExists(remoteFilePath), "Remote file must not exist: " & remoteFilePath) End Sub ''' @@ -1377,8 +1378,8 @@ Public MustInherit Class BaseDmsProviderTestBase End Try Dim Item As DmsResourceItem Item = dmsProvider.ListRemoteItem(remoteFilePath) - Assert.IsNull(Item, "Remote file must not exist: " & remoteFilePath) - Assert.IsFalse(dmsProvider.RemoteItemExists(remoteFilePath), "Remote file must not exist: " & remoteFilePath) + ClassicAssert.IsNull(Item, "Remote file must not exist: " & remoteFilePath) + ClassicAssert.IsFalse(dmsProvider.RemoteItemExists(remoteFilePath), "Remote file must not exist: " & remoteFilePath) End Sub ''' @@ -1395,8 +1396,8 @@ Public MustInherit Class BaseDmsProviderTestBase End Try Dim Item As DmsResourceItem Item = dmsProvider.ListRemoteItem(remoteItemPath) - Assert.IsNull(Item, "Remote item must not exist: " & remoteItemPath) - Assert.IsFalse(dmsProvider.RemoteItemExists(remoteItemPath), "Remote item must not exist: " & remoteItemPath) + ClassicAssert.IsNull(Item, "Remote item must not exist: " & remoteItemPath) + ClassicAssert.IsFalse(dmsProvider.RemoteItemExists(remoteItemPath), "Remote item must not exist: " & remoteItemPath) End Sub ''' @@ -1415,8 +1416,8 @@ Public MustInherit Class BaseDmsProviderTestBase End Try Dim Item As DmsResourceItem Item = dmsProvider.ListRemoteItem(remoteDirectoryPath) - Assert.IsNull(Item, "Remote item must not exist: " & remoteDirectoryPath) - Assert.IsFalse(dmsProvider.RemoteItemExists(remoteDirectoryPath), "Remote item must not exist: " & remoteDirectoryPath) + ClassicAssert.IsNull(Item, "Remote item must not exist: " & remoteDirectoryPath) + ClassicAssert.IsFalse(dmsProvider.RemoteItemExists(remoteDirectoryPath), "Remote item must not exist: " & remoteDirectoryPath) End Sub ''' @@ -1427,9 +1428,9 @@ Public MustInherit Class BaseDmsProviderTestBase Private Sub AssertRemoteFileExists(dmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider, remoteFilePath As String) Dim Item As DmsResourceItem Item = dmsProvider.ListRemoteItem(remoteFilePath) - Assert.IsNotNull(Item, "Remote file must exist: " & remoteFilePath) - Assert.IsFalse(Item.ExtendedInfosCollisionDetected, "Remote file with file name collissions: " & remoteFilePath) - Assert.IsTrue(dmsProvider.RemoteItemExists(remoteFilePath), "Remote file must exist: " & remoteFilePath) + ClassicAssert.IsNotNull(Item, "Remote file must exist: " & remoteFilePath) + ClassicAssert.IsFalse(Item.ExtendedInfosCollisionDetected, "Remote file with file name collissions: " & remoteFilePath) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remoteFilePath), "Remote file must exist: " & remoteFilePath) End Sub ''' @@ -1446,8 +1447,8 @@ Public MustInherit Class BaseDmsProviderTestBase dmsProvider.DeleteRemoteItem(Item) Item = dmsProvider.ListRemoteItem(remoteDirectoryPath) End If - Assert.IsNull(Item, "Remote file must not exist: " & remoteDirectoryPath) - Assert.IsFalse(dmsProvider.RemoteItemExists(remoteDirectoryPath), "Remote directory must not exist: " & remoteDirectoryPath) + ClassicAssert.IsNull(Item, "Remote file must not exist: " & remoteDirectoryPath) + ClassicAssert.IsFalse(dmsProvider.RemoteItemExists(remoteDirectoryPath), "Remote directory must not exist: " & remoteDirectoryPath) End Sub ''' @@ -1458,9 +1459,9 @@ Public MustInherit Class BaseDmsProviderTestBase Private Sub AssertRemoteDirectoryExists(dmsProvider As CompuMaster.Dms.Providers.BaseDmsProvider, remoteDirectoryPath As String) Dim Item As DmsResourceItem Item = dmsProvider.ListRemoteItem(remoteDirectoryPath) - Assert.IsNotNull(Item, "Remote file must exist: " & remoteDirectoryPath) - Assert.IsFalse(Item.ExtendedInfosCollisionDetected, "Remote directory with directory name collissions: " & remoteDirectoryPath) - Assert.IsTrue(dmsProvider.RemoteItemExists(remoteDirectoryPath), "Remote directory must exist: " & remoteDirectoryPath) + ClassicAssert.IsNotNull(Item, "Remote file must exist: " & remoteDirectoryPath) + ClassicAssert.IsFalse(Item.ExtendedInfosCollisionDetected, "Remote directory with directory name collissions: " & remoteDirectoryPath) + ClassicAssert.IsTrue(dmsProvider.RemoteItemExists(remoteDirectoryPath), "Remote directory must exist: " & remoteDirectoryPath) End Sub End Class \ No newline at end of file diff --git a/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj b/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj index fc87ade..c0331a9 100644 --- a/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj +++ b/CompuMaster.Dms.Test.Providers/CompuMaster.Dms.Test.Providers.vbproj @@ -32,8 +32,8 @@ - - + + diff --git a/CompuMaster.Dms.Test.Providers/DmsProviderFactoryTest.vb b/CompuMaster.Dms.Test.Providers/DmsProviderFactoryTest.vb index 260d7fe..1a4d2b4 100644 --- a/CompuMaster.Dms.Test.Providers/DmsProviderFactoryTest.vb +++ b/CompuMaster.Dms.Test.Providers/DmsProviderFactoryTest.vb @@ -1,4 +1,5 @@ Imports NUnit.Framework +Imports NUnit.Framework.Legacy Imports CompuMaster.Dms Imports CompuMaster.Dms.Data Imports CompuMaster.Dms.Providers @@ -16,16 +17,16 @@ Namespace DmsProviderTests For Each ProviderID As BaseDmsProvider.DmsProviders In AllDmsProviders() Dim Provider As BaseDmsProvider Provider = CompuMaster.Dms.Providers.CreateDmsProviderInstance(ProviderID) - Assert.IsNotNull(Provider, "Provider: " & ProviderID.ToString) - Assert.AreEqual(ProviderID, Provider.DmsProviderID) + ClassicAssert.IsNotNull(Provider, "Provider: " & ProviderID.ToString) + ClassicAssert.AreEqual(ProviderID, Provider.DmsProviderID) Select Case Provider.WebApiUrlCustomization Case BaseDmsProvider.UrlCustomizationType.WebApiUrlMustBeCustomized - Assert.IsNull(Provider.WebApiDefaultUrl, "Provider: " & Provider.Name & " (" & ProviderID.ToString & ")") + ClassicAssert.IsNull(Provider.WebApiDefaultUrl, "Provider: " & Provider.Name & " (" & ProviderID.ToString & ")") Case BaseDmsProvider.UrlCustomizationType.WebApiUrlCanBeCustomized - Assert.IsNotNull(Provider.WebApiDefaultUrl, "Provider: " & Provider.Name & " (" & ProviderID.ToString & ")") + ClassicAssert.IsNotNull(Provider.WebApiDefaultUrl, "Provider: " & Provider.Name & " (" & ProviderID.ToString & ")") Case BaseDmsProvider.UrlCustomizationType.WebApiUrlNotCustomizable If ProviderID <> BaseDmsProvider.DmsProviders.None Then - Assert.IsNotNull(Provider.WebApiDefaultUrl, "Provider: " & Provider.Name & " (" & ProviderID.ToString & ")") + ClassicAssert.IsNotNull(Provider.WebApiDefaultUrl, "Provider: " & Provider.Name & " (" & ProviderID.ToString & ")") End If End Select Next @@ -36,7 +37,7 @@ Namespace DmsProviderTests For Each ProviderID As BaseDmsProvider.DmsProviders In AllDmsProviders() Dim Provider As BaseDmsProvider Provider = CompuMaster.Dms.Providers.CreateDmsProviderInstance(ProviderID) - Assert.IsFalse(UniqueIDs.Contains(ProviderID)) + ClassicAssert.IsFalse(UniqueIDs.Contains(ProviderID)) UniqueIDs.Add(ProviderID) Next End Sub diff --git a/CompuMaster.Dms.Test.Providers/ScopevisioTeamworkSettings.vb b/CompuMaster.Dms.Test.Providers/ScopevisioTeamworkSettings.vb index 9a38e7a..a97e77c 100644 --- a/CompuMaster.Dms.Test.Providers/ScopevisioTeamworkSettings.vb +++ b/CompuMaster.Dms.Test.Providers/ScopevisioTeamworkSettings.vb @@ -1,5 +1,6 @@ Imports System.Text Imports NUnit.Framework +Imports NUnit.Framework.Legacy Public NotInheritable Class ScopevisioTeamworkSettings Inherits SettingsBase @@ -33,9 +34,9 @@ Imports NUnit.Framework System.Console.WriteLine("- Password=") End If - Assert.NotNull(username, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") - Assert.NotNull(customerno, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") - Assert.NotNull(password, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") + ClassicAssert.NotNull(username, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") + ClassicAssert.NotNull(customerno, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") + ClassicAssert.NotNull(password, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") End Sub Public Overrides Function PersitingScriptForRequiredEnvironmentVariables() As String diff --git a/CompuMaster.Dms.Test.Providers/ToolsTest.vb b/CompuMaster.Dms.Test.Providers/ToolsTest.vb index 0613116..8bc1097 100644 --- a/CompuMaster.Dms.Test.Providers/ToolsTest.vb +++ b/CompuMaster.Dms.Test.Providers/ToolsTest.vb @@ -1,4 +1,5 @@ Imports NUnit.Framework +Imports NUnit.Framework.Legacy @@ -8,20 +9,20 @@ Public Class ToolsTest Dim CurCulture As System.Globalization.CultureInfo = System.Globalization.CultureInfo.CurrentCulture Try System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture - Assert.AreEqual("0 Bytes", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(0)) - Assert.AreEqual("999 Bytes", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(999)) - Assert.AreEqual("1,001 Bytes", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1001)) - Assert.AreEqual("1 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300)) - Assert.AreEqual("1 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1301)) - Assert.AreEqual("2 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(2300)) - Assert.AreEqual("10 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(10300)) - Assert.AreEqual("98 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(100300)) - Assert.AreEqual("127 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(130000)) - Assert.AreEqual("1 MB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000)) - Assert.AreEqual("1 GB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000)) - Assert.AreEqual("1 TB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000 ^ 2)) - Assert.AreEqual("1 PB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000 ^ 3)) - Assert.AreEqual("1,155 PB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000 ^ 4)) + ClassicAssert.AreEqual("0 Bytes", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(0)) + ClassicAssert.AreEqual("999 Bytes", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(999)) + ClassicAssert.AreEqual("1,001 Bytes", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1001)) + ClassicAssert.AreEqual("1 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300)) + ClassicAssert.AreEqual("1 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1301)) + ClassicAssert.AreEqual("2 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(2300)) + ClassicAssert.AreEqual("10 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(10300)) + ClassicAssert.AreEqual("98 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(100300)) + ClassicAssert.AreEqual("127 KB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(130000)) + ClassicAssert.AreEqual("1 MB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000)) + ClassicAssert.AreEqual("1 GB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000)) + ClassicAssert.AreEqual("1 TB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000 ^ 2)) + ClassicAssert.AreEqual("1 PB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000 ^ 3)) + ClassicAssert.AreEqual("1,155 PB", CompuMaster.Dms.Tools.ByteSizeToUIDisplayText(1300000 * 1000 ^ 4)) Finally System.Globalization.CultureInfo.CurrentCulture = CurCulture End Try @@ -30,27 +31,27 @@ Public Class ToolsTest Public Sub IsParentDirectory() Select Case System.Environment.OSVersion.Platform Case PlatformID.Win32NT - Assert.IsTrue(Tools.IsParentDirectory("D:\", "D:\")) - Assert.IsTrue(Tools.IsParentDirectory("D:\", "D:\Test\SubDir")) - Assert.IsTrue(Tools.IsParentDirectory("D:\Test", "D:\Test\")) - Assert.IsTrue(Tools.IsParentDirectory("D:\Test\", "D:\Test\")) - Assert.IsTrue(Tools.IsParentDirectory("D:\Test", "D:\Test")) - Assert.IsTrue(Tools.IsParentDirectory("D:\Test", "D:\Test\SubDir")) - Assert.IsFalse(Tools.IsParentDirectory("D:\Test\SubDir", "D:\Test")) - Assert.IsTrue(Tools.IsParentDirectory("D:\Test\SubDir", "D:\Test\SubDir")) - Assert.IsFalse(Tools.IsParentDirectory("E:\", "D:\Test\SubDir")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\", "D:\")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\", "D:\Test\SubDir")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\Test", "D:\Test\")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\Test\", "D:\Test\")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\Test", "D:\Test")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\Test", "D:\Test\SubDir")) + ClassicAssert.IsFalse(Tools.IsParentDirectory("D:\Test\SubDir", "D:\Test")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("D:\Test\SubDir", "D:\Test\SubDir")) + ClassicAssert.IsFalse(Tools.IsParentDirectory("E:\", "D:\Test\SubDir")) Case Else 'Unix/Mac/Linux - Assert.IsTrue(Tools.IsParentDirectory("/tmp", "/tmp/")) - Assert.IsTrue(Tools.IsParentDirectory("/tmp", "/tmp/Test/SubDir")) - Assert.IsTrue(Tools.IsParentDirectory("/tmp/Test", "/tmp/Test/")) - Assert.IsTrue(Tools.IsParentDirectory("/tmp/Test/", "/tmp/Test/")) - Assert.IsTrue(Tools.IsParentDirectory("/tmp/Test", "/tmp/Test")) - Assert.IsTrue(Tools.IsParentDirectory("/tmp/Test", "/tmp/Test/SubDir")) - Assert.IsFalse(Tools.IsParentDirectory("/tmp/Test/SubDir", "/tmp/Test")) - Assert.IsTrue(Tools.IsParentDirectory("/tmp/Test/SubDir", "/tmp/Test/SubDir")) - Assert.IsFalse(Tools.IsParentDirectory("/root/", "/tmp/Test\SubDir")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp", "/tmp/")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp", "/tmp/Test/SubDir")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp/Test", "/tmp/Test/")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp/Test/", "/tmp/Test/")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp/Test", "/tmp/Test")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp/Test", "/tmp/Test/SubDir")) + ClassicAssert.IsFalse(Tools.IsParentDirectory("/tmp/Test/SubDir", "/tmp/Test")) + ClassicAssert.IsTrue(Tools.IsParentDirectory("/tmp/Test/SubDir", "/tmp/Test/SubDir")) + ClassicAssert.IsFalse(Tools.IsParentDirectory("/root/", "/tmp/Test\SubDir")) End Select - Assert.Throws(Of ArgumentNullException)( + ClassicAssert.Throws(Of ArgumentNullException)( Sub() Tools.IsParentDirectory("", "/tmp/Test\SubDir") End Sub) diff --git a/CompuMaster.Dms.Test.Providers/WebDavSettings.vb b/CompuMaster.Dms.Test.Providers/WebDavSettings.vb index d8ad15d..4c5c7bf 100644 --- a/CompuMaster.Dms.Test.Providers/WebDavSettings.vb +++ b/CompuMaster.Dms.Test.Providers/WebDavSettings.vb @@ -1,5 +1,6 @@ Imports System.Text Imports NUnit.Framework +Imports NUnit.Framework.Legacy Public NotInheritable Class WebDavSettings Inherits SettingsBase @@ -33,9 +34,9 @@ Imports NUnit.Framework System.Console.WriteLine("- Password=") End If - Assert.NotNull(serverurl, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") - Assert.NotNull(username, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") - Assert.NotNull(password, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") + ClassicAssert.NotNull(serverurl, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") + ClassicAssert.NotNull(username, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") + ClassicAssert.NotNull(password, "User credentials not found in environment or buffer files (run Sample app for creating buffer files in temp directory!)") End Sub Public Overrides Function PersitingScriptForRequiredEnvironmentVariables() As String From 9688fc1fd933092c06ae65f0a28437fc2c3267ca Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Fri, 2 Jan 2026 16:10:54 +0100 Subject: [PATCH 5/8] next release --- CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj | 2 +- CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj index 8685d5a..d43bc62 100644 --- a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj +++ b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj @@ -6,7 +6,7 @@ Debug;Release;CI_CD Jochen Wezel CompuMaster GmbH - 2019-2025 CompuMaster GmbH + 2019-2026 CompuMaster GmbH MIT logo_64x64.png diff --git a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj index e81e05f..ecfa8aa 100644 --- a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj +++ b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj @@ -17,7 +17,7 @@ CompuMaster.Dms.Providers On Debug;Release;CI_CD - 2019-2025 CompuMaster GmbH + 2019-2026 CompuMaster GmbH From adf9f955e53e09482524a3613595833da0cdda4b Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Fri, 2 Jan 2026 16:17:30 +0100 Subject: [PATCH 6/8] added package readme file --- CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj | 5 +++++ CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj | 5 +++++ CompuMaster.Dms.sln | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj index d43bc62..9ac14f2 100644 --- a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj +++ b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj @@ -10,6 +10,7 @@ MIT logo_64x64.png + README.md DmsBrowser NextCloud OwnCloud CenterDevice Scopevisio Teamwork WebDAV API true snupkg @@ -48,6 +49,10 @@ + + True + \ + True diff --git a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj index ecfa8aa..f2a18ec 100644 --- a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj +++ b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj @@ -5,6 +5,7 @@ netstandard2.0;net48;net6.0 logo_64x64.png + README.md MIT DmsBrowser NextCloud OwnCloud CenterDevice Scopevisio Teamwork WebDAV API true @@ -51,6 +52,10 @@ + + True + \ + True diff --git a/CompuMaster.Dms.sln b/CompuMaster.Dms.sln index 0d6bf96..726a476 100644 --- a/CompuMaster.Dms.sln +++ b/CompuMaster.Dms.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.14.36109.1 d17.14 +# Visual Studio Version 18 +VisualStudioVersion = 18.0.11222.15 d18.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "CompuMaster.Dms.BrowserUI", "CompuMaster.Dms.BrowserUI\CompuMaster.Dms.BrowserUI.vbproj", "{3D119625-347A-4505-9219-5DB67F8D8C4E}" EndProject @@ -17,6 +17,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Projektmappenelemente", "Pr ProjectSection(SolutionItems) = preProject .github\workflows\BuildAndTest.yml = .github\workflows\BuildAndTest.yml .github\workflows\PublishRelease.yml = .github\workflows\PublishRelease.yml + README.md = README.md EndProjectSection EndProject Global From baaef4176e9382e9e249a8818c8a328be4168989 Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Fri, 2 Jan 2026 16:39:05 +0100 Subject: [PATCH 7/8] fixed readme path --- CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj | 2 +- CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj index 9ac14f2..410cd31 100644 --- a/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj +++ b/CompuMaster.Dms.BrowserUI/CompuMaster.Dms.BrowserUI.vbproj @@ -49,7 +49,7 @@ - + True \ diff --git a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj index f2a18ec..d4fdc52 100644 --- a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj +++ b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj @@ -52,7 +52,7 @@ - + True \ From f0d342580e3a92765f177e56cb01cfbc2885350d Mon Sep 17 00:00:00 2001 From: Jochen Wezel Date: Fri, 2 Jan 2026 16:51:22 +0100 Subject: [PATCH 8/8] Update CompuMaster.Dms.Providers.vbproj --- CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj index d4fdc52..edd0713 100644 --- a/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj +++ b/CompuMaster.Dms.Providers/CompuMaster.Dms.Providers.vbproj @@ -63,8 +63,8 @@ - - + +