/**
* Copyright (C) 2009 eXo Platform SAS.
*
* This 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 software 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.exoplatform.application.registry;
import java.util.ArrayList;
import java.util.List;
import org.exoplatform.application.AbstractApplicationRegistryTest;
import org.exoplatform.commons.chromattic.ChromatticManager;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.portal.config.model.ApplicationType;
import org.exoplatform.services.organization.Group;
import org.exoplatform.services.organization.MembershipType;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.User;
/**
* Created by The eXo Platform SARL Author : Tung Pham thanhtungty@gmail.com Nov 27, 2007
*/
public class TestApplicationRegistryService extends AbstractApplicationRegistryTest {
protected static String demo = "demo";
protected static String Group1 = "Group1";
protected static String Group2 = "Group2";
protected static String username1 = "userName_1";
protected static String username2 = "userName_2";
protected static String memtype1 = "MembershipType_1";
protected static String memtype2 = "MembershipType_2";
protected Group group1, group2, groupDefault;
protected MembershipType mType1, mType2, mTypeDefault;
protected User user1, user2, userDefault;
protected ApplicationRegistryService service_;
protected OrganizationService orgService;
protected ChromatticManager chromatticManager;
@Override
protected void setUp() throws Exception {
PortalContainer portalContainer = PortalContainer.getInstance();
chromatticManager = (ChromatticManager) portalContainer.getComponentInstanceOfType(ChromatticManager.class);
service_ = (ApplicationRegistryService) portalContainer.getComponentInstanceOfType(ApplicationRegistryService.class);
orgService = (OrganizationService) portalContainer.getComponentInstanceOfType(OrganizationService.class);
begin();
}
@Override
protected void tearDown() throws Exception {
chromatticManager.getSynchronization().setSaveOnClose(false);
end();
}
public void testApplicationCategory() throws Exception {
// Add new ApplicationRegistry
String categoryName = "Category1";
String categoryDes = "Description for category 1";
ApplicationCategory category1 = createAppCategory(categoryName, categoryDes);
service_.save(category1);
int numberOfCats = service_.getApplicationCategories().size();
assertEquals(1, numberOfCats);
ApplicationCategory returnedCategory1 = service_.getApplicationCategory(categoryName);
assertNotNull(returnedCategory1);
assertEquals(category1.getName(), returnedCategory1.getName());
assertEquals(categoryName, returnedCategory1.getName());
// Update the ApplicationRegistry
String newDescription = "New description for category 1";
category1.setDescription(newDescription);
service_.save(category1);
numberOfCats = service_.getApplicationCategories().size();
assertEquals(1, numberOfCats);
returnedCategory1 = service_.getApplicationCategory(categoryName);
assertEquals(newDescription, returnedCategory1.getDescription());
// Remove the ApplicationRegistry
service_.remove(category1);
numberOfCats = service_.getApplicationCategories().size();
assertEquals(0, numberOfCats);
returnedCategory1 = service_.getApplicationCategory(categoryName);
assertNull(returnedCategory1);
}
public void testAppCategoryGetByAccessUser() throws Exception {
String officeCategoryName = "Office";
ApplicationCategory officeCategory = createAppCategory(officeCategoryName, "None");
service_.save(officeCategory);
String[] officeApps = { "MSOffice", "OpenOffice" };
Application msApp = createApplication(officeApps[0], officeCategoryName);
ArrayList<String> pers = new ArrayList<String>();
pers.add("member:/users");
msApp.setAccessPermissions(pers);
service_.save(officeCategory, msApp);
Application openApp = createApplication(officeApps[1], officeCategoryName);
service_.save(officeCategory, openApp);
String gameCategoryName = "Game";
ApplicationCategory gameCategory = createAppCategory(gameCategoryName, "None");
service_.save(gameCategory);
String[] gameApps = { "HaftLife", "Chess" };
Application haftlifeApp = createApplication(gameApps[0], gameCategoryName);
pers = new ArrayList<String>();
pers.add("member:/portal/admin");
haftlifeApp.setAccessPermissions(pers);
service_.save(gameCategory, haftlifeApp);
Application chessApp = createApplication(gameApps[1], gameCategoryName);
chessApp.setAccessPermissions(pers);
service_.save(gameCategory, chessApp);
List<ApplicationCategory> returnCategories = service_.getApplicationCategories(username1);
assertEquals(2, returnCategories.size());
assertEquals(2, returnCategories.get(0).getApplications().size());
assertEquals(2, returnCategories.get(1).getApplications().size());
}
private ApplicationCategory createAppCategory(String categoryName, String categoryDes) {
ApplicationCategory category = new ApplicationCategory();
category.setName(categoryName);
category.setDisplayName(categoryName);
category.setDescription(categoryDes);
return category;
}
private Application createApplication(String appName, String appGroup) {
Application app = new Application();
app.setContentId(appName);
app.setApplicationName(appName);
app.setDisplayName(appName);
app.setType(ApplicationType.PORTLET);
return app;
}
}