コード例 #1
0
ファイル: FtpSessionTests.cs プロジェクト: breki/librolib
        private static FtpConnectionData ConstructConnectionData()
        {
            FtpConnectionData connectionData = new FtpConnectionData();

            connectionData.Credentials = new NetworkCredential(Username, Password);
            connectionData.Host        = Host;
            connectionData.Port        = Port;
            return(connectionData);
        }
コード例 #2
0
ファイル: FtpSessionTests.cs プロジェクト: breki/librolib
        public void LoginWithUserNameAndPassword()
        {
            SetLoginExpectations();

            FtpConnectionData connectionData = ConstructConnectionData();

            session.BeginSession(connectionData);

            communicator.VerifyAllExpectations();
        }
コード例 #3
0
ファイル: FtpSessionTests.cs プロジェクト: breki/librolib
        public void LoginWithUserNameOnly()
        {
            SetResponse(FtpReturnCode.ServiceReadyForNewUser);
            ExpectCommand("USER banana");
            SetResponse(FtpReturnCode.UserLoggedIn);
            ExpectCommand("TYPE I");
            SetResponse(FtpReturnCode.CommandOk);

            FtpConnectionData connectionData = ConstructConnectionData();

            session.BeginSession(connectionData);

            communicator.VerifyAllExpectations();
        }
コード例 #4
0
        public void InvalidPassword()
        {
            FtpConnectionData connectionData = new FtpConnectionData();

            connectionData.Credentials = new NetworkCredential(Username, Password + "xxx");
            connectionData.Host        = Host;

            using (IFtpSession session
                       = new FtpSession(new FtpChannelFactoryUsingSockets(), new FtpCommunicator(), new WindowsFileSystem()))
            {
                var ex = Assert.Throws <FtpException>(delegate { session.BeginSession(connectionData); });
                Assert.AreEqual("Could not log in to the FTP server: 530 User cannot log in.", ex.Message);
            }
        }
コード例 #5
0
        private static void FtpAction(Action <IFtpSession> action)
        {
            FtpConnectionData connectionData = new FtpConnectionData();

            connectionData.Credentials = new NetworkCredential(Username, Password);
            connectionData.Host        = Host;
            connectionData.Port        = Port;

            using (IFtpSession session
                       = new FtpSession(new FtpChannelFactoryUsingSockets(), new FtpCommunicator(), new WindowsFileSystem()))
            {
                session.BeginSession(connectionData);
                action(session);
            }
        }
コード例 #6
0
ファイル: FtpSessionTests.cs プロジェクト: breki/librolib
        public void ChangeDirectory()
        {
            const string RemoteDir = "directory1/directory2";

            SetLoginExpectations();
            ExpectCommand("CWD " + RemoteDir);
            SetResponse(FtpReturnCode.RequestedFileActionOkayCompleted);

            FtpConnectionData connectionData = ConstructConnectionData();

            session.BeginSession(connectionData);
            session.ChangeDirectory(RemoteDir);
            Assert.AreEqual(RemoteDir, session.CurrentDirectory);

            communicator.VerifyAllExpectations();
        }
コード例 #7
0
ファイル: FtpSessionTests.cs プロジェクト: breki/librolib
        public void UploadFiles(bool withBaseDir)
        {
            SetLoginExpectations();
            ExpectCommand("MKD /dest");
            SetResponse(FtpReturnCode.Created);
            ExpectCommand("MKD /dest/dest2");
            SetResponse(FtpReturnCode.Created);
            ExpectCommand("PASV");
            SetResponse(FtpReturnCode.EnteringPassiveMode, "(10,20,30,40,1,2)");
            dataChannel.Expect(x => x.Connect(new byte[] { 10, 20, 30, 40 }, 258));
            ExpectCommand("STOR /dest/dest2/file1.txt");
            SetResponse(FtpReturnCode.FileStatusOk);
            fileSystem.Stub(x => x.ReadFileAsBytes(@"d:\files\file1.txt")).Return(new byte[10]);
            dataChannel.Expect(x => x.Send(null)).IgnoreArguments().Return(10);
            SetResponse(FtpReturnCode.ClosingDataConnection);

            //ExpectCommand("PASV");
            SetResponse(FtpReturnCode.EnteringPassiveMode, "(10,20,30,40,1,2)");
            dataChannel.Expect(x => x.Connect(new byte[] { 10, 20, 30, 40 }, 258));
            ExpectCommand("STOR /dest/dest2/file2.txt");
            SetResponse(FtpReturnCode.FileStatusOk);
            fileSystem.Stub(x => x.ReadFileAsBytes(@"d:\files\file2.txt")).Return(new byte[10]);
            SetResponse(FtpReturnCode.ClosingDataConnection);

            FtpConnectionData connectionData = ConstructConnectionData();

            session.BeginSession(connectionData);

            List <string> createdDirs = new List <string>();
            List <KeyValuePair <string, string> > uploadedFiles = new List <KeyValuePair <string, string> >();
            FileSet files = new FileSet(withBaseDir ? @"d:\files" : null, new[] { @"d:\files\file1.txt", @"d:\files\file2.txt" });

            session.UploadFiles(
                null,
                files,
                "/dest/dest2",
                createdDirs.Add,
                (l, r) => uploadedFiles.Add(new KeyValuePair <string, string>(l, r)));

            Assert.AreEqual(2, createdDirs.Count);
            Assert.AreEqual(2, uploadedFiles.Count);

            communicator.VerifyAllExpectations();
        }
コード例 #8
0
ファイル: DeployCommand.cs プロジェクト: breki/freude
        public override int Execute(IConsoleEnvironment env)
        {
            FreudeProject project = new FreudeProject();

            project.BuildDir = buildDirectory;

            using (IFtpSession ftpSession = ftpSessionFactory.CreateSession())
            {
                FtpConnectionData connData = new FtpConnectionData();

                connData.Credentials = new NetworkCredential(userName, password);
                connData.Host        = server;
                connData.Port        = port;

                log.InfoFormat(CultureInfo.InvariantCulture, "Connecting to the FTP server {0}:{1}...", connData.Host, connData.Port);

                ftpSession.BeginSession(connData);

                PathBuilder buildDirPath = new PathBuilder(buildDirectory);
                foreach (string sourceFileName in projectBuilder.ListBuiltFiles(project))
                {
                    PathBuilder sourceFileNameDebasedBuilder = buildDirPath.DebasePath(sourceFileName, false);
                    PathBuilder destinationFileName;
                    if (remoteRootDirectory != null)
                    {
                        destinationFileName = new PathBuilder(remoteRootDirectory).CombineWith(sourceFileNameDebasedBuilder);
                    }
                    else
                    {
                        destinationFileName = sourceFileNameDebasedBuilder;
                    }

                    string destinationFileNameUnixStyle = destinationFileName.ToUnixPath();

                    log.InfoFormat(CultureInfo.InvariantCulture, "Uploading file {0} to {1}...", sourceFileName, destinationFileNameUnixStyle);
                    ftpSession.UploadFile(sourceFileName, destinationFileNameUnixStyle);
                }
            }

            return(0);
        }