2012-08-07 12 views
13

Apache Minaの使い方を調べるのに少し問題があります。彼らのドキュメンテーションは私の才能のない脳がうまくいかないほど少ししかありません。役に立つスタートコードを見ました Java SFTP server library?Apache Minaをモック/インメモリとして使用するユニットテスト用のSFTPサーバ

私が理解できないことは、使い方です。質問がtestGetFile()に入れるために何である

@Before 
public void beforeTestSetup() { 
    sshd = SshServer.setUpDefaultServer(); 
    sshd.setPort(22); 
    sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser")); 

    List<NamedFactory<UserAuth>> userAuthFactories = new ArrayList<NamedFactory<UserAuth>>(); 
    userAuthFactories.add(new UserAuthNone.Factory()); 
    sshd.setUserAuthFactories(userAuthFactories); 
    sshd.setPublickeyAuthenticator(new PublickeyAuthenticator()); 


    sshd.setCommandFactory(new ScpCommandFactory()); 

    List<NamedFactory<Command>> namedFactoryList = new ArrayList<NamedFactory<Command>>(); 
    namedFactoryList.add(new SftpSubsystem.Factory()); 
    sshd.setSubsystemFactories(namedFactoryList); 

    try { 
     sshd.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@Test 
public void testGetFile() { 

} 

:私は次のように、すなわち、ユニットテストを書くことができるように、モックサーバーの種類としてミナを使用して、セットアップに自分のSF​​TPコードをチェックするユニットテストをしたいです。

私は、上記でルートディレクトリ、ユーザー名、および認証キーファイル名を指定するために、より多くの構成が必要かどうか疑問に思っています。それから、クライアントを使用してファイルを取得したり取得したりする必要があります。

私はこれが優れたAPIだと確信しています。それには多くの指示はありません。だれでも助けてくれますか?ここで

答えて

7

は、私は(JUnitの)何をしたかである:

@Test 
    public void testPutAndGetFile() throws JSchException, SftpException, IOException 
    { 
    JSch jsch = new JSch(); 

    Hashtable<String, String> config = new Hashtable<String, String>(); 
    config.put("StrictHostKeyChecking", "no"); 
    JSch.setConfig(config); 

    Session session = jsch.getSession("remote-username", "localhost", PORT); 
    session.setPassword("remote-password"); 

    session.connect(); 

    Channel channel = session.openChannel("sftp"); 
    channel.connect(); 

    ChannelSftp sftpChannel = (ChannelSftp) channel; 

    final String testFileContents = "some file contents"; 

    String uploadedFileName = "uploadFile"; 
    sftpChannel.put(new ByteArrayInputStream(testFileContents.getBytes()), uploadedFileName); 

    String downloadedFileName = "downLoadFile"; 
    sftpChannel.get(uploadedFileName, downloadedFileName); 

    File downloadedFile = new File(downloadedFileName); 
    Assert.assertTrue(downloadedFile.exists()); 

    String fileData = getFileContents(downloadedFile); 

    Assert.assertEquals(testFileContents, fileData); 

    if (sftpChannel.isConnected()) { 
     sftpChannel.exit(); 
     System.out.println("Disconnected channel"); 
    } 

    if (session.isConnected()) { 
     session.disconnect(); 
     System.out.println("Disconnected session"); 
    } 

    } 

    private String getFileContents(File downloadedFile) 
    throws FileNotFoundException, IOException 
    { 
    StringBuffer fileData = new StringBuffer(); 
    BufferedReader reader = new BufferedReader(new FileReader(downloadedFile)); 

    try { 
     char[] buf = new char[1024]; 
     for(int numRead = 0; (numRead = reader.read(buf)) != -1; buf = new char[1024]) { 
     fileData.append(String.valueOf(buf, 0, numRead)); 
     } 
    } finally {  
     reader.close(); 
    } 

    return fileData.toString(); 
    } 
関連する問題