Packaging Junit | Community
Skip to main content
Level 4
June 16, 2020
Solved

Packaging Junit

  • June 16, 2020
  • 4 replies
  • 2770 views

Hi,

 

I have created a service to create packages. I want to know how to write Junit test for this service. PFB the service code for creating package. 

 

Any help would be great. Thanks in advance!!

 

@3214626 private Packaging packaging; public void createPackage(Node rootNode, String pkgName) { JcrPackageManager jcrPackageManager = packaging.getPackageManager(session); JcrPackage jcrPackage = jcrPackageManager.create(rootNode, pkgName); JcrPackageDefinition jcrPackageDefinition = jcrPackage.getDefinition(); DefaultWorkspaceFilter workspaceFilter = new DefaultWorkspaceFilter(); for (PathFilterSet packageFilter : packageFilters) { workspaceFilter.add(packageFilter); } jcrPackageDefinition.setFilter(workspaceFilter, AUTO_SAVE); jcrPackageDefinition.set(JcrPackageDefinition.PN_DESCRIPTION, PACKAGE_DESCRIPTION + pkgName, false); jcrPackageDefinition.set(JcrPackageDefinition.PN_GROUP, rootNode.getName() , false); jcrPackageManager.assemble(jcrPackage, listener); }

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

4 replies

VeenaVikraman
Community Advisor
Community Advisor
June 16, 2020
BrianKasingli
Community Advisor and Adobe Champion
BrianKasingliCommunity Advisor and Adobe ChampionAccepted solution
Community Advisor and Adobe Champion
June 16, 2020
Level 4
June 19, 2020

Thanks @briankasingli and @veenavikraman  for answers.

 

@briankasingli The first example you shared matches most of my scenario. But still I am not able to create package using that approach. I have updated my code based on that. But I am getting different exception now. PFB part of my code.

Could you please let me know if there is any mistake. The service actually works fine. The problem is happening only in Junit.

Exception:

javax.jcr.RepositoryException: Item.save() not allowed on new item

at org.apache.jackrabbit.oak.jcr.session.ItemImpl.save(ItemImpl.java:267)

at org.apache.jackrabbit.oak.jcr.session.NodeImpl.save(NodeImpl.java:105)

at org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.createNew(JcrPackageImpl.java:221)

at org.apache.jackrabbit.vault.packaging.impl.JcrPackageManagerImpl.create(JcrPackageManagerImpl.java:344)

 

Junit Code:

 

@ExtendWith({AemContextExtension.class, MockitoExtension.class}) class CreateComplianceFileProcessTest { public final AemContext context = new AemContext(ResourceResolverType.JCR_OAK); @InjectMocks private CreateComplianceFileProcess createCompFileWP; @Test void testExecute() { resolver = context.resourceResolver(); session = resolver.adaptTo(Session.class); when(complianceResolverService.getResourceResolver()).thenReturn(resolver); when(packaging.getPackageManager(any(Session.class))).thenReturn(new JcrPackageManagerImpl(session)); createCompFileWP.execute(item, null, null); } }

 

 

BrianKasingli
Community Advisor and Adobe Champion
Community Advisor and Adobe Champion
June 21, 2020
It looks like you are on the right track.
Level 4
June 22, 2020

In the example https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/test/java/com/adobe/acs/commons/packaging/impl/AssetPackagerServletImplTest.java, they have used jcrPackageManager.create(groupName, name, version) which is also working for me. But methods mentioned below are not working. These are throwing exceptions in "org.apache.jackrabbit" classes.

 

Methods not working:

  • jcrPackageManager.create(rootNode, pkgName)
  • jcrPackageManager.assemble(jcrPackage, listener)