Add more test cases to address sonar coverage
SLING-10644
diff --git a/src/test/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePluginTest.java b/src/test/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePluginTest.java
index cb8d22f..61b886f 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePluginTest.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePluginTest.java
@@ -21,6 +21,7 @@
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
+import org.apache.sling.servlets.resolver.internal.ResolverConfig;
import org.apache.sling.servlets.resolver.internal.resolution.ResolutionCache;
import org.hamcrest.CoreMatchers;
import org.junit.After;
@@ -45,6 +46,7 @@
import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasJsonPath;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
public class WebConsolePluginTest {
@Mock
@@ -64,7 +66,10 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.openMocks(this);
-
+ ResolverConfig resolverConfig = Mockito.mock(ResolverConfig.class);
+ Mockito.when(resolverConfig.servletresolver_defaultExtensions()).thenReturn(new String[]{"html"});
+ Mockito.when(resolverConfig.servletresolver_paths()).thenReturn(new String[]{"/path"});
+ webConsolePlugin.activate(resolverConfig);
// mock http responses
stringWriter = new StringWriter();
writer = new PrintWriter(stringWriter);
@@ -77,12 +82,13 @@
}
@Test
- public void printJsonFormat() throws Exception {
+ public void printJsonFormatFull() throws Exception {
// Mock resource resolver
ResourceResolver resourceResolver = Mockito.mock(ResourceResolver.class);
Resource resource = Mockito.mock(Resource.class);
Servlet servlet = Mockito.mock(Servlet.class);
Mockito.when(resource.adaptTo(Servlet.class)).thenReturn(servlet);
+ Mockito.when(resource.getPath()).thenReturn("/path");
Mockito.when(resourceResolver.resolve(Mockito.anyString())).thenReturn(resource);
Mockito.when(resourceResolverFactory.getServiceResourceResolver(Mockito.anyMap())).thenReturn(resourceResolver);
@@ -122,7 +128,83 @@
}
@Test
- public void printHTMLFormat() throws Exception {
+ public void printJsonFormatEmptyURL() throws Exception {
+ // Mock resource resolver
+ ResourceResolver resourceResolver = Mockito.mock(ResourceResolver.class);
+ Resource resource = Mockito.mock(Resource.class);
+ Mockito.when(resource.adaptTo(Servlet.class)).thenReturn(null);
+ Mockito.when(resourceResolver.resolve(Mockito.anyString())).thenReturn(resource);
+ Mockito.when(resourceResolverFactory.getServiceResourceResolver(Mockito.anyMap())).thenReturn(resourceResolver);
+
+ // Mock request calls
+ Mockito.when(request.getParameter("url")).thenReturn("");
+ Mockito.when(request.getParameter("method")).thenReturn("GET");
+
+ // JSON output
+ Mockito.when(request.getRequestURI()).thenReturn("/path/servletresolver.json");
+
+ webConsolePlugin.service(request, response);
+
+ Mockito.verify(response).setContentType("application/json");
+
+ String jsonString = stringWriter.toString();
+ String json = Json.createReader(new StringReader(jsonString)).readObject().toString();
+
+ Map<String, Object> expectedJsonPaths = new HashMap(){{
+ put("$.method", "GET");
+ }};
+
+ expectedJsonPaths.forEach((k, v) -> {
+ if (v != null) {
+ assertThat(json, hasJsonPath(k, equalTo(v)));
+ } else {
+ assertThat(json, hasJsonPath(k));
+ }
+ });
+ }
+
+ @Test
+ public void printJsonFormatDenyPaths() throws Exception {
+ // Mock resource resolver
+ ResourceResolver resourceResolver = Mockito.mock(ResourceResolver.class);
+ Resource resource = Mockito.mock(Resource.class);
+ Servlet servlet = Mockito.mock(Servlet.class);
+ Mockito.when(resource.adaptTo(Servlet.class)).thenReturn(servlet);
+ Mockito.when(resource.getPath()).thenReturn("/denied");
+ Mockito.when(resourceResolver.resolve(Mockito.anyString())).thenReturn(resource);
+ Mockito.when(resourceResolverFactory.getServiceResourceResolver(Mockito.anyMap())).thenReturn(resourceResolver);
+
+ // Mock request calls
+ Mockito.when(request.getParameter("url")).thenReturn("/denied");
+ Mockito.when(request.getParameter("method")).thenReturn("GET");
+
+ // JSON output
+ Mockito.when(request.getRequestURI()).thenReturn("/path/servletresolver.json");
+
+ webConsolePlugin.service(request, response);
+
+ Mockito.verify(response).setContentType("application/json");
+
+ String jsonString = stringWriter.toString();
+ String json = Json.createReader(new StringReader(jsonString)).readObject().toString();
+
+ Map<String, Object> expectedJsonPaths = new HashMap(){{
+ put("$.candidates", null);
+ put("$.candidates.allowedServlets.length()", 0);
+ put("$.candidates.deniedServlets.length()", 1);
+ }};
+
+ expectedJsonPaths.forEach((k, v) -> {
+ if (v != null) {
+ assertThat(json, hasJsonPath(k, equalTo(v)));
+ } else {
+ assertThat(json, hasJsonPath(k));
+ }
+ });
+ }
+
+ @Test
+ public void printHTMLFormatFull() throws Exception {
// Mock resource resolver
ResourceResolver resourceResolver = Mockito.mock(ResourceResolver.class);
Resource resource = Mockito.mock(Resource.class);
@@ -184,4 +266,73 @@
"<ol class='servlets'>\n";
assertThat(htmlString, CoreMatchers.containsString(expectedCandidatesHTML));
}
+
+ @Test
+ public void printHTMLFormatEmptyURL() throws Exception {
+ // Mock resource resolver
+ ResourceResolver resourceResolver = Mockito.mock(ResourceResolver.class);
+ Resource resource = Mockito.mock(Resource.class);
+ Mockito.when(resource.adaptTo(Servlet.class)).thenReturn(null);
+ Mockito.when(resourceResolver.resolve(Mockito.anyString())).thenReturn(resource);
+ Mockito.when(resourceResolverFactory.getServiceResourceResolver(Mockito.anyMap())).thenReturn(resourceResolver);
+
+ // Mock request calls
+ Mockito.when(request.getParameter("url")).thenReturn("");
+ Mockito.when(request.getParameter("method")).thenReturn("GET");
+
+ // HTML output
+ Mockito.when(request.getRequestURI()).thenReturn("/path/servletresolver");
+
+ webConsolePlugin.service(request, response);
+
+ String htmlString = stringWriter.toString();
+ assertEquals("<form method='get'><table class='content' cellpadding='0' cellspacing='0' width='100%'>\n" +
+ "<tr class='content'>\n" +
+ "<th colspan='3' class='content container'>Servlet Resolver Test</th>\n" +
+ "</tr>\n" +
+ "<tr class='content'>\n" +
+ "<td colspan='3' class='content'>To check which servlet is responsible for rendering a response, " +
+ "enter a request path into the field and click 'Resolve' to resolve it.</th>\n" +
+ "</tr>\n" +
+ "<tr class='content'>\n" +
+ "<td class='content'>URL</td>\n" +
+ "<td class='content' colspan='2'><input type='text' name='url' value='' class='input' size='50'>\n" +
+ "</td></tr>\n" +
+ "</tr>\n" +
+ "<tr class='content'>\n" +
+ "<td class='content'>Method</td>\n" +
+ "<td class='content' colspan='2'><select name='method'>\n" +
+ "<option value='GET'>GET</option>\n" +
+ "<option value='POST'>POST</option>\n" +
+ "</select>\n" +
+ " <input type='submit' value='Resolve' class='submit'>\n" +
+ "</td></tr>\n" +
+ "</table>\n" +
+ "</form>", htmlString);
+ }
+
+ @Test
+ public void printHTMLFormatDenyPaths() throws Exception {
+ // Mock resource resolver
+ ResourceResolver resourceResolver = Mockito.mock(ResourceResolver.class);
+ Resource resource = Mockito.mock(Resource.class);
+ Servlet servlet = Mockito.mock(Servlet.class);
+ Mockito.when(resource.adaptTo(Servlet.class)).thenReturn(servlet);
+ Mockito.when(resource.getPath()).thenReturn("/denied");
+ Mockito.when(resourceResolver.resolve(Mockito.anyString())).thenReturn(resource);
+ Mockito.when(resourceResolverFactory.getServiceResourceResolver(Mockito.anyMap())).thenReturn(resourceResolver);
+
+ // Mock request calls
+ Mockito.when(request.getParameter("url")).thenReturn("/denied");
+ Mockito.when(request.getParameter("method")).thenReturn("GET");
+
+ // HTML output
+ Mockito.when(request.getRequestURI()).thenReturn("/path/servletresolver");
+ webConsolePlugin.service(request, response);
+
+ String htmlString = stringWriter.toString();
+ final String expectedDeniedElement = "<ol class='servlets'>\n" +
+ "<li><del>";
+ assertThat(htmlString, CoreMatchers.containsString(expectedDeniedElement));
+ }
}