public void SecureSslConnectionWorks()
        {
            string           fileName     = "notexistingdummy.dat";
            IFtpFakeResponse fakeResponse = null;

            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponseMock.
                Setup(m => m.GetFakeServerResponseString(It.Is <string>(r => r == AuthorizationUrl))).
                Returns(".\r\n..\r\nunittest.dat\r\n");
                fakeResponse = fakeResponseMock.Object;
            }

            var credentials = GetCredentials();

            credentials.Secure = true;
            Assert.DoesNotThrowAsync(() => FileExistsWorksAsync(fileName, credentials, fakeResponse));
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FtpCloudStorageClient"/> class.
 /// </summary>
 /// <param name="fakeResponse">If this parameter is not null, the storage client is put
 /// into a test mode and no real calls to the Ftp server are made. Instead a Mock can
 /// define fake responses.</param>
 public FtpCloudStorageClient(IFtpFakeResponse fakeResponse)
 {
     _fakeResponse = fakeResponse;
 }
        public void FileLifecycleWorks()
        {
            string fileName = "unittest.dat";

            byte[] fileContent = new byte[16];
            new Random().NextBytes(fileContent);

            // 1) Test upload
            IFtpFakeResponse fakeResponse = null;

            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponse = fakeResponseMock.Object;
            }
            Assert.DoesNotThrowAsync(() => UploadFileWorksAsync(fileName, fileContent, fakeResponse));

            // 2) Test listing
            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponseMock.
                Setup(m => m.GetFakeServerResponseString(It.Is <string>(r => r == AuthorizationUrl))).
                Returns(".\r\n..\r\nXyz\r\nunittest.dat\r\nb.txt\r\nc.txt\r\n");
                fakeResponse = fakeResponseMock.Object;
            }
            List <string> res = Task.Run(async() => await ListFileNamesWorksAsync(GetCredentials(), fakeResponse)).Result;

            Assert.IsTrue(res.Count >= 1);
            Assert.IsTrue(res.Contains("unittest.dat"));

            // 3) Test exists
            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponseMock.
                Setup(m => m.GetFakeServerResponseString(It.Is <string>(r => r == AuthorizationUrl))).
                Returns(".\r\n..\r\nXyz\r\nunittest.dat\r\nb.txt\r\nc.txt\r\n");
                fakeResponse = fakeResponseMock.Object;
            }
            bool exists = Task.Run(async() => await FileExistsWorksAsync(fileName, GetCredentials(), fakeResponse)).Result;

            Assert.IsTrue(exists);

            // 4) Test download
            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponseMock
                .Setup(m => m.GetFakeServerResponseBytes(It.IsAny <string>()))
                .Returns(fileContent);
                fakeResponse = fakeResponseMock.Object;
            }
            Byte[] downloadedContent = Task.Run(async() => await DownloadFileWorksAsync(fileName, GetCredentials(), fakeResponse)).Result;
            Assert.AreEqual(fileContent, downloadedContent);

            // 5) Test delete
            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponse = fakeResponseMock.Object;
            }
            Assert.DoesNotThrowAsync(() => DeleteFileWorksAsync(fileName, GetCredentials(), fakeResponse));

            // 6) Was really deleted?
            if (!DoRealWebRequests)
            {
                Mock <IFtpFakeResponse> fakeResponseMock = new Mock <IFtpFakeResponse>();
                fakeResponseMock.
                Setup(m => m.GetFakeServerResponseString(It.Is <string>(r => r == AuthorizationUrl))).
                Returns(".\r\n..\r\nXyz\r\nb.txt\r\nc.txt\r\n");
                fakeResponse = fakeResponseMock.Object;
            }
            exists = Task.Run(async() => await FileExistsWorksAsync(fileName, GetCredentials(), fakeResponse)).Result;
            Assert.IsFalse(exists);
        }
 private async Task DeleteFileWorksAsync(string fileName, CloudStorageCredentials credentials, IFtpFakeResponse fakeResponse)
 {
     ICloudStorageClient client = new FtpCloudStorageClient(fakeResponse);
     await client.DeleteFileAsync(fileName, credentials);
 }
        private async Task <byte[]> DownloadFileWorksAsync(string fileName, CloudStorageCredentials credentials, IFtpFakeResponse fakeResponse)
        {
            ICloudStorageClient client = new FtpCloudStorageClient(fakeResponse);

            byte[] result = await client.DownloadFileAsync(fileName, credentials);

            return(result);
        }
        private async Task <bool> FileExistsWorksAsync(string fileName, CloudStorageCredentials credentials, IFtpFakeResponse fakeResponse)
        {
            ICloudStorageClient client = new FtpCloudStorageClient(fakeResponse);
            bool result = await client.ExistsFileAsync(fileName, credentials);

            return(result);
        }
        private async Task <List <string> > ListFileNamesWorksAsync(CloudStorageCredentials credentials, IFtpFakeResponse fakeResponse)
        {
            ICloudStorageClient client = new FtpCloudStorageClient(fakeResponse);
            List <string>       result = await client.ListFileNamesAsync(credentials);

            return(result);
        }
 private async Task UploadFileWorksAsync(string fileName, byte[] fileContent, IFtpFakeResponse fakeResponse)
 {
     ICloudStorageClient     client      = new FtpCloudStorageClient(fakeResponse);
     CloudStorageCredentials credentials = GetCredentials();
     await client.UploadFileAsync(fileName, fileContent, credentials);
 }