Added support for using oauth token for Kafka
[nonrtric/plt/ranpm.git] / datafilecollector / src / test / java / org / onap / dcaegen2 / collectors / datafile / ftp / FtpesClientTest.java
diff --git a/datafilecollector/src/test/java/org/onap/dcaegen2/collectors/datafile/ftp/FtpesClientTest.java b/datafilecollector/src/test/java/org/onap/dcaegen2/collectors/datafile/ftp/FtpesClientTest.java
deleted file mode 100644 (file)
index 3423826..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * ============LICENSE_START======================================================================
- * Copyright (C) 2018-2019 Nordix Foundation. All rights reserved.
- * Copyright (C) 2020 Nokia. All rights reserved.
- * ===============================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- * ============LICENSE_END========================================================================
- */
-
-package org.onap.dcaegen2.collectors.datafile.ftp;
-
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.TrustManager;
-
-import org.apache.commons.net.ftp.FTP;
-import org.apache.commons.net.ftp.FTPSClient;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatchers;
-import org.onap.dcaegen2.collectors.datafile.commons.FileServerData;
-import org.springframework.http.HttpStatus;
-
-public class FtpesClientTest {
-
-    private static final String REMOTE_FILE_PATH = "/dir/sample.txt";
-    private static final Path LOCAL_FILE_PATH = Paths.get("target/sample.txt");
-    private static final String XNF_ADDRESS = "127.0.0.1";
-    private static final int PORT = 8021;
-    private static final String FTP_KEY_PATH = "ftpKeyPath";
-    private static final String FTP_KEY_PASSWORD = "ftpKeyPassword";
-    private static final Path TRUSTED_CA_PATH = Paths.get("trustedCaPath");
-    private static final String TRUSTED_CA_PASSWORD = "trustedCaPassword";
-
-    private static final String USERNAME = "bob";
-    private static final String PASSWORD = "123";
-
-    private FTPSClient ftpsClientMock = mock(FTPSClient.class);
-    private KeyManager keyManagerMock = mock(KeyManager.class);
-    private TrustManager trustManagerMock = mock(TrustManager.class);
-    private InputStream inputStreamMock = mock(InputStream.class);
-    private OutputStream outputStreamMock = mock(OutputStream.class);
-
-    FtpesClient clientUnderTestSpy;
-
-    private FileServerData createFileServerData() {
-        return FileServerData.builder() //
-            .serverAddress(XNF_ADDRESS) //
-            .userId(USERNAME).password(PASSWORD) //
-            .port(PORT) //
-            .build();
-    }
-
-    @BeforeEach
-    protected void setUp() throws Exception {
-        clientUnderTestSpy = spy(new FtpesClient(createFileServerData(), Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD,
-            TRUSTED_CA_PATH, TRUSTED_CA_PASSWORD));
-        clientUnderTestSpy.realFtpsClient = ftpsClientMock;
-    }
-
-    private void verifyFtpsClientMock_openOk() throws Exception {
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-
-        when(ftpsClientMock.retrieveFile(ArgumentMatchers.eq(REMOTE_FILE_PATH),
-            ArgumentMatchers.any(OutputStream.class))).thenReturn(true);
-        verify(ftpsClientMock).setNeedClientAuth(true);
-        verify(ftpsClientMock).setKeyManager(keyManagerMock);
-        verify(ftpsClientMock).setTrustManager(trustManagerMock);
-        verify(ftpsClientMock).connect(XNF_ADDRESS, PORT);
-        verify(ftpsClientMock).login(USERNAME, PASSWORD);
-        verify(ftpsClientMock).getReplyCode();
-        verify(ftpsClientMock, times(1)).enterLocalPassiveMode();
-        verify(ftpsClientMock).execPBSZ(0);
-        verify(ftpsClientMock).execPROT("P");
-        verify(ftpsClientMock).setFileType(FTP.BINARY_FILE_TYPE);
-        verify(ftpsClientMock).setBufferSize(1024 * 1024);
-    }
-
-    @Test
-    public void collectFile_allOk() throws Exception {
-
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doReturn(trustManagerMock).when(clientUnderTestSpy).getTrustManager(TRUSTED_CA_PATH, TRUSTED_CA_PASSWORD);
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-        doReturn(true).when(ftpsClientMock).login(USERNAME, PASSWORD);
-        doReturn(HttpStatus.OK.value()).when(ftpsClientMock).getReplyCode();
-
-        clientUnderTestSpy.open();
-
-        doReturn(true).when(ftpsClientMock).retrieveFile(REMOTE_FILE_PATH, outputStreamMock);
-        clientUnderTestSpy.collectFile(REMOTE_FILE_PATH, LOCAL_FILE_PATH);
-
-        doReturn(true).when(ftpsClientMock).isConnected();
-        clientUnderTestSpy.close();
-
-        verifyFtpsClientMock_openOk();
-        verify(ftpsClientMock, times(1)).isConnected();
-        verify(ftpsClientMock, times(1)).logout();
-        verify(ftpsClientMock, times(1)).disconnect();
-        verify(ftpsClientMock, times(1)).retrieveFile(ArgumentMatchers.eq(REMOTE_FILE_PATH), any());
-        verifyNoMoreInteractions(ftpsClientMock);
-    }
-
-    @Test
-    public void collectFileFaultyOwnKey_shouldFail() throws Exception {
-
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-        assertThatThrownBy(() -> clientUnderTestSpy.open())
-            .hasMessageContaining("Could not open connection: java.io.FileNotFoundException:");
-
-        verify(ftpsClientMock).setNeedClientAuth(true);
-
-        doReturn(false).when(ftpsClientMock).isConnected();
-        clientUnderTestSpy.close();
-        verify(ftpsClientMock).isConnected();
-        verifyNoMoreInteractions(ftpsClientMock);
-    }
-
-    @Test
-    public void collectFileFaultTrustedCA_shouldFail_no_trustedCA_file() throws Exception {
-
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doThrow(new IOException("problem")).when(clientUnderTestSpy).createInputStream(TRUSTED_CA_PATH);
-
-        assertThatThrownBy(() -> clientUnderTestSpy.open())
-            .hasMessage("Could not open connection: java.io.IOException: problem");
-    }
-
-    @Test
-    public void collectFileFaultTrustedCA_shouldFail_empty_trustedCA_file() throws Exception {
-
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doReturn(inputStreamMock).when(clientUnderTestSpy).createInputStream(TRUSTED_CA_PATH);
-
-        assertThatThrownBy(() -> clientUnderTestSpy.open())
-            .hasMessage("Could not open connection: java.io.EOFException");
-    }
-
-    @Test
-    public void collectFileFaultyLogin_shouldFail() throws Exception {
-
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doReturn(trustManagerMock).when(clientUnderTestSpy).getTrustManager(TRUSTED_CA_PATH, TRUSTED_CA_PASSWORD);
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-        doReturn(false).when(ftpsClientMock).login(USERNAME, PASSWORD);
-
-        assertThatThrownBy(() -> clientUnderTestSpy.open()).hasMessage("Unable to log in to xNF. 127.0.0.1");
-
-        verify(ftpsClientMock).setNeedClientAuth(true);
-        verify(ftpsClientMock).setKeyManager(keyManagerMock);
-        verify(ftpsClientMock).setTrustManager(trustManagerMock);
-        verify(ftpsClientMock).connect(XNF_ADDRESS, PORT);
-        verify(ftpsClientMock).login(USERNAME, PASSWORD);
-    }
-
-    @Test
-    public void collectFileBadRequestResponse_shouldFail() throws Exception {
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doReturn(trustManagerMock).when(clientUnderTestSpy).getTrustManager(TRUSTED_CA_PATH, TRUSTED_CA_PASSWORD);
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-        doReturn(true).when(ftpsClientMock).login(USERNAME, PASSWORD);
-        doReturn(503).when(ftpsClientMock).getReplyCode();
-
-        assertThatThrownBy(() -> clientUnderTestSpy.open())
-            .hasMessage("Unable to connect to xNF. 127.0.0.1 xNF reply code: 503");
-
-        verify(ftpsClientMock).setNeedClientAuth(true);
-        verify(ftpsClientMock).setKeyManager(keyManagerMock);
-        verify(ftpsClientMock).setTrustManager(trustManagerMock);
-        verify(ftpsClientMock).connect(XNF_ADDRESS, PORT);
-        verify(ftpsClientMock).login(USERNAME, PASSWORD);
-        verify(ftpsClientMock, times(2)).getReplyCode();
-        verifyNoMoreInteractions(ftpsClientMock);
-    }
-
-    @Test
-    public void collectFile_shouldFail() throws Exception {
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doReturn(trustManagerMock).when(clientUnderTestSpy).getTrustManager(TRUSTED_CA_PATH, TRUSTED_CA_PASSWORD);
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-        doReturn(true).when(ftpsClientMock).login(USERNAME, PASSWORD);
-        doReturn(HttpStatus.OK.value()).when(ftpsClientMock).getReplyCode();
-        clientUnderTestSpy.open();
-
-        doReturn(false).when(ftpsClientMock).retrieveFile(REMOTE_FILE_PATH, outputStreamMock);
-
-        assertThatThrownBy(() -> clientUnderTestSpy.collectFile(REMOTE_FILE_PATH, LOCAL_FILE_PATH))
-            .hasMessageContaining(REMOTE_FILE_PATH).hasMessageContaining("No retry");
-
-        verifyFtpsClientMock_openOk();
-        verify(ftpsClientMock, times(1)).retrieveFile(ArgumentMatchers.eq(REMOTE_FILE_PATH), any());
-        verifyNoMoreInteractions(ftpsClientMock);
-    }
-
-    @Test
-    public void collectFile_shouldFail_ioexception() throws Exception {
-        doReturn(keyManagerMock).when(clientUnderTestSpy).getKeyManager(Paths.get(FTP_KEY_PATH), FTP_KEY_PASSWORD);
-        doReturn(trustManagerMock).when(clientUnderTestSpy).getTrustManager(TRUSTED_CA_PATH, TRUSTED_CA_PASSWORD);
-        doReturn(outputStreamMock).when(clientUnderTestSpy).createOutputStream(LOCAL_FILE_PATH);
-        doReturn(true).when(ftpsClientMock).login(USERNAME, PASSWORD);
-        doReturn(HttpStatus.OK.value()).when(ftpsClientMock).getReplyCode();
-        clientUnderTestSpy.open();
-        when(ftpsClientMock.isConnected()).thenReturn(false);
-
-        doThrow(new IOException("problem")).when(ftpsClientMock).retrieveFile(REMOTE_FILE_PATH, outputStreamMock);
-
-        assertThatThrownBy(() -> clientUnderTestSpy.collectFile(REMOTE_FILE_PATH, LOCAL_FILE_PATH))
-            .hasMessage("Could not fetch file: java.io.IOException: problem");
-
-        verifyFtpsClientMock_openOk();
-        verify(ftpsClientMock, times(1)).retrieveFile(ArgumentMatchers.eq(REMOTE_FILE_PATH), any());
-        verifyNoMoreInteractions(ftpsClientMock);
-    }
-}