ResourceResolverType.JCR_OAK individual test class failing | Community
Skip to main content
sreenu539
Level 7
May 14, 2022

ResourceResolverType.JCR_OAK individual test class failing

  • May 14, 2022
  • 3 replies
  • 1264 views

Hi,

 

In my project: mvn clean install -PautoInstallPackage working fine and unit test classes are passing.

When I go to individual unit test class in IntelliJ IDE and run test class it is failing with below error.

 

Here is my test class:

 

package com.comp.app.rxwa.pharmacy.filters; import com.comp.app.rxwa.pharmacy.utils.CharArrayResponseWrapper; import io.wcm.testing.mock.aem.junit.AemContext; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.testing.mock.sling.ResourceResolverType; import org.apache.sling.testing.mock.sling.loader.ContentLoader; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; @RunWith(MockitoJUnitRunner.class) public class ContentJsonLinkRewriterFilterTest { protected static final String CONTENT_ROOT = "/content/experience-fragments/rxwa"; public Map<String, Object> props = new HashMap<>(); @1227241 public AemContext context = new AemContext(ResourceResolverType.JCR_OAK); @Mock FilterChain chain; public ContentJsonLinkRewriterFilter filter; @Before public void setUp() { context.load().json("/test-page-content.json", "/content/experience-fragments/rxwa"); context.requestPathInfo().setResourcePath("/content/experience-fragments/rxwa/templated-page"); context.requestPathInfo().setSelectorString("model"); context.requestPathInfo().setExtension("json"); context.request().setMethod("GET"); context.response().setCharacterEncoding("UTF-8"); context.currentResource("/content/experience-fragments/rxwa/templated-page"); } @2785667 public void testDoFilter() throws ServletException, IOException { props.clear(); props.put("enabled", "true"); props.put("resourceTypes", new String[] {"rxwa-pharmacy/components/structure/xfpage"}); ContentJsonLinkRewriterFilter aei = context.registerInjectActivateService(new ContentJsonLinkRewriterFilter(), props); filter = Mockito.spy(aei); Mockito.doAnswer(invocation -> { CharArrayResponseWrapper httpServletResponseWrapper = (CharArrayResponseWrapper) invocation.getArguments()[1]; String testHtmlContent = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); httpServletResponseWrapper.getWriter().write(testHtmlContent); httpServletResponseWrapper.getWriter().flush(); return null; }).when(chain).doFilter(Mockito.any(), Mockito.any()); filter.doFilter(context.request(), context.response(), chain); Mockito.verify(chain).doFilter(Mockito.any(), Mockito.any()); String testHtmlContent2 = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); Assert.assertFalse(StringUtils.contains(context.response().getOutputAsString(),"/content/experience-fragments/rxwa/")); } @2785667 public void testNoTransform() throws ServletException, IOException { props.clear(); props.put("enabled", "false"); props.put("resourceTypes", new String[] {"rxwa-pharmacy/components/structure/xfpage"}); ContentJsonLinkRewriterFilter aei = context.registerInjectActivateService(new ContentJsonLinkRewriterFilter(), props); filter = Mockito.spy(aei); Mockito.doAnswer(invocation -> { SlingHttpServletResponse httpServletResponseWrapper = (SlingHttpServletResponse)invocation.getArguments()[1]; String testHtmlContent = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); httpServletResponseWrapper.getWriter().write(testHtmlContent); httpServletResponseWrapper.getWriter().flush(); return null; }).when(chain).doFilter(Mockito.any(), Mockito.any()); filter.doFilter(context.request(), context.response(), chain); Mockito.verify(chain).doFilter(Mockito.any(), Mockito.any()); String testHtmlContent2 = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); Assert.assertTrue(StringUtils.contains(context.response().getOutputAsString(),"/content/experience-fragments/rxwa/")); } @2785667 public void testResourceTypeNoMatch() throws ServletException, IOException { props.clear(); props.put("enabled", "true"); props.put("resourceTypes", new String[] {"rxwa-pharmacy/components/structure/xfpagenomatch"}); ContentJsonLinkRewriterFilter aei = context.registerInjectActivateService(new ContentJsonLinkRewriterFilter(), props); filter = Mockito.spy(aei); Mockito.doAnswer(invocation -> { SlingHttpServletResponse httpServletResponseWrapper = (SlingHttpServletResponse)invocation.getArguments()[1]; String testHtmlContent = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); httpServletResponseWrapper.getWriter().write(testHtmlContent); httpServletResponseWrapper.getWriter().flush(); return null; }).when(chain).doFilter(Mockito.any(), Mockito.any()); filter.doFilter(context.request(), context.response(), chain); Mockito.verify(chain).doFilter(Mockito.any(), Mockito.any()); String testHtmlContent2 = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); Assert.assertTrue(StringUtils.contains(context.response().getOutputAsString(),"/content/experience-fragments/rxwa/")); } @2785667(expected = IllegalStateException.class) public void testAndValidateException() throws Exception { HttpServletRequest httpReq = Mockito.mock(HttpServletRequest.class); HttpServletResponse httpResp = Mockito.mock(HttpServletResponse.class); props.clear(); props.put("enabled", "true"); props.put("resourceTypes", new String[] {"rxwa-pharmacy/components/structure/xfpagenomatch"}); ContentJsonLinkRewriterFilter aei = context.registerInjectActivateService(new ContentJsonLinkRewriterFilter(), props); filter = Mockito.spy(aei); filter.doFilter(httpReq, httpResp, chain); } @2785667 public void testNoResponseString() throws ServletException, IOException { props.clear(); props.put("enabled", "true"); props.put("resourceTypes", new String[] {"rxwa-pharmacy/components/structure/xfpage"}); ContentJsonLinkRewriterFilter aei = context.registerInjectActivateService(new ContentJsonLinkRewriterFilter(), props); filter = Mockito.spy(aei); Mockito.doAnswer(invocation -> { SlingHttpServletResponse httpServletResponseWrapper = (SlingHttpServletResponse)invocation.getArguments()[1]; String testHtmlContent = ""; httpServletResponseWrapper.getWriter().write(testHtmlContent); httpServletResponseWrapper.getWriter().flush(); return null; }).when(chain).doFilter(Mockito.any(), Mockito.any()); filter.doFilter(context.request(), context.response(), chain); Mockito.verify(chain).doFilter(Mockito.any(), Mockito.any()); String testHtmlContent2 = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); Assert.assertEquals("{}", context.response().getOutputAsString()); } @2785667 public void testDoFilterCaas() throws ServletException, IOException { props.clear(); props.put("enabled", "true"); props.put("resourceTypes", new String[] {"rxwa-pharmacy/components/structure/xfpage"}); ContentJsonLinkRewriterFilter aei = context.registerInjectActivateService(new ContentJsonLinkRewriterFilter(), props); filter = Mockito.spy(aei); Mockito.doAnswer(invocation -> { CharArrayResponseWrapper httpServletResponseWrapper = (CharArrayResponseWrapper) invocation.getArguments()[1]; String testHtmlContent = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-caas-response.json"), "UTF-8" ); httpServletResponseWrapper.getWriter().write(testHtmlContent); httpServletResponseWrapper.getWriter().flush(); return null; }).when(chain).doFilter(Mockito.any(), Mockito.any()); filter.doFilter(context.request(), context.response(), chain); Mockito.verify(chain).doFilter(Mockito.any(), Mockito.any()); String testHtmlContent2 = IOUtils.toString( ContentLoader.class.getResourceAsStream("/test-page-content.json"), "UTF-8" ); Assert.assertFalse(StringUtils.contains(context.response().getOutputAsString(),"/content/experience-fragments/rxwa/")); } }

 

Here is mvn dependency:tree from core bundle module

 

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ rxwa-pharmacy.core --- [INFO] com.safeway.app.rxwa:rxwa-pharmacy.core:bundle:0.0.5-SNAPSHOT [INFO] +- org.osgi:osgi.core:jar:6.0.0:provided [INFO] +- org.osgi:osgi.cmpn:jar:6.0.0:provided [INFO] +- org.osgi:osgi.annotation:jar:6.0.0:provided [INFO] +- org.osgi:org.osgi.service.component.annotations:jar:1.3.0:provided [INFO] +- org.osgi:org.osgi.service.metatype.annotations:jar:1.3.0:provided [INFO] +- org.apache.felix:org.apache.felix.scr.annotations:jar:1.12.0:provided [INFO] +- org.apache.commons:commons-lang3:jar:3.5:provided [INFO] +- commons-codec:commons-codec:jar:1.5:provided [INFO] +- commons-io:commons-io:jar:2.4:provided [INFO] +- javax.servlet.jsp:jsp-api:jar:2.1:provided [INFO] +- javax.jcr:jcr:jar:2.0:provided [INFO] +- org.apache.sling:org.apache.sling.testing.sling-mock-oak:jar:2.1.6:test [INFO] +- junit:junit:jar:4.12:test [INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test [INFO] +- io.wcm:io.wcm.testing.aem-mock.junit4:jar:3.0.2:test [INFO] | +- io.wcm:io.wcm.testing.aem-mock.core:jar:3.0.2:test [INFO] | | +- org.apache.sling:org.apache.sling.api:jar:2.16.2:test [INFO] | | +- org.apache.jackrabbit:jackrabbit-jcr-commons:jar:2.14.0:test [INFO] | | | \- com.google.guava:guava:jar:15.0:test [INFO] | | +- org.apache.sling:org.apache.sling.commons.osgi:jar:2.4.0:test [INFO] | | +- org.apache.sling:org.apache.sling.resourceresolver:jar:1.5.22:test [INFO] | | +- org.apache.sling:org.apache.sling.serviceusermapper:jar:1.2.4:test [INFO] | | +- org.apache.sling:org.apache.sling.jcr.api:jar:2.4.0:test [INFO] | | +- org.apache.sling:org.apache.sling.jcr.resource:jar:2.9.2:test [INFO] | | +- org.apache.sling:org.apache.sling.commons.mime:jar:2.1.10:test [INFO] | | +- org.apache.sling:org.apache.sling.commons.json:jar:2.0.20:test [INFO] | | +- org.apache.sling:org.apache.sling.commons.classloader:jar:1.3.8:test [INFO] | | +- org.apache.sling:org.apache.sling.settings:jar:1.3.8:test [INFO] | | +- org.apache.sling:org.apache.sling.i18n:jar:2.5.6:test [INFO] | | +- org.apache.sling:org.apache.sling.models.impl:jar:1.3.8:test [INFO] | | | \- commons-beanutils:commons-beanutils:jar:1.8.3:test [INFO] | | +- org.apache.jackrabbit:oak-jcr:jar:1.6.1:test [INFO] | | | +- org.apache.jackrabbit:oak-core:jar:1.6.1:test [INFO] | | | | \- org.apache.jackrabbit:oak-blob:jar:1.6.1:test [INFO] | | | | \- org.apache.jackrabbit:jackrabbit-data:jar:2.14.0:test [INFO] | | | | \- org.slf4j:jcl-over-slf4j:jar:1.7.4:test [INFO] | | | +- org.apache.jackrabbit:oak-commons:jar:1.6.1:test [INFO] | | | +- org.apache.jackrabbit:jackrabbit-api:jar:2.14.0:test [INFO] | | | \- org.slf4j:slf4j-api:jar:1.7.6:test [INFO] | | +- org.apache.sling:org.apache.sling.testing.jcr-mock:jar:1.4.6:test [INFO] | | | \- org.apache.commons:commons-collections4:jar:4.1:test [INFO] | | +- org.apache.sling:org.apache.sling.testing.osgi-mock.core:jar:2.4.16:test [INFO] | | | \- org.reflections:reflections:jar:0.9.12:test [INFO] | | | \- org.javassist:javassist:jar:3.26.0-GA:test [INFO] | | +- org.apache.sling:org.apache.sling.testing.sling-mock.core:jar:2.5.0:test [INFO] | | | +- org.apache.sling:org.apache.sling.scripting.api:jar:2.1.12:test [INFO] | | | +- org.apache.sling:org.apache.sling.scripting.core:jar:2.0.44:test [INFO] | | | +- org.apache.sling:org.apache.sling.contentparser.api:jar:2.0.0:test [INFO] | | | +- org.apache.sling:org.apache.sling.contentparser.json:jar:2.0.0:test [INFO] | | | +- org.apache.johnzon:johnzon-core:jar:1.0.0:test [INFO] | | | +- org.apache.sling:org.apache.sling.adapter:jar:2.1.6:test [INFO] | | | +- org.apache.sling:org.apache.sling.resourcebuilder:jar:1.0.4:test [INFO] | | | +- commons-lang:commons-lang:jar:2.5:provided [INFO] | | | +- org.apache.geronimo.specs:geronimo-atinject_1.0_spec:jar:1.0:test [INFO] | | | \- org.apache.geronimo.specs:geronimo-json_1.1_spec:jar:1.0:test [INFO] | | +- org.apache.sling:org.apache.sling.testing.resourceresolver-mock:jar:1.1.26:test [INFO] | | +- org.apache.sling:org.apache.sling.servlet-helpers:jar:1.3.0:test [INFO] | | +- org.apache.jackrabbit.vault:org.apache.jackrabbit.vault:jar:3.1.18:test [INFO] | | +- org.apache.commons:commons-imaging:jar:1.0-R1534292:test [INFO] | | +- com.day.commons:day-commons-gfx:jar:2.1.28:test [INFO] | | | \- com.day.commons:day-commons-any:jar:2.0.0:test [INFO] | | | \- com.day.commons:day-commons-text:jar:1.1.3:test [INFO] | | \- org.apache.sling:org.apache.sling.testing.hamcrest:jar:1.0.2:test [INFO] | | \- org.hamcrest:hamcrest-library:jar:1.3:test [INFO] | +- org.apache.sling:org.apache.sling.testing.sling-mock.junit4:jar:2.5.0:test [INFO] | +- org.apache.sling:org.apache.sling.testing.osgi-mock.junit4:jar:3.1.2:test [INFO] | \- io.wcm:io.wcm.testing.junit-commons:jar:1.0.4:test [INFO] +- org.mockito:mockito-core:jar:3.0.0:compile [INFO] | +- net.bytebuddy:byte-buddy:jar:1.9.10:compile [INFO] | +- net.bytebuddy:byte-buddy-agent:jar:1.9.10:compile [INFO] | \- org.objenesis:objenesis:jar:2.6:compile [INFO] +- junit-addons:junit-addons:jar:1.4:test [INFO] | +- xerces:xercesImpl:jar:2.6.2:test [INFO] | \- xerces:xmlParserAPIs:jar:2.6.2:test [INFO] +- org.apache.sling:org.apache.sling.xss:jar:2.2.12:test [INFO] +- com.google.code.findbugs:jsr305:jar:3.0.2:provided [INFO] +- com.google.code.gson:gson:jar:2.8.5:compile [INFO] +- javax.inject:javax.inject:jar:1:provided [INFO] +- org.apache.httpcomponents:httpcore:jar:4.4.3:provided [INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.2:provided [INFO] | \- commons-logging:commons-logging:jar:1.2:provided [INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided [INFO] +- com.adobe.acs:acs-aem-commons-bundle:jar:4.3.2:provided [INFO] +- biz.aQute.bnd:bndlib:jar:2.4.0:provided [INFO] | \- org.osgi:org.osgi.core:jar:4.3.1:provided [INFO] +- commons-collections:commons-collections:jar:3.2.2:compile [INFO] +- org.codehaus.sonar-plugins.java:sonar-jacoco-listeners:jar:2.3:test [INFO] \- com.adobe.aem:uber-jar:jar:6.5.7:provided [INFO] ------------------------------------------------------------------------

 

 

Here is core bundle POM dependecies :

 

<dependency> <groupId>org.osgi</groupId> <artifactId>osgi.core</artifactId> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>osgi.cmpn</artifactId> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>osgi.annotation</artifactId> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.service.component.annotations</artifactId> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.service.metatype.annotations</artifactId> </dependency> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.scr.annotations</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> </dependency> <dependency> <groupId>javax.jcr</groupId> <artifactId>jcr</artifactId> </dependency> <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.testing.sling-mock-oak</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>io.wcm</groupId> <artifactId>io.wcm.testing.aem-mock.junit4</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>junit-addons</groupId> <artifactId>junit-addons</artifactId> </dependency> <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.xss</artifactId> </dependency> <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.adobe.acs</groupId> <artifactId>acs-aem-commons-bundle</artifactId> </dependency> <dependency> <groupId>biz.aQute.bnd</groupId> <artifactId>bndlib</artifactId> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> </dependency> <dependency> <groupId>org.codehaus.sonar-plugins.java</groupId> <artifactId>sonar-jacoco-listeners</artifactId> <version>${sonar-jacoco-listeners.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.adobe.aem</groupId> <artifactId>uber-jar</artifactId> </dependency> </dependencies>
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

3 replies

Level 4
May 14, 2022

Could you please check the compiler in IntelliJ? and what's your java version?

 

 

joerghoh
Adobe Employee
Adobe Employee
May 18, 2022

I haven't found the actual error message, can you provide it as well?

 

Thanks,

Jörg

Level 2
June 4, 2022

I was able to get my node property request's working by switching to ResourceResolverType.JCR_MOCK instead, and correcting my test decencies to match the pom.xml in the example https://github.com/adobe/aem-guides-wknd