public void AlphaFS_Host_DriveConnection()
        {
            var share = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(UnitTestConstants.LocalHostShare);

             using (var connection = new Alphaleonis.Win32.Network.DriveConnection(share))
             {
            Console.WriteLine("\nUsing DriveConnection(): [{0}] to: [{1}]", connection.LocalName, share);

            Assert.AreEqual(share, connection.Share);
             }
        }
        public void AlphaFS_Host_DriveConnection_Network_Success()
        {
            UnitTestConstants.PrintUnitTestHeader(true);
            Console.WriteLine();


            var share = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(UnitTestConstants.TempFolder);

            using (var connection = new Alphaleonis.Win32.Network.DriveConnection(share))
            {
                Console.WriteLine("Using DriveConnection(): [{0}] to: [{1}]", connection.LocalName, share);

                UnitTestConstants.Dump(connection, -9);

                Assert.AreEqual(share, connection.Share);
            }
        }
        private void Path_LocalToUnc_MappedDriveWithSubFolder()
        {
            UnitTestConstants.PrintUnitTestHeader(false);
            Console.WriteLine();


            var backslash       = Alphaleonis.Win32.Filesystem.Path.DirectorySeparator;
            var hostName        = Alphaleonis.Win32.Network.Host.GetUncName() + backslash;
            var localTempFolder = UnitTestConstants.TempFolder;
            var netTempFolder   = localTempFolder.Replace(":", Alphaleonis.Win32.Filesystem.Path.NetworkDriveSeparator);
            var subFolderName   = MethodBase.GetCurrentMethod().Name;
            var subFolderPath   = hostName + netTempFolder + backslash + subFolderName;


            string[] localToUncPaths =
            {
                localTempFolder,
                hostName + netTempFolder,
                subFolderPath,
                Alphaleonis.Win32.Filesystem.Path.GetLongPath(subFolderPath)
            };


            using (var connection = new Alphaleonis.Win32.Network.DriveConnection(localToUncPaths[1]))
            {
                var driveLetter = connection.LocalName;
                var subFolder   = driveLetter + backslash + subFolderName;

                var uncPath     = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(subFolder);
                var uncLongPath = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(subFolder, Alphaleonis.Win32.Filesystem.GetFullPathOptions.AsLongPath);


                Console.WriteLine("\tMapped letter: [{0}] to: [{1}]", driveLetter, connection.Share);
                Console.WriteLine();

                Console.WriteLine("\tSub Folder Path         : [{0}]", subFolder);
                Console.WriteLine("\tUNC Sub Folder Path     : [{0}]", uncPath);
                Console.WriteLine("\tUNC Sub Folder Long Path: [{0}]", uncLongPath);
                Console.WriteLine();


                Assert.AreEqual(localToUncPaths[2], uncPath);
                Assert.AreEqual(localToUncPaths[3], uncLongPath);
            }
        }
        public void AlphaFS_Directory_CreateJunction_FromMappedDrive_ThrowsArgumentException_Netwerk_Success()
        {
            using (var tempRoot = new TemporaryDirectory())
                using (var connection = new Alphaleonis.Win32.Network.DriveConnection(Alphaleonis.Win32.Filesystem.Path.LocalToUnc(tempRoot.CreateDirectory().FullName)))
                {
                    var mappedPath = connection.LocalName + @"\" + tempRoot.RandomDirectoryName;

                    Console.WriteLine("Mapped drive [{0}] to [{1}]", connection.LocalName, connection.Share);

                    var target = System.IO.Directory.CreateDirectory(mappedPath);

                    var toDelete = tempRoot.Directory.CreateSubdirectory("ToDelete");

                    var junction = System.IO.Path.Combine(toDelete.FullName, "JunctionPoint");

                    UnitTestAssert.ThrowsException <ArgumentException>(() => Alphaleonis.Win32.Filesystem.Directory.CreateJunction(junction, target.FullName));
                }
        }
Exemple #5
0
        public void AlphaFS_Host_DriveConnection_Network_Success()
        {
            using (var tempRoot = new TemporaryDirectory(true))
            {
                // Randomly test the share where the local folder possibly has the read-only and/or hidden attributes set.

                var folder = tempRoot.CreateDirectoryRandomizedAttributes();


                using (var connection = new Alphaleonis.Win32.Network.DriveConnection(folder.FullName))
                {
                    Console.WriteLine("Mapped drive [{0}] to share [{1}]", connection.LocalName, folder.FullName);

                    UnitTestConstants.Dump(connection);

                    Assert.AreEqual(folder.FullName, connection.Share);

                    Assert.IsTrue(System.IO.Directory.Exists(folder.FullName));
                }
            }
        }
        private void Path_LocalToUnc_MappedDriveAddTrailingDirectorySeparator()
        {
            UnitTestConstants.PrintUnitTestHeader(false);
            Console.WriteLine();


            var backslash       = Alphaleonis.Win32.Filesystem.Path.DirectorySeparator;
            var hostName        = Alphaleonis.Win32.Network.Host.GetUncName() + backslash;
            var localTempFolder = UnitTestConstants.TempFolder;
            var netTempFolder   = localTempFolder.Replace(":", Alphaleonis.Win32.Filesystem.Path.NetworkDriveSeparator);


            string[] localToUncPaths =
            {
                localTempFolder,
                hostName + netTempFolder,
                Alphaleonis.Win32.Filesystem.Path.GetLongPath(hostName + netTempFolder)
            };


            using (var connection = new Alphaleonis.Win32.Network.DriveConnection(localToUncPaths[1]))
            {
                var driveLetter = connection.LocalName;
                var uncPath     = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(driveLetter, Alphaleonis.Win32.Filesystem.GetFullPathOptions.AddTrailingDirectorySeparator);
                var uncLongPath = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(driveLetter, Alphaleonis.Win32.Filesystem.GetFullPathOptions.AsLongPath | Alphaleonis.Win32.Filesystem.GetFullPathOptions.AddTrailingDirectorySeparator);


                Console.WriteLine("\tMapped letter: [{0}] to: [{1}]", driveLetter, connection.Share);
                Console.WriteLine();

                Console.WriteLine("\tUNC Path     : [{0}]", uncPath);
                Console.WriteLine("\tUNC Long Path: [{0}]", uncLongPath);
                Console.WriteLine();


                Assert.AreEqual(localToUncPaths[1] + backslash, uncPath);
                Assert.AreEqual(localToUncPaths[2] + backslash, uncLongPath);
            }
        }
        public void AlphaFS_Directory_CreateJunction_CatchArgumentException_MappedDrive_Netwerk_Success()
        {
            UnitTestConstants.PrintUnitTestHeader(false);

            var tempPath = System.IO.Path.GetTempPath();

            using (var rootDir = new TemporaryDirectory(tempPath, MethodBase.GetCurrentMethod().Name))
                using (var connection = new Alphaleonis.Win32.Network.DriveConnection(Alphaleonis.Win32.Filesystem.Path.LocalToUnc(UnitTestConstants.TempFolder)))
                {
                    var mappedPath = connection.LocalName + @"\" + UnitTestConstants.GetRandomFileNameWithDiacriticCharacters();
                    Console.WriteLine("\nUsing mapped drive: [{0}] to: [{1}]", connection.LocalName, connection.Share);

                    var target   = Alphaleonis.Win32.Filesystem.Directory.CreateDirectory(mappedPath);
                    var toDelete = rootDir.Directory.CreateSubdirectory("ToDelete");
                    var junction = System.IO.Path.Combine(toDelete.FullName, "JunctionPoint");


                    var gotException = false;

                    try
                    {
                        Alphaleonis.Win32.Filesystem.Directory.CreateJunction(junction, target.FullName);
                    }
                    catch (Exception ex)
                    {
                        var exName = ex.GetType().Name;
                        gotException = exName.Equals("ArgumentException", StringComparison.OrdinalIgnoreCase);
                        Console.WriteLine("\n\tCaught {0} Exception: [{1}] {2}", gotException ? "EXPECTED" : "UNEXPECTED", exName, ex.Message);
                    }


                    Assert.IsTrue(gotException, "The exception is not caught, but is expected to.");


                    target.Delete();
                }
        }
        public void AlphaFS_Path_GetMappedUncName()
        {
            using (var tempRoot = new TemporaryDirectory(true))
            {
                // Randomly test the share where the local folder possibly has the read-only and/or hidden attributes set.

                var folder = tempRoot.CreateDirectoryRandomizedAttributes();


                using (var connection = new Alphaleonis.Win32.Network.DriveConnection(folder.FullName))
                {
                    var driveName = connection.LocalName;

                    Console.WriteLine("Mapped drive letter [{0}] to [{1}]", driveName, folder.FullName);

                    UnitTestConstants.Dump(connection, -9);


                    var connectionName = Alphaleonis.Win32.Filesystem.Path.GetMappedUncName(driveName);

                    Assert.AreEqual(folder.FullName, connectionName);
                }
            }
        }