=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java 2014-04-28 12:07:13 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java 2014-04-28 12:39:27 +0000 @@ -40,12 +40,12 @@ import java.util.Set; import org.hisp.dhis.DhisSpringTest; -import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.dataelement.CategoryOptionGroupSet; import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.mock.MockCurrentUserService; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; -import org.hisp.dhis.user.UserService; +import org.hisp.dhis.user.CurrentUserService; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -118,9 +118,6 @@ @Override public void setUpTest() throws Exception { - identifiableObjectManager = (IdentifiableObjectManager) getBean( IdentifiableObjectManager.ID ); - userService = (UserService) getBean( UserService.ID ); - // --------------------------------------------------------------------- // Add supporting data // --------------------------------------------------------------------- @@ -445,8 +442,9 @@ Set dataViewOrgUnits = new HashSet(); dataViewOrgUnits.add( organisationUnitB ); - createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false ); - + CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits ); + setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class ); + Map readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels(); assertEquals( 2, readApprovalLevels.size() ); @@ -480,8 +478,9 @@ Set dataViewOrgUnits = new HashSet(); dataViewOrgUnits.add( organisationUnitB ); - createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false, DataApproval.AUTH_APPROVE_LOWER_LEVELS ); - + CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits, DataApproval.AUTH_APPROVE_LOWER_LEVELS ); + setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class ); + Map readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels(); assertEquals( 2, readApprovalLevels.size() ); @@ -514,8 +513,9 @@ Set dataViewOrgUnits = new HashSet(); dataViewOrgUnits.add( organisationUnitB ); - createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false ); - + CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits ); + setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class ); + Map readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels(); assertEquals( 2, readApprovalLevels.size() ); @@ -553,8 +553,9 @@ Set dataViewOrgUnits = new HashSet(); dataViewOrgUnits.add( organisationUnitB ); - createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false ); - + CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits ); + setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class ); + Map readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels(); assertEquals( 3, readApprovalLevels.size() ); === modified file 'dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java' --- dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java 2014-04-25 10:57:34 +0000 +++ dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java 2014-04-28 12:39:27 +0000 @@ -28,6 +28,27 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.io.File; +import java.io.PrintWriter; +import java.io.StringReader; +import java.io.StringWriter; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import javax.xml.XMLConstants; +import javax.xml.namespace.NamespaceContext; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.aggregation.AggregatedDataValueService; @@ -114,24 +135,6 @@ import org.springframework.util.Assert; import org.xml.sax.InputSource; -import javax.xml.XMLConstants; -import javax.xml.namespace.NamespaceContext; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; -import java.io.File; -import java.io.StringReader; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - /** * @author Lars Helge Overland * @version $Id$ @@ -357,7 +360,7 @@ * @param targetService the target service. * @param fieldName the name of the dependency field in the target service. * @param dependency the dependency. - * @param clazz the class type of the dependency. + * @param clazz the interface type of the dependency. */ protected void setDependency( Object targetService, String fieldName, Object dependency, Class clazz ) { @@ -376,7 +379,7 @@ } catch ( Exception ex ) { - throw new RuntimeException( "Failed to set dependency '" + fieldName + "' on service", ex ); + throw new RuntimeException( "Failed to set dependency '" + fieldName + "' on service: " + getStackTrace( ex ), ex ); } } @@ -1466,11 +1469,7 @@ return null; } } - - // ------------------------------------------------------------------------- - // Allow xpath testing of DXF2 - // ------------------------------------------------------------------------- - + /** * Creates a user and injects into the security context with username * "username". Requires identifiableObjectManager and @@ -1480,7 +1479,7 @@ * @param auths authorities to grant to user. * @return the user. */ - public User createUserAndInjectSecurityContext( boolean allAuth, String... auths ) + protected User createUserAndInjectSecurityContext( boolean allAuth, String... auths ) { return createUserAndInjectSecurityContext( null, allAuth, auths ); } @@ -1495,7 +1494,7 @@ * @param auths authorities to grant to user. * @return the user. */ - public User createUserAndInjectSecurityContext( Set organisationUnits, boolean allAuth, String... auths ) + protected User createUserAndInjectSecurityContext( Set organisationUnits, boolean allAuth, String... auths ) { return createUserAndInjectSecurityContext( organisationUnits, null, allAuth, auths ); } @@ -1511,7 +1510,7 @@ * @param auths authorities to grant to user. * @return the user. */ - public User createUserAndInjectSecurityContext( Set organisationUnits, Set dataViewOrganisationUnits, boolean allAuth, String... auths ) + protected User createUserAndInjectSecurityContext( Set organisationUnits, Set dataViewOrganisationUnits, boolean allAuth, String... auths ) { Assert.notNull( identifiableObjectManager, "IdentifiableObjectManager must be injected in test" ); Assert.notNull( userService, "UserService must be injected in test" ); @@ -1561,4 +1560,15 @@ return user; } + + protected static String getStackTrace( Throwable t ) + { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter( sw, true ); + t.printStackTrace( pw ); + pw.flush(); + sw.flush(); + + return sw.toString(); + } } === modified file 'dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java' --- dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java 2014-03-18 08:10:10 +0000 +++ dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java 2014-04-28 12:39:27 +0000 @@ -28,8 +28,14 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.util.Arrays; +import java.util.Set; + +import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.user.CurrentUserService; import org.hisp.dhis.user.User; +import org.hisp.dhis.user.UserAuthorityGroup; +import org.hisp.dhis.user.UserCredentials; /** * @author Lars Helge Overland @@ -44,6 +50,24 @@ this.currentUser = currentUser; } + public MockCurrentUserService( Set organisationUnits, Set dataViewOrganisationUnits, String... auths ) + { + UserAuthorityGroup userRole = new UserAuthorityGroup(); + userRole.getAuthorities().addAll( Arrays.asList( auths ) ); + + UserCredentials credentials = new UserCredentials(); + credentials.setUsername( "currentUser" ); + credentials.getUserAuthorityGroups().add( userRole ); + + User user = new User(); + user.setOrganisationUnits( organisationUnits ); + user.setDataViewOrganisationUnits( dataViewOrganisationUnits ); + user.setUserCredentials( credentials ); + credentials.setUser( user ); + + this.currentUser = user; + } + @Override public String getCurrentUsername() {