/*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
* This file is part of jAPS software.
* jAPS is a free software;
* you can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions
* and limitations under the License
*
*
*
* Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved.
*
*/
package test.com.agiletec.plugins.jacms.apsadmin.resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import test.com.agiletec.apsadmin.ApsAdminBaseTestCase;
import com.agiletec.aps.system.services.category.Category;
import com.agiletec.aps.system.services.group.Group;
import com.agiletec.apsadmin.system.ApsAdminSystemConstants;
import com.agiletec.plugins.jacms.aps.system.JacmsSystemConstants;
import com.agiletec.plugins.jacms.aps.system.services.resource.IResourceManager;
import com.agiletec.plugins.jacms.aps.system.services.resource.model.ResourceInterface;
import com.agiletec.plugins.jacms.apsadmin.resource.ResourceAction;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author E.Santoboni
*/
public class TestResourceAction extends ApsAdminBaseTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
this.init();
}
public void testTrashResource() throws Throwable {
this.setUserOnSession("admin");
this.initAction("/do/jacms/Resource", "trash");
this.addParameter("resourceId", "7");
String result = this.executeAction();
assertEquals("references", result);
ResourceAction action = (ResourceAction) this.getAction();
Map utilizersGroup = action.getReferences();
assertNotNull(utilizersGroup);
assertEquals(1, utilizersGroup.size());
// test with no resourceId
this.initAction("/do/jacms/Resource", "trash");
result = this.executeAction();
assertEquals(Action.INPUT, result);
}
public void testDeleteResourceReferencedFromEditor() throws Throwable {
this.setUserOnSession("mainEditor");
this.initAction("/do/jacms/Resource", "delete");
this.addParameter("resourceId", "7");
String result = this.executeAction();
assertEquals("references", result);
}
public void testDeleteUnknownResource() throws Throwable {
String result = null;
try {
this.setUserOnSession("admin");
this.initAction("/do/jacms/Resource", "delete");
result = this.executeAction();
assertEquals(Action.INPUT, result);
} catch (Throwable t) {
throw t;
}
}
public void testSaveNewResource_1() throws Throwable {
this.setUserOnSession("admin");
this.initAction("/do/jacms/Resource", "save");
this.addParameter("strutsAction", String.valueOf(ApsAdminSystemConstants.ADD));
String result = this.executeAction();
assertEquals(Action.INPUT, result);
ActionSupport action = this.getAction();
Map<String, List<String>> actionFieldErrors = action.getFieldErrors();
assertEquals(4, actionFieldErrors.size());
assertEquals(1, actionFieldErrors.get("resourceTypeCode").size());
assertEquals(1, actionFieldErrors.get("descr").size());
assertEquals(1, actionFieldErrors.get("mainGroup").size());
assertEquals(1, actionFieldErrors.get("upload").size());
}
public void testSaveNewResource_2() throws Throwable {
String insertedDescr = "Description ";
while (insertedDescr.length() < 300) insertedDescr += insertedDescr;
this.setUserOnSession("admin");
this.initAction("/do/jacms/Resource", "save");
this.addParameter("strutsAction", String.valueOf(ApsAdminSystemConstants.ADD));
this.addParameter("descr", insertedDescr);
this.addParameter("mainGroup", Group.FREE_GROUP_NAME);
String result = this.executeAction();
assertEquals(Action.INPUT, result);
ActionSupport action = this.getAction();
Map<String, List<String>> actionFieldErrors = action.getFieldErrors();
assertEquals(3, actionFieldErrors.size());
assertEquals(1, actionFieldErrors.get("resourceTypeCode").size());
assertEquals(1, actionFieldErrors.get("descr").size());
}
public void testSaveEditedResource() throws Throwable {
String resourceId = "44";
this.setUserOnSession("admin");
ResourceInterface resource = this._resourceManager.loadResource(resourceId);
try {
this.initAction("/do/jacms/Resource", "save");
this.addParameter("strutsAction", String.valueOf(ApsAdminSystemConstants.EDIT));
this.addParameter("descr", "Descrizione di test");
this.addParameter("mainGroup", resource.getMainGroup());
this.addParameter("resourceId", String.valueOf(resourceId));
this.addParameter("resourceTypeCode", resource.getType());
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
ResourceInterface modifiedResource = this._resourceManager.loadResource(resourceId);
assertEquals("Descrizione di test", modifiedResource.getDescr());
} catch (Throwable t) {
throw t;
} finally {
this._resourceManager.updateResource(resource);
}
}
public void testPerformRemoveJoinCategory() throws Throwable {
this.entryEditResource("44", "admin");
ResourceAction action = (ResourceAction) this.getAction();
Map<String, String> params = new HashMap<String, String>();
params.put("resourceId", action.getResourceId());
params.put("strutsAction", String.valueOf(action.getStrutsAction()));
params.put("descr", action.getDescr());
params.put("mainGroup", action.getMainGroup());
Iterator<String> iter = action.getCategoryCodes().iterator();
while (iter.hasNext()) {
String categoryCode = iter.next();
params.put("categoryCodes", categoryCode);
}
params.put("resourceTypeCode", action.getResourceTypeCode());
assertEquals(1, action.getCategoryCodes().size());
assertTrue(action.getCategoryCodes().contains("resCat1"));
this.initAction("/do/jacms/Resource", "removeCategory");
this.setUserOnSession("admin");
this.addParameter("categoryCode", "resCat1");
this.addParameters(params);
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
action = (ResourceAction) this.getAction();
assertEquals(0, action.getCategoryCodes().size(), 0);
this.initAction("/do/jacms/Resource", "joinCategory");
params.put("categoryCode", "resCat1");
Iterator<String> iter2 = action.getCategoryCodes().iterator();
while (iter2.hasNext()) {
String categoryCode = iter2.next();
params.put("categoryCodes", categoryCode);
}
this.addParameters(params);
this.setUserOnSession("admin");
result = this.executeAction();
assertEquals(Action.SUCCESS, result);
action = (ResourceAction) this.getAction();
assertEquals(1, action.getCategoryCodes().size());
assertTrue(action.getCategoryCodes().contains("resCat1"));
this.initAction("/do/jacms/Resource", "joinCategory");
params.put("categoryCode", "resCat2");
Iterator<String> iter3 = action.getCategoryCodes().iterator();
while (iter3.hasNext()) {
String categoryCode = iter3.next();
params.put("categoryCodes", categoryCode);
}
this.addParameters(params);
this.setUserOnSession("admin");
result = this.executeAction();
assertEquals(Action.SUCCESS, result);
action = (ResourceAction) this.getAction();
assertEquals(2, action.getCategoryCodes().size());
assertTrue(action.getCategoryCodes().contains("resCat1"));
assertTrue(action.getCategoryCodes().contains("resCat2"));
}
public void testJoinCategoryWithInvalidCategory() throws Throwable {
String result = null;
try {
this.setUserOnSession("admin");
this.initAction("/do/jacms/Resource", "joinCategory");
result = this.executeAction();
assertEquals(Action.SUCCESS, result); // null category does a no-op
} catch (Throwable t) {
throw t;
}
}
/*
* NOTE: we create a fake resource using the manager rather than the most obvious 'save' action.
*
*/
public void testDelete() throws Throwable {
ResourceInterface resource = this._resourceManager.createResourceType("Image");
String resourceId = null;
String result = null;
ResourceAction action = null;
assertNotNull(resource);
try {
this.setUserOnSession("admin");
resource.setMainGroup(Group.FREE_GROUP_NAME);
resource.setDescr("Levò la bocca dal fero pasto quel peccator");
resource.setCategories(new ArrayList<Category>());
this._resourceManager.addResource(resource);
resourceId = resource.getId();
ResourceInterface verify = this._resourceManager.loadResource(resourceId);
assertNotNull(verify);
// test with invalid ID
this.initAction("/do/jacms/Resource", "delete");
result = this.executeAction();
assertEquals(Action.INPUT, result);
action = (ResourceAction) this.getAction();
assertEquals(1, action.getActionErrors().size());
// test with a valid ID
this.initAction("/do/jacms/Resource", "delete");
this.addParameter("resourceId", resourceId);
result = this.executeAction();
assertEquals(Action.SUCCESS, result);
verify = this._resourceManager.loadResource(resourceId);
assertNull(verify);
} catch (Throwable t) {
throw t;
} finally {
this._resourceManager.deleteResource(resource);
}
}
private void entryEditResource(String resourceId, String userName) throws Throwable {
this.setUserOnSession(userName);
this.initAction("/do/jacms/Resource", "edit");
this.addParameter("resourceId", resourceId);
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
}
private void init() throws Exception {
try {
_resourceManager = (IResourceManager) this.getService(JacmsSystemConstants.RESOURCE_MANAGER);
} catch (Throwable t) {
throw new Exception(t);
}
}
private IResourceManager _resourceManager = null;
}