dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #29722
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 15060: Data approval level service test, using MockCurrentUserService instead of createUserAndInjectSecu...
------------------------------------------------------------
revno: 15060
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2014-04-28 14:39:27 +0200
message:
Data approval level service test, using MockCurrentUserService instead of createUserAndInjectSecurityContext to avoid save and query of users in same transaction
modified:
dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataapproval/DataApprovalLevelServiceTest.java
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/mock/MockCurrentUserService.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== 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<OrganisationUnit> dataViewOrgUnits = new HashSet<OrganisationUnit>();
dataViewOrgUnits.add( organisationUnitB );
- createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false );
-
+ CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits );
+ setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class );
+
Map<OrganisationUnit, Integer> readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels();
assertEquals( 2, readApprovalLevels.size() );
@@ -480,8 +478,9 @@
Set<OrganisationUnit> dataViewOrgUnits = new HashSet<OrganisationUnit>();
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<OrganisationUnit, Integer> readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels();
assertEquals( 2, readApprovalLevels.size() );
@@ -514,8 +513,9 @@
Set<OrganisationUnit> dataViewOrgUnits = new HashSet<OrganisationUnit>();
dataViewOrgUnits.add( organisationUnitB );
- createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false );
-
+ CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits );
+ setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class );
+
Map<OrganisationUnit, Integer> readApprovalLevels = dataApprovalLevelService.getUserReadApprovalLevels();
assertEquals( 2, readApprovalLevels.size() );
@@ -553,8 +553,9 @@
Set<OrganisationUnit> dataViewOrgUnits = new HashSet<OrganisationUnit>();
dataViewOrgUnits.add( organisationUnitB );
- createUserAndInjectSecurityContext( assignedOrgUnits, dataViewOrgUnits, false );
-
+ CurrentUserService currentUserService = new MockCurrentUserService( assignedOrgUnits, dataViewOrgUnits );
+ setDependency( dataApprovalLevelService, "currentUserService", currentUserService, CurrentUserService.class );
+
Map<OrganisationUnit, Integer> 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 <code>identifiableObjectManager</code> 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<OrganisationUnit> organisationUnits, boolean allAuth, String... auths )
+ protected User createUserAndInjectSecurityContext( Set<OrganisationUnit> 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<OrganisationUnit> organisationUnits, Set<OrganisationUnit> dataViewOrganisationUnits, boolean allAuth, String... auths )
+ protected User createUserAndInjectSecurityContext( Set<OrganisationUnit> organisationUnits, Set<OrganisationUnit> 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<OrganisationUnit> organisationUnits, Set<OrganisationUnit> 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()
{