Встроенный FTP-сервер для UnitTest в Windows: ошибка FileUpload 551

Я хочу встроить простой FTP-сервер в свои модульные тесты для тестирования функциональности FTP-клиента для загрузки файлов. Я попробовал Apache FTPServer (ftpserver-core-1.0.6.jar).

Загрузка файла завершается с ошибкой

551 /C:/<correctDestinationPath>/myFile.txt: Error on output file.

Вот мой код для настройки сервера:

    FtpServerFactory serverFactory = new FtpServerFactory();

    BaseUser user = new BaseUser();
    user.setName("anonymous");
    user.setPassword( System.getProperty( "user.name" ) + "@" + InetAddress.getLocalHost().getHostName() );
    user.setHomeDirectory( TEST_TARGET_DIR_LOCAL );
    List<Authority> authorities = new ArrayList<Authority>();
    authorities.add(new WritePermission());
    user.setAuthorities(authorities);
    UserManager userManager = serverFactory.getUserManager();
    userManager.save(user);

    myServer = serverFactory.createServer();
    myServer.start();

Это отлично работает для подключения и входа в систему:

220 Service ready for new user.
USER *******
331 Guest login okay, send your complete e-mail address as password.
PASS *******
230 User logged in, proceed.
SYST
215 UNIX Type: Apache FtpServer
TYPE I
200 Command TYPE okay.

Продуктивный код вызывает FTPClient следующим образом:

myFtpClient.storeFile( "C:\<correctDestinationPath>\myFile.txt", anInputStream );

Обратите внимание, что это правильный путь на моем компьютере с Windows. Но FTPServer скремблирует его на unix-подобный путь «/C:/correctDestinationPath/myFile.txt».

Как я могу настроить FTP-сервер, чтобы он работал и для Windows? Само модульное тестирование, конечно, должно быть нейтральным к ОС.


person Heri    schedule 23.11.2014    source источник


Ответы (1)


Я сам нашел решение. Две возможности:

  1. Установка домашнего каталога пользователя на абсолютный путь (например, ""C:\") и загрузка файла без пути (только "myFtpClient.storeFile( "myFile.txt", anInputStream );" -> файл хранится в пользователе .дом

  2. НЕ устанавливайте домашний каталог вообще и загружайте файл с полным путем.

person Heri    schedule 23.11.2014