/* * Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.agiletec.plugins.jacms.aps.system.services.resource; import java.io.File; import java.util.ArrayList; import java.util.List; import com.agiletec.aps.BaseTestCase; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.services.category.Category; import com.agiletec.aps.system.services.category.ICategoryManager; import com.agiletec.aps.system.services.group.Group; import com.agiletec.aps.system.services.group.GroupUtilizer; import com.agiletec.aps.system.services.group.IGroupManager; import com.agiletec.plugins.jacms.aps.system.JacmsSystemConstants; import com.agiletec.plugins.jacms.aps.system.services.resource.mock.MockResourceDataBean; import com.agiletec.plugins.jacms.aps.system.services.resource.model.AttachResource; import com.agiletec.plugins.jacms.aps.system.services.resource.model.ImageResource; import com.agiletec.plugins.jacms.aps.system.services.resource.model.ResourceDataBean; import com.agiletec.plugins.jacms.aps.system.services.resource.model.ResourceInstance; import com.agiletec.plugins.jacms.aps.system.services.resource.model.ResourceInterface; /** * @author W.Ambu - E.Santoboni */ public class TestResourceManager extends BaseTestCase { @Override protected void setUp() throws Exception { super.setUp(); this.init(); } public void testLoadResource() throws Throwable { try { ResourceInterface resource = this._resourceManager.loadResource("44"); assertTrue(resource instanceof ImageResource); assertTrue(resource.isMultiInstance()); assertEquals(resource.getDescription(), "logo"); assertEquals(resource.getCategories().size(), 1); resource = this._resourceManager.loadResource("7"); assertTrue(resource instanceof AttachResource); assertFalse(resource.isMultiInstance()); assertEquals(resource.getDescription(), "configurazione"); assertEquals(resource.getCategories().size(), 0); } catch (Throwable t) { throw t; } } public void testUpdateResource() throws Throwable { String oldDescr = null; List<Category> oldCategories = null; try { ResourceInterface resource = this._resourceManager.loadResource("44"); assertTrue(resource instanceof ImageResource); assertEquals(resource.getDescription(), "logo"); assertEquals(resource.getCategories().size(), 1); assertTrue(resource.isMultiInstance()); oldCategories = resource.getCategories(); oldDescr = resource.getDescription(); String newDescr = "New Description"; resource.setDescription(newDescr); resource.setCategories(new ArrayList<Category>()); this._resourceManager.updateResource(resource); resource = this._resourceManager.loadResource("44"); assertEquals(resource.getDescription(), newDescr); assertEquals(resource.getCategories().size(), 0); } catch (Throwable t) { throw t; } finally { if (oldCategories != null && oldDescr != null) { ResourceInterface resource = this._resourceManager.loadResource("44"); resource.setCategories(oldCategories); resource.setDescription(oldDescr); this._resourceManager.updateResource(resource); } } } public void testSearchResources_1() throws Throwable { List<String> resourceIds = this._resourceManager.searchResourcesId("Image", "", null, this.getAllGroupCodes()); assertEquals(3, resourceIds.size()); resourceIds = _resourceManager.searchResourcesId("Image", "Wrong descr", null, this.getAllGroupCodes()); assertEquals(0, resourceIds.size()); List<String> allowedGroups = new ArrayList<String>(); allowedGroups.add("customers"); resourceIds = _resourceManager.searchResourcesId("Image", "", null, allowedGroups); assertEquals(1, resourceIds.size()); } public void testSearchResources_2() throws Throwable { List<String> resourceIds = this._resourceManager.searchResourcesId("Image", "", "jpg", null, this.getAllGroupCodes()); assertEquals(3, resourceIds.size()); resourceIds = this._resourceManager.searchResourcesId("Image", "", "aps", null, this.getAllGroupCodes()); assertEquals(2, resourceIds.size()); resourceIds = this._resourceManager.searchResourcesId("Image", "", "aps.JPG", null, this.getAllGroupCodes()); assertEquals(1, resourceIds.size()); } public void testSearchResourcesForCategory() throws Throwable { List<String> resourceIds = _resourceManager.searchResourcesId("Image", null, "resCat1", this.getAllGroupCodes()); assertEquals(1, resourceIds.size()); resourceIds = _resourceManager.searchResourcesId("Image", null, "wrongCat", this.getAllGroupCodes()); assertEquals(0, resourceIds.size()); List<String> allowedGroups = new ArrayList<String>(); allowedGroups.add("customers"); resourceIds = _resourceManager.searchResourcesId("Image", "", "resCat1", allowedGroups); assertEquals(0, resourceIds.size()); } public void testAddRemoveImageResource() throws Throwable { this.testAddRemoveImageResource(Group.FREE_GROUP_NAME); this.testAddRemoveImageResource(Group.ADMINS_GROUP_NAME); } private void testAddRemoveImageResource(String mainGroup) throws Throwable { List<String> allowedGroups = this.getAllGroupCodes(); ResourceInterface res = null; String resDescrToAdd = "Entando Logo"; String resourceType = "Image"; String categoryCodeToAdd = "resCat1"; ResourceDataBean bean = this.getMockResource(resourceType, mainGroup, resDescrToAdd, categoryCodeToAdd); try { List<String> resourcesId = _resourceManager.searchResourcesId(resourceType, null, categoryCodeToAdd, allowedGroups); assertEquals(1, resourcesId.size()); this._resourceManager.addResource(bean); resourcesId = _resourceManager.searchResourcesId(resourceType, resDescrToAdd, null, allowedGroups); assertEquals(resourcesId.size(), 1); resourcesId = _resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, allowedGroups); assertEquals(resourcesId.size(), 1); res = this._resourceManager.loadResource(resourcesId.get(0)); assertTrue(res instanceof ImageResource); assertEquals(res.getCategories().size(), 1); assertEquals(res.getDescription(), resDescrToAdd); ResourceInstance instance0 = ((ImageResource) res).getInstance(0, null); assertEquals("entando_logo.jpg", res.getMasterFileName()); assertEquals("image/jpeg", instance0.getMimeType()); resourcesId = _resourceManager.searchResourcesId(resourceType, null, categoryCodeToAdd, allowedGroups); assertEquals(resourcesId.size(), 2); } catch (Throwable t) { throw t; } finally { if (res != null) { this._resourceManager.deleteResource(res); List<String> resources = _resourceManager.searchResourcesId(resourceType, resDescrToAdd, null, allowedGroups); assertEquals(resources.size(), 0); resources = _resourceManager.searchResourcesId(resourceType, null, categoryCodeToAdd, allowedGroups); assertEquals(resources.size(), 1); } } } private ResourceDataBean getMockResource(String resourceType, String mainGroup, String resDescrToAdd, String categoryCodeToAdd) { File file = new File("target/test/entando_logo.jpg"); MockResourceDataBean bean = new MockResourceDataBean(); bean.setFile(file); bean.setDescr(resDescrToAdd); bean.setMainGroup(mainGroup); bean.setResourceType(resourceType); bean.setMimeType("image/jpeg"); List<Category> categories = new ArrayList<Category>(); ICategoryManager catManager = (ICategoryManager) this.getService(SystemConstants.CATEGORY_MANAGER); Category cat = catManager.getCategory(categoryCodeToAdd); categories.add(cat); bean.setCategories(categories); return bean; } public void testAddNullResource() throws Throwable { List<String> allowedGroups = this.getAllGroupCodes(); String resDescrToAdd = "Null Entando resource"; String resourceType = "Attach"; List<String> resourcesId = _resourceManager.searchResourcesId(resourceType, null, null, allowedGroups); int initsize = resourcesId.size(); ResourceDataBean bean = this.getNullMockResource(resourceType, resDescrToAdd); try { this._resourceManager.addResource(bean); fail(); } catch (Throwable t) { //nothing to do } finally { this.verifyTestAddNullResource(resDescrToAdd, resourceType, initsize); } } private void verifyTestAddNullResource(String resDescrToAdd, String resourceType, int initsize) throws Throwable { List<String> allowedGroups = this.getAllGroupCodes(); List<String> resourcesId = null; try { resourcesId = this._resourceManager.searchResourcesId(resourceType, null, null, allowedGroups); assertEquals(initsize, resourcesId.size()); resourcesId = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, null, allowedGroups); assertEquals(0, resourcesId.size()); } catch (Throwable t) { resourcesId = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, null, allowedGroups); for (int i = 0; i < resourcesId.size(); i++) { ResourceInterface res = this._resourceManager.loadResource(resourcesId.get(i)); this._resourceManager.deleteResource(res); } throw t; } } private ResourceDataBean getNullMockResource(String resourceType, String resDescrToAdd) { MockResourceDataBean bean = new MockResourceDataBean(); bean.setDescr(resDescrToAdd); bean.setMainGroup(Group.FREE_GROUP_NAME); bean.setResourceType(resourceType); bean.setMimeType("text/plain"); return bean; } public void testGetResourceType() { ResourceInterface imageResource = this._resourceManager.createResourceType("Image"); assertEquals("", imageResource.getDescription()); assertEquals("", imageResource.getId()); assertEquals("Image", imageResource.getType()); } public void testCreateResourceType() { ResourceInterface imageResource = this._resourceManager.createResourceType("Image"); assertNotNull(imageResource); assertEquals("", imageResource.getDescription()); assertEquals("", imageResource.getId()); assertEquals("Image", imageResource.getType()); assertNotSame("", imageResource.getXML()); } public void testGetGroupUtilizers() throws Throwable { assertTrue(this._resourceManager instanceof GroupUtilizer); List utilizers = ((GroupUtilizer) this._resourceManager).getGroupUtilizers(Group.FREE_GROUP_NAME); assertEquals(3, utilizers.size()); utilizers = ((GroupUtilizer) this._resourceManager).getGroupUtilizers("customers"); assertEquals(1, utilizers.size()); String resourceId = (String) utilizers.get(0); assertEquals("82", resourceId); } private List<String> getAllGroupCodes() { List<String> groupCodes = new ArrayList<String>(); List<Group> groups = this._groupManager.getGroups(); for (int i = 0; i < groups.size(); i++) { groupCodes.add(groups.get(i).getName()); } return groupCodes; } private void init() throws Exception { try { this._resourceManager = (IResourceManager) this.getService(JacmsSystemConstants.RESOURCE_MANAGER); this._groupManager = (IGroupManager) this.getService(SystemConstants.GROUP_MANAGER); } catch (Throwable t) { throw new Exception(t); } } private IResourceManager _resourceManager; private IGroupManager _groupManager; }