modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java | 48 +++++++ modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java | 66 ++++++++++ 2 files changed, 114 insertions(+)
New commits: commit 69de100614c9dcd0be575c6622775c6d20a6f7ec Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Thu Feb 28 09:27:08 2013 -0500
Add new test exercising criteriQuery change, ConfigurationManagerBean and increasing code coverage that was lacking.
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java index 7d0343b..700cfc5 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java @@ -21,6 +21,7 @@ package org.rhq.enterprise.server.configuration; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map;
@@ -41,6 +42,10 @@ import org.rhq.core.domain.configuration.ConfigurationUpdateStatus; import org.rhq.core.domain.configuration.PluginConfigurationUpdate; import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.configuration.ResourceConfigurationUpdate; +import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; +import org.rhq.core.domain.configuration.definition.PropertyDefinition; +import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple; +import org.rhq.core.domain.configuration.definition.PropertySimpleType; import org.rhq.core.domain.configuration.group.GroupPluginConfigurationUpdate; import org.rhq.core.domain.criteria.ResourceConfigurationUpdateCriteria; import org.rhq.core.domain.discovery.AvailabilityReport; @@ -735,6 +740,67 @@ public class ConfigurationManagerBeanTest extends AbstractEJB3Test { assert requests.size() == 1; // it will create one for us from the "live" configuration }
+ /** Exercise the ConfigurationManagerBean getOptionsForConfigurationDefinition. + * + * @throws Exception + */ + @Test(enabled = ENABLE_TESTS) + public void testResourceConfigurationDefinitionsOptions() throws Exception { + Resource resource = newResource1; + Subject overlord = LookupUtil.getSubjectManager().getOverlord(); + ConfigurationManagerLocal configurationManager = LookupUtil.getConfigurationManager(); + getTransactionManager().begin(); + + try { + // this is simulating what the UI would be doing, build the config and call the server-side API + // we'll pretend the user is the overlord - another test will check a real user to see permission errors + ResourceType newResource1Type = resource.getResourceType(); + ConfigurationDefinition initialDefinition = newResource1Type.getResourceConfigurationDefinition(); + int loadCount = 300; + HashSet<String> parsedNames = new HashSet<String>(); + for (int i = 0; i < loadCount; i++) { + String name = "fake property" + i; + initialDefinition + .put(new PropertyDefinitionSimple(name, "fake" + i, false, PropertySimpleType.BOOLEAN)); + parsedNames.add(name); + } + newResource1Type.setResourceConfigurationDefinition(initialDefinition); + em.merge(newResource1Type); + em.flush(); + + Configuration configuration = new Configuration(); + configuration.put(new PropertySimple("myboolean", "true")); + + ConfigurationDefinition configurationDefinition = newResource1.getResourceType() + .getResourceConfigurationDefinition(); + assert configurationDefinition != null : "Configuration Definition could not be located."; + //retrieve the options for ConfigurationDefinition + ConfigurationDefinition options = configurationManager.getOptionsForConfigurationDefinition(overlord, + newResource1.getId(), configurationDefinition); + assert options != null : "Unable able to retrieve options for resource with id [" + newResource1.getId() + + "]."; + assert !options.getPropertyDefinitions().entrySet().isEmpty() : "No PropertyDefinitionSimple instances found."; + + PropertyDefinitionSimple locatedPropertyDefSimple = null; + int locatedCount = 0; + for (Map.Entry<String, PropertyDefinition> entry : options.getPropertyDefinitions().entrySet()) { + PropertyDefinition pd = entry.getValue(); + if (pd instanceof PropertyDefinitionSimple) { + PropertyDefinitionSimple pds = (PropertyDefinitionSimple) pd; + locatedPropertyDefSimple = pds; + locatedCount++; + parsedNames.remove(pds.getName()); + } + } + assert locatedPropertyDefSimple != null : "PropertyDefinitionSimple was not located!"; + assert locatedCount >= loadCount : "All expected properties were not loaded. Found '" + locatedCount + "'."; + assert parsedNames.size() == 0 : "Not all loaded options were parsed."; + + } finally { + getTransactionManager().rollback(); + } + } + @Test(enabled = ENABLE_TESTS) public void testConfigurationRollback() throws Exception { Resource resource = newResource1;
commit 1cb2426bcd2aefdf458d8edcb1baaf07c7f8e198 Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Thu Feb 28 05:43:33 2013 -0500
Add new test for available subjects and increments test coverage for PersistenceUtility.
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java index 9fba041..fe7691d 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/auth/test/SubjectManagerBeanTest.java @@ -25,7 +25,10 @@ import java.util.List; import java.util.Set; import java.util.UUID;
+import javax.persistence.EntityManager; import javax.security.auth.login.LoginException; +import javax.transaction.NotSupportedException; +import javax.transaction.SystemException;
import org.testng.annotations.Test;
@@ -35,6 +38,7 @@ import org.rhq.core.domain.authz.Role; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.core.domain.criteria.SubjectCriteria; +import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.core.domain.util.PageOrdering; import org.rhq.enterprise.server.auth.SessionManager; @@ -45,6 +49,7 @@ import org.rhq.enterprise.server.authz.PermissionException; import org.rhq.enterprise.server.authz.RoleManagerLocal; import org.rhq.enterprise.server.test.AbstractEJB3Test; import org.rhq.enterprise.server.util.LookupUtil; +import org.rhq.enterprise.server.util.SessionTestHelper;
/** * Tests the subject manager. @@ -360,6 +365,49 @@ public class SubjectManagerBeanTest extends AbstractEJB3Test { getTransactionManager().commit(); }
+ /** + * Tests finding Subjects with Roles. + * @throws SystemException + * @throws NotSupportedException + */ + public void testFindSubjectsWithRoles() throws NotSupportedException, SystemException { + getTransactionManager().begin(); + EntityManager entityMgr = getEntityManager(); + SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); + RoleManagerLocal roleManager = LookupUtil.getRoleManager(); + Subject overlord = subjectManager.getOverlord(); + + try { + //create new subject + Subject subject = SessionTestHelper.createNewSubject(entityMgr, "testSubject"); + //create new role for subject + Role roleWithSubject = SessionTestHelper.createNewRoleForSubject(entityMgr, subject, "role with subject"); + roleWithSubject.addPermission(Permission.VIEW_RESOURCE); + Role newRole = new Role("role without subject"); + Role roleWithoutSubject = roleManager.createRole(overlord, newRole); + + //exercise findAvailableSubjectsForRole + Integer[] pendingSubjectIds = new Integer[0]; + PageList<Subject> subjects = subjectManager.findAvailableSubjectsForRole(subjectManager.getOverlord(), + roleWithoutSubject.getId(), pendingSubjectIds, PageControl.getUnlimitedInstance()); + assert subjects.size() > 0 : "Unable to locate subject(s) available for role with id '" + + roleWithSubject.getId() + "'.";//Should be at least one. + // boolean located = false; + Subject locatedSubject = null; + for (Subject s : subjects) { + if (s.getName().equals(subject.getName())) { + locatedSubject = s; + } + } + assert locatedSubject != null : "Unable to located subject with name '" + subject.getName() + "'."; + assert locatedSubject.getId() == subject.getId() : "Subject id does not match expected subject identifier '" + + subject.getId() + "'";//should match. + + } finally { + getTransactionManager().rollback(); + } + } + /** * Tests getting a super user subject. *
rhq-commits@lists.fedorahosted.org