Пример #1
0
        public void Ftp_RenameFileSubDir_Success(FtpExecutionMode mode)
        {
            string dir             = absoluteUri + Guid.NewGuid().ToString() + "/";
            string file            = dir + "CreatedFile.txt";
            string renamedFileName = "RenamedFile.txt";
            string renamedFile     = dir + "RenamedFile.txt";

            // Create
            DoCommand(mode, WebRequestMethods.Ftp.MakeDirectory, dir);
            DoUpload(mode, WebRequestMethods.Ftp.UploadFile, file, helloWorldBytes);

            Assert.True(DirExists(mode, dir));
            Assert.True(FileExists(mode, file));

            // Rename
            DoCommand(mode, WebRequestMethods.Ftp.Rename, file, renamedFileName);

            Assert.False(FileExists(mode, file));
            Assert.True(FileExists(mode, renamedFile));

            // Cleanup
            DoCommand(mode, WebRequestMethods.Ftp.DeleteFile, renamedFile);
            DoCommand(mode, WebRequestMethods.Ftp.RemoveDirectory, dir);

            Assert.False(FileExists(mode, renamedFile));
            Assert.False(DirExists(mode, dir));
        }
Пример #2
0
        private static bool FileExists(FtpExecutionMode mode, string file)
        {
            try
            {
                DoDownload(mode, WebRequestMethods.Ftp.DownloadFile, file);
                return(true);
            }
            catch (WebException) { }

            return(false);
        }
Пример #3
0
        private static bool DirExists(FtpExecutionMode mode, string dir)
        {
            try
            {
                DoDownload(mode, WebRequestMethods.Ftp.ListDirectory, dir);
                return(true);
            }
            catch (WebException) { }

            return(false);
        }
Пример #4
0
        public void Ftp_MakeAndRemoveDir_Success(FtpExecutionMode mode)
        {
            string dir = absoluteUri + Guid.NewGuid().ToString() + "/";

            DoCommand(mode, WebRequestMethods.Ftp.MakeDirectory, dir);

            Assert.True(DirExists(mode, dir));

            DoCommand(mode, WebRequestMethods.Ftp.RemoveDirectory, dir);

            Assert.False(DirExists(mode, dir));
        }
Пример #5
0
        public void Ftp_CreateAndDelete(FtpExecutionMode mode)
        {
            string uri = absoluteUri + Guid.NewGuid().ToString();

            DoUpload(mode, WebRequestMethods.Ftp.UploadFile, uri, helloWorldBytes);
            byte[] responseBytes = DoDownload(mode, WebRequestMethods.Ftp.DownloadFile, uri);

            Assert.True(responseBytes.SequenceEqual(helloWorldBytes));

            DoCommand(mode, WebRequestMethods.Ftp.DeleteFile, uri);

            Assert.False(FileExists(mode, uri));
        }
Пример #6
0
        private static byte[] Do(FtpExecutionMode mode, string method, string uri, byte[] requestBody, string renameTo = null)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);

            request.EnableSsl  = mode.UseSsl;
            request.UsePassive = mode.UsePassive;

            request.Method = method;
            if (renameTo != null)
            {
                request.RenameTo = renameTo;
            }

            MemoryStream requestMemStream = null;

            if (requestBody != null)
            {
                requestMemStream = new MemoryStream(requestBody);
            }

            if (mode.UseAsync)
            {
                try
                {
                    Task <MemoryStream> t = DoAsync(request, requestMemStream);
                    return(t.Result.ToArray());
                }
                catch (AggregateException e)
                {
                    throw e.InnerException;
                }
            }
            else if (mode.UseOldStyleAsync)
            {
                return(DoOldStyleAsync(request, requestMemStream).ToArray());
            }
            else
            {
                return(DoSync(request, requestMemStream).ToArray());
            }
        }
Пример #7
0
 private static byte[] DoDownload(FtpExecutionMode mode, string method, string uri)
 {
     return(Do(mode, method, uri, null));
 }
Пример #8
0
        public void Ftp_CreateAndDelete(FtpExecutionMode mode)
        {
            string uri = absoluteUri + Guid.NewGuid().ToString();

            DoUpload(mode, WebRequestMethods.Ftp.UploadFile, uri, helloWorldBytes);
            byte[] responseBytes = DoDownload(mode, WebRequestMethods.Ftp.DownloadFile, uri);

            Assert.True(responseBytes.SequenceEqual(helloWorldBytes));

            DoCommand(mode, WebRequestMethods.Ftp.DeleteFile, uri);

            Assert.False(FileExists(mode, uri));
        }
Пример #9
0
        private static bool FileExists(FtpExecutionMode mode, string file)
        {
            try
            {
                DoDownload(mode, WebRequestMethods.Ftp.DownloadFile, file);
                return true;
            }
            catch (WebException) { }

            return false;
        }
Пример #10
0
        private static bool DirExists(FtpExecutionMode mode, string dir)
        {
            try
            {
                DoDownload(mode, WebRequestMethods.Ftp.ListDirectory, dir);
                return true;
            }
            catch (WebException) { }

            return false;
        }
Пример #11
0
        private static void DoCommand(FtpExecutionMode mode, string method, string uri, string renameTo = null)
        {
            byte[] responseBody = Do(mode, method, uri, null, renameTo);

            // Should be no response
            Assert.Equal(responseBody.Length, 0);
        }
Пример #12
0
        private static void DoUpload(FtpExecutionMode mode, string method, string uri, byte[] requestBody)
        {
            byte[] responseBody = Do(mode, method, uri, requestBody);

            // Should be no response
            Assert.Equal(responseBody.Length, 0);
        }
Пример #13
0
 private static byte[] DoDownload(FtpExecutionMode mode, string method, string uri)
 {
     return Do(mode, method, uri, null);
 }
Пример #14
0
        private static byte[] Do(FtpExecutionMode mode, string method, string uri, byte[] requestBody, string renameTo = null)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);

            request.EnableSsl = mode.UseSsl;
            request.UsePassive = mode.UsePassive;

            request.Method = method;
            if (renameTo != null)
            {
                request.RenameTo = renameTo;
            }

            MemoryStream requestMemStream = null;
            if (requestBody != null)
            {
                requestMemStream = new MemoryStream(requestBody);
            }

            if (mode.UseAsync)
            {
                try
                {
                    Task<MemoryStream> t = DoAsync(request, requestMemStream);
                    return t.Result.ToArray();
                }
                catch (AggregateException e)
                {
                    throw e.InnerException;
                }
            }
            else if (mode.UseOldStyleAsync)
            {
                return DoOldStyleAsync(request, requestMemStream).ToArray();
            }
            else
            {
                return DoSync(request, requestMemStream).ToArray();
            }
        }
Пример #15
0
        public void Ftp_RenameFileSubDir_Success(FtpExecutionMode mode)
        {
            string dir = absoluteUri + Guid.NewGuid().ToString() + "/";
            string file = dir + "CreatedFile.txt";
            string renamedFileName = "RenamedFile.txt";
            string renamedFile = dir + "RenamedFile.txt";

            // Create
            DoCommand(mode, WebRequestMethods.Ftp.MakeDirectory, dir);
            DoUpload(mode, WebRequestMethods.Ftp.UploadFile, file, helloWorldBytes);

            Assert.True(DirExists(mode, dir));
            Assert.True(FileExists(mode, file));

            // Rename
            DoCommand(mode, WebRequestMethods.Ftp.Rename, file, renamedFileName);

            Assert.False(FileExists(mode, file));
            Assert.True(FileExists(mode, renamedFile));

            // Cleanup
            DoCommand(mode, WebRequestMethods.Ftp.DeleteFile, renamedFile);
            DoCommand(mode, WebRequestMethods.Ftp.RemoveDirectory, dir);

            Assert.False(FileExists(mode, renamedFile));
            Assert.False(DirExists(mode, dir));
        }
Пример #16
0
        public void Ftp_MakeAndRemoveDir_Success(FtpExecutionMode mode)
        {
            string dir = absoluteUri + Guid.NewGuid().ToString() + "/";

            DoCommand(mode, WebRequestMethods.Ftp.MakeDirectory, dir);

            Assert.True(DirExists(mode, dir));

            DoCommand(mode, WebRequestMethods.Ftp.RemoveDirectory, dir);

            Assert.False(DirExists(mode, dir));
        }