******************************************************************************/
package org.onap.dmaap.datarouter.provisioning;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.onap.dmaap.datarouter.provisioning.BaseServlet.BEHALF_HEADER;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.read.ListAppender;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletOutputStream;
import java.io.File;
import java.net.InetAddress;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.reflect.FieldUtils;
+import org.junit.AfterClass;
+import org.junit.Assert;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.junit.BeforeClass;
-import org.junit.AfterClass;
import org.mockito.Mock;
-
import org.onap.dmaap.datarouter.provisioning.beans.Deleteable;
import org.onap.dmaap.datarouter.provisioning.beans.Insertable;
import org.onap.dmaap.datarouter.provisioning.beans.LogRecord;
+import org.onap.dmaap.datarouter.provisioning.beans.Parameters;
import org.onap.dmaap.datarouter.provisioning.beans.Updateable;
+import org.onap.dmaap.datarouter.provisioning.utils.Poker;
import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(LogRecord.class)
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"})
public class InternalServletTest extends DrServletTestBase {
private static EntityManagerFactory emf;
private static EntityManager em;
@Mock
private HttpServletResponse response;
+ ListAppender<ILoggingEvent> listAppender;
+
@BeforeClass
public static void init() {
emf = Persistence.createEntityManagerFactory("dr-unit-tests");
@Before
public void setUp() throws Exception {
- internalServlet = new InternalServlet();
- setUpValidAuthorisedRequest();
+ listAppender = setTestLogger(InternalServlet.class);
+ internalServlet = new InternalServlet();
+ setUpValidAuthorisedRequest();
}
@Test
when(request.getRemoteAddr()).thenReturn("127.100.0.3");
internalServlet.doGet(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_FORBIDDEN), anyString());
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.isSecure()).thenReturn(false);
internalServlet.doGet(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_OK));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/logs/TestFile");
internalServlet.doGet(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_NO_CONTENT), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_NO_CONTENT), anyString());
}
@Test
public void Given_Request_Is_HTTP_GET_Starts_With_Logs_In_Endpoint_And_File_Exists_Then_Request_Returns_Ok()
throws Exception {
when(request.getPathInfo()).thenReturn("/logs/testFile.txt");
+ File testDir = new File("unit-test-logs");
File testFile = new File("unit-test-logs/testFile.txt");
+ testDir.mkdirs();
testFile.createNewFile();
testFile.deleteOnExit();
ServletOutputStream outStream = mock(ServletOutputStream.class);
when(request.getPathInfo()).thenReturn("/incorrect/");
internalServlet.doGet(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_NOT_FOUND), anyString());
}
@Test
FieldUtils.writeDeclaredStaticField(BaseServlet.class, "isAddressAuthEnabled", "true", true);
internalServlet.doPut(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_FORBIDDEN), anyString());
+ verifyEnteringExitCalled(listAppender);
}
@Test
setPokerToNotCreateTimers();
internalServlet.doPut(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_OK));
+ verifyEnteringExitCalled(listAppender);
}
@Test
internalServlet = internalServerFailure();
internalServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_INTERNAL_SERVER_ERROR),
- argThat(notNullValue(String.class)));
+ anyString());
}
@Test
when(request.getPathInfo()).thenReturn("/incorrect");
internalServlet.doPut(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_NOT_FOUND), anyString());
}
@Test
FieldUtils.writeDeclaredStaticField(BaseServlet.class, "isAddressAuthEnabled", "true", true);
internalServlet.doDelete(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_FORBIDDEN), anyString());
+ verifyEnteringExitCalled(listAppender);
}
@Test
setPokerToNotCreateTimers();
internalServlet.doDelete(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_OK));
+ verifyEnteringExitCalled(listAppender);
+ }
+
+ @Test
+ public void Given_Request_Is_HTTP_DELETE_With_LogRollInterval_Api_In_Endpoint_Request_Succeeds() {
+ when(request.getPathInfo()).thenReturn("/api/LOGROLL_INTERVAL");
+ internalServlet.doDelete(request, response);
+ verify(response).setStatus(eq(HttpServletResponse.SC_OK));
+ Parameters p1 = Parameters.getParameter("NODES");
+ Assert.assertEquals("{\"keyname\":\"NODES\",\"value\":\"dmaap-dr-node\"}", p1.asJSONObject().toString());
+ Assert.assertEquals("PARAM: keyname=NODES, value=dmaap-dr-node", p1.toString());
}
@Test
internalServlet = internalServerFailure();
internalServlet.doDelete(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_INTERNAL_SERVER_ERROR),
- argThat(notNullValue(String.class)));
+ anyString());
}
@Test
when(request.getPathInfo()).thenReturn("/incorrect");
internalServlet.doDelete(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_NOT_FOUND), anyString());
}
@Test
when(request.getRemoteAddr()).thenReturn("127.100.0.3");
internalServlet.doPost(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_FORBIDDEN), anyString());
+ verifyEnteringExitCalled(listAppender);
}
@Test
setPokerToNotCreateTimers();
internalServlet.doPost(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_OK));
+ verifyEnteringExitCalled(listAppender);
}
@Test
internalServlet = internalServerFailure();
internalServlet.doPost(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_INTERNAL_SERVER_ERROR),
- argThat(notNullValue(String.class)));
+ anyString());
}
@Test
- public void Given_Request_Is_HTTP_POST_To_Logs_And_Content_Header_Is_Not_Supported_Type_Then_Unsupported_Media_Type_Response_Is_Generated()
- throws Exception {
+ public void Given_Request_Is_HTTP_POST_To_Logs_And_Content_Header_Is_Not_Supported_Type_Then_Unsupported_Media_Type_Response_Is_Generated() {
when(request.getHeader("Content-Type")).thenReturn("stub_contentType");
when(request.getPathInfo()).thenReturn("/logs/");
internalServlet.doPost(request, response);
}
@Test
- public void Given_Request_Is_HTTP_POST_To_Logs_And_Content_Encoding_Is_Not_Supported_Type_Then_Unsupported_Media_Type_Response_Is_Generated()
- throws Exception {
+ public void Given_Request_Is_HTTP_POST_To_Logs_And_Content_Encoding_Is_Not_Supported_Type_Then_Unsupported_Media_Type_Response_Is_Generated() {
when(request.getHeader("Content-Encoding")).thenReturn("not-supported");
when(request.getPathInfo()).thenReturn("/logs/");
internalServlet.doPost(request, response);
}
@Test
- public void Given_Request_Is_HTTP_POST_To_Drlogs_And_Then_Unsupported_Media_Type_Response_Is_Generated()
- throws Exception {
+ public void Given_Request_Is_HTTP_POST_To_Drlogs_And_Then_Unsupported_Media_Type_Response_Is_Generated() {
when(request.getHeader("Content-Type")).thenReturn("stub_contentType");
when(request.getPathInfo()).thenReturn("/drlogs/");
internalServlet.doPost(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_OK));
}
+ @Test
+ public void Given_Request_Is_HTTP_POST_To_Api_And_Request_Succeeds() {
+ when(request.getPathInfo()).thenReturn("/api/NEW_PARAM?val=blah");
+ internalServlet.doPost(request, response);
+ verify(response).setStatus(eq(HttpServletResponse.SC_OK));
+ }
+
@Test
public void Given_Request_Is_HTTP_POST_With_Incorrect_Endpoint_Then_Not_Found_Error_Is_Generated()
throws Exception {
when(request.getPathInfo()).thenReturn("/incorrect/");
internalServlet.doPost(request, response);
verify(response)
- .sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ .sendError(eq(HttpServletResponse.SC_NOT_FOUND), anyString());
}
private void setUpValidAuthorisedRequest() throws Exception {