Add syntax check before pushing code
[dmaap/datarouter.git] / datarouter-prov / src / test / java / org / onap / dmaap / datarouter / provisioning / BaseServletTest.java
old mode 100644 (file)
new mode 100755 (executable)
index 5966b77..79c3d21
 package org.onap.dmaap.datarouter.provisioning;
 
 import org.apache.commons.lang3.reflect.FieldUtils;
-import org.apache.log4j.Logger;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.dmaap.datarouter.provisioning.beans.Feed;
+import org.onap.dmaap.datarouter.provisioning.beans.FeedAuthorization;
+import org.onap.dmaap.datarouter.provisioning.beans.Group;
+import org.onap.dmaap.datarouter.provisioning.beans.Subscription;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.slf4j.MDC;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.UUID;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
+import static org.powermock.api.mockito.PowerMockito.mockStatic;
+
+@RunWith(PowerMockRunner.class)
+@SuppressStaticInitializationFor({"org.onap.dmaap.datarouter.provisioning.beans.Feed",
+        "org.onap.dmaap.datarouter.provisioning.beans.Subscription",
+        "org.onap.dmaap.datarouter.provisioning.beans.Group",
+        "org.onap.dmaap.datarouter.provisioning.BaseServlet"})
+@PrepareForTest({ UUID.class})
+public class BaseServletTest extends DrServletTestBase {
 
-@RunWith(MockitoJUnitRunner.class)
-public class BaseServletTest {
     private BaseServlet baseServlet;
 
     @Mock
@@ -51,20 +68,19 @@ public class BaseServletTest {
 
     @Before
     public void setUp() throws Exception {
-        FieldUtils.writeDeclaredStaticField(BaseServlet.class, "startmsg_flag", false, true);
-        SynchronizerTask synchronizerTask = mock(SynchronizerTask.class);
-        FieldUtils.writeDeclaredStaticField(BaseServlet.class, "synctask", synchronizerTask, true);
+        super.setUp();
         baseServlet = new BaseServlet();
     }
 
 
     @Test
-    public void Given_Request_Path_Info_Is_Valid_Then_Id_Is_Extracted_Correctly() throws Exception {
+    public void Given_Request_Path_Info_Is_Valid_Then_Id_Is_Extracted_Correctly() {
         when(request.getPathInfo()).thenReturn("/123");
         assertThat(baseServlet.getIdFromPath(request), is(123));
     }
+
     @Test
-    public void Given_Request_Path_Info_Is_Not_Valid_Then_Minus_One_Is_Returned() throws Exception {
+    public void Given_Request_Path_Info_Is_Not_Valid_Then_Minus_One_Is_Returned() {
         when(request.getPathInfo()).thenReturn("/abc");
         assertThat(baseServlet.getIdFromPath(request), is(-1));
         when(request.getPathInfo()).thenReturn("/");
@@ -72,12 +88,140 @@ public class BaseServletTest {
     }
 
     @Test
-    public void Given_Request_Path_Info_Is_Not_Valid_Then_Minus_One_Is() throws Exception {
+    public void Given_Remote_Address_Is_Known_And_RequireCerts_Is_True() throws Exception {
         when(request.isSecure()).thenReturn(true);
         Set<String> authAddressesAndNetworks = new HashSet<String>();
         authAddressesAndNetworks.add(("127.0.0.1"));
         FieldUtils.writeDeclaredStaticField(BaseServlet.class, "authorizedAddressesAndNetworks", authAddressesAndNetworks, true);
-        FieldUtils.writeDeclaredStaticField(BaseServlet.class, "require_cert", false, true);
-        assertThat(baseServlet.isAuthorizedForProvisioning(request), is(nullValue()));
+        FieldUtils.writeDeclaredStaticField(BaseServlet.class, "requireCert", true, true);
+        assertNull(baseServlet.isAuthorizedForProvisioning(request));
+    }
+
+    @Test
+    public void Given_Request_Is_GetFeedOwner_And_Feed_Exists() throws Exception {
+        PowerMockito.mockStatic(Feed.class);
+        Feed feed = mock(Feed.class);
+        PowerMockito.when(Feed.getFeedById(anyInt())).thenReturn(feed);
+        when(feed.getPublisher()).thenReturn("stub_publisher");
+        assertThat(baseServlet.getFeedOwner("3"), is("stub_publisher"));
+    }
+
+    @Test
+    public void Given_Request_Is_GetFeedOwner_And_Feed_Does_Not_Exist() throws Exception {
+        PowerMockito.mockStatic(Feed.class);
+        PowerMockito.when(Feed.getFeedById(anyInt())).thenReturn(null);
+        assertThat(baseServlet.getFeedOwner("3"), is(nullValue()));
+    }
+
+    @Test
+    public void Given_Request_Is_GetFeedClassification_And_Feed_Exists() throws Exception {
+        PowerMockito.mockStatic(Feed.class);
+        Feed feed = mock(Feed.class);
+        PowerMockito.when(Feed.getFeedById(anyInt())).thenReturn(feed);
+        FeedAuthorization fAuth = mock(FeedAuthorization.class);
+        when(feed.getAuthorization()).thenReturn(fAuth);
+        when(fAuth.getClassification()).thenReturn("stub_classification");
+        assertThat(baseServlet.getFeedClassification("3"), is("stub_classification"));
+    }
+
+    @Test
+    public void Given_Request_Is_GetFeedClassification_And_Feed_Does_Not_Exist() throws Exception {
+        PowerMockito.mockStatic(Feed.class);
+        PowerMockito.when(Feed.getFeedById(anyInt())).thenReturn(null);
+        assertThat(baseServlet.getFeedClassification("3"), is(nullValue()));
+    }
+
+    @Test
+    public void Given_Request_Is_GetSubscriptionOwner_And_Subscription_Exists() throws Exception {
+        PowerMockito.mockStatic(Subscription.class);
+        Subscription subscription = mock(Subscription.class);
+        PowerMockito.when(Subscription.getSubscriptionById(anyInt())).thenReturn(subscription);
+        when(subscription.getSubscriber()).thenReturn("stub_subscriber");
+        assertThat(baseServlet.getSubscriptionOwner("3"), is("stub_subscriber"));
+    }
+
+    @Test
+    public void Given_Request_Is_GetSubscriptionOwner_And_Subscription_Does_Not_Exist() throws Exception {
+        PowerMockito.mockStatic(Subscription.class);
+        PowerMockito.when(Subscription.getSubscriptionById(anyInt())).thenReturn(null);
+        assertThat(baseServlet.getSubscriptionOwner("3"), is(nullValue()));
     }
+
+    @Test
+    public void Given_Request_Is_GetGroupByFeedGroupId_And_User_Is_A_Member_Of_Group() throws Exception {
+        PowerMockito.mockStatic(Feed.class);
+        Feed feed = mock(Feed.class);
+        PowerMockito.when(Feed.getFeedById(anyInt())).thenReturn(feed);
+        when(feed.getGroupid()).thenReturn(3);
+        PowerMockito.mockStatic(Group.class);
+        Group group = mock(Group.class);
+        when(group.getMembers()).thenReturn("{id: stub_user}");
+        PowerMockito.when(Group.getGroupById(anyInt())).thenReturn(group);
+        when(group.getAuthid()).thenReturn("stub_authID");
+        assertThat(baseServlet.getGroupByFeedGroupId("stub_user", "3"), is("stub_authID"));
+    }
+
+    @Test
+    public void Given_Request_Is_GetGroupByFeedGroupId_And_User_Is_Not_A_Member_Of_Group() throws Exception {
+        PowerMockito.mockStatic(Feed.class);
+        Feed feed = mock(Feed.class);
+        PowerMockito.when(Feed.getFeedById(anyInt())).thenReturn(feed);
+        when(feed.getGroupid()).thenReturn(3);
+        PowerMockito.mockStatic(Group.class);
+        Group group = mock(Group.class);
+        when(group.getMembers()).thenReturn("{id: stub_otherUser}");
+        PowerMockito.when(Group.getGroupById(anyInt())).thenReturn(group);
+        when(group.getAuthid()).thenReturn("stub_authID");
+        assertThat(baseServlet.getGroupByFeedGroupId("stub_user", "3"), is(nullValue()));
+    }
+
+    @Test
+    public void Given_Request_Is_GetGroupBySubGroupId_And_User_Is_A_Member_Of_Group() throws Exception {
+        PowerMockito.mockStatic(Subscription.class);
+        Subscription subscription = mock(Subscription.class);
+        PowerMockito.when(Subscription.getSubscriptionById(anyInt())).thenReturn(subscription);
+        when(subscription.getGroupid()).thenReturn(3);
+        PowerMockito.mockStatic(Group.class);
+        Group group = mock(Group.class);
+        when(group.getMembers()).thenReturn("{id: stub_user}");
+        PowerMockito.when(Group.getGroupById(anyInt())).thenReturn(group);
+        when(group.getAuthid()).thenReturn("stub_authID");
+        assertThat(baseServlet.getGroupBySubGroupId("stub_user", "3"), is("stub_authID"));
+    }
+
+    @Test
+    public void Given_Request_Is_GetGroupBySubGroupId_And_User_Is_Not_A_Member_Of_Group() throws Exception {
+        PowerMockito.mockStatic(Subscription.class);
+        Subscription subscription = mock(Subscription.class);
+        PowerMockito.when(Subscription.getSubscriptionById(anyInt())).thenReturn(subscription);
+        when(subscription.getGroupid()).thenReturn(3);
+        PowerMockito.mockStatic(Group.class);
+        Group group = mock(Group.class);
+        when(group.getMembers()).thenReturn("{id: stub_otherUser}");
+        PowerMockito.when(Group.getGroupById(anyInt())).thenReturn(group);
+        when(group.getAuthid()).thenReturn("stub_authID");
+        assertThat(baseServlet.getGroupBySubGroupId("stub_user", "3"), is(nullValue()));
+    }
+
+    @Test
+    public void Given_Request_Has_Empty_RequestId_And_InvocationId_Headers_Generate_MDC_Values() {
+        when(request.getHeader("X-ONAP-RequestID")).thenReturn("");
+        when(request.getHeader("X-InvocationID")).thenReturn("");
+        mockStatic(UUID.class);
+        when(UUID.randomUUID().toString()).thenReturn("123", "456");
+        baseServlet.setIpFqdnRequestIDandInvocationIDForEelf("doDelete", request);
+        Assert.assertEquals("123", MDC.get("RequestId"));
+        Assert.assertEquals("456", MDC.get("InvocationId"));
+    }
+
+    @Test
+    public void Given_Request_Has_RequestId_And_InvocationId_Headers_Set_MDC_Values() {
+        when(request.getHeader("X-ONAP-RequestID")).thenReturn("123");
+        when(request.getHeader("X-InvocationID")).thenReturn("456");
+        baseServlet.setIpFqdnRequestIDandInvocationIDForEelf("doDelete", request);
+        Assert.assertEquals("123", MDC.get("RequestId"));
+        Assert.assertEquals("456", MDC.get("InvocationId"));
+    }
+
+
 }