You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2012/03/01 16:09:24 UTC

svn commit: r1295610 [2/2] - in /incubator/syncope/trunk/core/src: main/java/org/syncope/core/persistence/beans/ main/java/org/syncope/core/persistence/beans/user/ main/java/org/syncope/core/persistence/dao/impl/ main/java/org/syncope/core/propagation/...

Modified: incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/UserTestITCase.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/UserTestITCase.java?rev=1295610&r1=1295609&r2=1295610&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/UserTestITCase.java (original)
+++ incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/UserTestITCase.java Thu Mar  1 15:09:24 2012
@@ -199,10 +199,9 @@ public class UserTestITCase extends Abst
     @Test
     /*
      * This test has been introduced to verify and solve the following issue:
-     * http://code.google.com/p/syncope/issues/detail?id=172. Creations of a new
-     * user without having a global password policy stored into the local
-     * repository used to fail with a null pointer exception. This bug has been
-     * fixed introducing a simple control.
+     * http://code.google.com/p/syncope/issues/detail?id=172. Creations of a new user without having a global password
+     * policy stored into the local repository used to fail with a null pointer exception. This bug has been fixed
+     * introducing a simple control.
      */
     public void issue172() {
         PolicyTO policyTO = restTemplate.getForObject(
@@ -268,8 +267,7 @@ public class UserTestITCase extends Abst
         attributeTO.addValue("issue186");
         userTO.addAttribute(attributeTO);
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
         assertTrue(userTO.getResources().isEmpty());
 
@@ -315,8 +313,7 @@ public class UserTestITCase extends Abst
 
         sce = null;
         try {
-            userTO = restTemplate.postForObject(
-                    BASE_URL + "user/update", userMod, UserTO.class);
+            userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
         } catch (SyncopeClientCompositeErrorException scce) {
             sce = scce.getException(SyncopeClientExceptionType.Propagation);
         }
@@ -328,8 +325,7 @@ public class UserTestITCase extends Abst
         // 1. create an user wihtout role nor resources
         UserTO userTO = getSampleTO("issue147@syncope-idm.org");
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
         assertTrue(userTO.getResources().isEmpty());
 
@@ -340,8 +336,7 @@ public class UserTestITCase extends Abst
 
         SyncopeClientException sce = null;
         try {
-            userTO = restTemplate.postForObject(
-                    BASE_URL + "user/update", userMod, UserTO.class);
+            userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
         } catch (SyncopeClientCompositeErrorException scce) {
             sce = scce.getException(
                     SyncopeClientExceptionType.RequiredValuesMissing);
@@ -350,8 +345,7 @@ public class UserTestITCase extends Abst
 
         // 3. provide password: now update must work
         userMod.setPassword("newPassword");
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
         assertNotNull(userTO);
         assertEquals(1, userTO.getResources().size());
     }
@@ -384,12 +378,10 @@ public class UserTestITCase extends Abst
 
         userTO.addResource("resource-testdb");
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
         assertEquals(1, userTO.getPropagationTOs().size());
-        assertTrue(
-                userTO.getPropagationTOs().get(0).getStatus().isSuccessful());
+        assertTrue(userTO.getPropagationTOs().get(0).getStatus().isSuccessful());
     }
 
     @Test(expected = SyncopeClientCompositeErrorException.class)
@@ -397,8 +389,7 @@ public class UserTestITCase extends Abst
         UserTO userTO = getSampleTO("invalidpasswd@syncope-idm.org");
         userTO.setPassword("pass");
 
-        restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
     }
 
     @Test(expected = SyncopeClientCompositeErrorException.class)
@@ -411,8 +402,7 @@ public class UserTestITCase extends Abst
 
         userTO.addMembership(membershipTO);
 
-        restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
     }
 
     @Test(expected = SyncopeClientCompositeErrorException.class)
@@ -422,11 +412,9 @@ public class UserTestITCase extends Abst
         // configured to be minLength=16
         userTO.setPassword("password1");
 
-        userTO.setResources(
-                Collections.singleton("ws-target-resource-nopropagation"));
+        userTO.setResources(Collections.singleton("ws-target-resource-nopropagation"));
 
-        restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
     }
 
     @Test(expected = SyncopeClientCompositeErrorException.class)
@@ -441,8 +429,7 @@ public class UserTestITCase extends Abst
 
         userTO.addMembership(membership);
 
-        restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
     }
 
     @Test(expected = SyncopeClientCompositeErrorException.class)
@@ -454,16 +441,14 @@ public class UserTestITCase extends Abst
         UserTO newUserTO = new UserTO();
         newUserTO.addAttribute(attributeTO);
 
-        restTemplate.postForObject(BASE_URL + "user/create",
-                newUserTO, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/create", newUserTO, UserTO.class);
     }
 
     @Test
     public void create() {
         // get task list
         List<PropagationTaskTO> tasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+                restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
 
         assertNotNull(tasks);
         assertFalse(tasks.isEmpty());
@@ -475,9 +460,9 @@ public class UserTestITCase extends Abst
                 maxId = task.getId();
             }
         }
-        PropagationTaskTO taskTO = restTemplate.getForObject(
-                BASE_URL + "task/read/{taskId}", PropagationTaskTO.class,
-                maxId);
+        PropagationTaskTO taskTO =
+                restTemplate.getForObject(BASE_URL + "task/read/{taskId}", PropagationTaskTO.class, maxId);
+
         assertNotNull(taskTO);
         int maxTaskExecutions = taskTO.getExecutions().size();
 
@@ -507,35 +492,25 @@ public class UserTestITCase extends Abst
         userTO.addAttribute(nullValueAttrTO);
 
         // 1. create user
-        UserTO newUserTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        UserTO newUserTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertNotNull(newUserTO);
-        assertFalse(newUserTO.getAttributes().contains(
-                attrWithInvalidSchemaTO));
+        assertFalse(newUserTO.getAttributes().contains(attrWithInvalidSchemaTO));
 
         // check for changePwdDate
         assertNotNull(newUserTO.getCreationDate());
 
         // 2. check for virtual attribute value
-        newUserTO = restTemplate.getForObject(
-                BASE_URL + "user/read/{userId}.json",
-                UserTO.class, newUserTO.getId());
+        newUserTO = restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, newUserTO.getId());
         assertNotNull(newUserTO);
 
         assertNotNull(newUserTO.getVirtualAttributeMap());
-        assertNotNull(newUserTO.getVirtualAttributeMap().get("virtualdata").
-                getValues());
-        assertFalse(newUserTO.getVirtualAttributeMap().get("virtualdata").
-                getValues().isEmpty());
-        assertEquals("virtualvalue",
-                newUserTO.getVirtualAttributeMap().get("virtualdata").
-                getValues().get(0));
+        assertNotNull(newUserTO.getVirtualAttributeMap().get("virtualdata").getValues());
+        assertFalse(newUserTO.getVirtualAttributeMap().get("virtualdata").getValues().isEmpty());
+        assertEquals("virtualvalue", newUserTO.getVirtualAttributeMap().get("virtualdata").getValues().get(0));
 
         // get the new task list
-        tasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+        tasks = Arrays.asList(restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
 
         assertNotNull(tasks);
         assertFalse(tasks.isEmpty());
@@ -554,21 +529,18 @@ public class UserTestITCase extends Abst
         assertEquals(newMaxId, maxId);
 
         // get last task
-        taskTO = restTemplate.getForObject(
-                BASE_URL + "task/read/{taskId}", PropagationTaskTO.class,
-                newMaxId);
+        taskTO = restTemplate.getForObject(BASE_URL + "task/read/{taskId}", PropagationTaskTO.class, newMaxId);
 
         assertNotNull(taskTO);
         assertEquals(maxTaskExecutions, taskTO.getExecutions().size());
 
         // 3. verify password
         Boolean verify = restTemplate.getForObject(
-                BASE_URL + "user/verifyPassword/{userId}?password=password123",
-                Boolean.class, newUserTO.getId());
+                BASE_URL + "user/verifyPassword/{userId}?password=password123", Boolean.class, newUserTO.getId());
         assertTrue(verify);
+
         verify = restTemplate.getForObject(
-                BASE_URL + "user/verifyPassword/{userId}?password=passwordXX",
-                Boolean.class, newUserTO.getId());
+                BASE_URL + "user/verifyPassword/{userId}?password=passwordXX", Boolean.class, newUserTO.getId());
         assertFalse(verify);
 
         // 4. try (and fail) to create another user with same (unique) values
@@ -582,11 +554,9 @@ public class UserTestITCase extends Abst
 
         SyncopeClientException sce = null;
         try {
-            restTemplate.postForObject(BASE_URL + "user/create",
-                    userTO, UserTO.class);
+            restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         } catch (SyncopeClientCompositeErrorException e) {
-            sce = e.getException(
-                    SyncopeClientExceptionType.DataIntegrityViolation);
+            sce = e.getException(SyncopeClientExceptionType.DataIntegrityViolation);
         }
         assertNotNull(sce);
     }
@@ -612,14 +582,12 @@ public class UserTestITCase extends Abst
         SyncopeClientCompositeErrorException ex = null;
         try {
             // 1. create user without type (mandatory by UserSchema)
-            restTemplate.postForObject(BASE_URL + "user/create",
-                    userTO, UserTO.class);
+            restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         } catch (SyncopeClientCompositeErrorException e) {
             ex = e;
         }
         assertNotNull(ex);
-        assertNotNull(ex.getException(
-                SyncopeClientExceptionType.RequiredValuesMissing));
+        assertNotNull(ex.getException(SyncopeClientExceptionType.RequiredValuesMissing));
 
         AttributeTO fType = new AttributeTO();
         fType.setSchema("type");
@@ -637,14 +605,12 @@ public class UserTestITCase extends Abst
         // 2. create user without surname (mandatory when type == 'F')
         ex = null;
         try {
-            restTemplate.postForObject(BASE_URL + "user/create",
-                    userTO, UserTO.class);
+            restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         } catch (SyncopeClientCompositeErrorException e) {
             ex = e;
         }
         assertNotNull(ex);
-        assertNotNull(ex.getException(
-                SyncopeClientExceptionType.RequiredValuesMissing));
+        assertNotNull(ex.getException(SyncopeClientExceptionType.RequiredValuesMissing));
     }
 
     @Test
@@ -657,8 +623,7 @@ public class UserTestITCase extends Abst
         userTO.addMembership(membershipTO);
 
         // 1. create user with role 9
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
         assertEquals(1, userTO.getMemberships().size());
         assertEquals(9, userTO.getMemberships().get(0).getRoleId());
@@ -666,8 +631,7 @@ public class UserTestITCase extends Abst
 
         // 2. request if there is any pending task for user just created
         WorkflowFormTO form = restTemplate.getForObject(
-                BASE_URL + "user/workflow/form/{userId}",
-                WorkflowFormTO.class, userTO.getId());
+                BASE_URL + "user/workflow/form/{userId}", WorkflowFormTO.class, userTO.getId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNull(form.getOwner());
@@ -675,32 +639,25 @@ public class UserTestITCase extends Abst
         // 3. claim task from user1, not in role 7 (designated for 
         // approval in workflow definition): fail
         PreemptiveAuthHttpRequestFactory requestFactory =
-                ((PreemptiveAuthHttpRequestFactory) restTemplate.
-                getRequestFactory());
-        ((DefaultHttpClient) requestFactory.getHttpClient()).
-                getCredentialsProvider().setCredentials(
-                requestFactory.getAuthScope(),
-                new UsernamePasswordCredentials("user1", "password"));
+                ((PreemptiveAuthHttpRequestFactory) restTemplate.getRequestFactory());
+        ((DefaultHttpClient) requestFactory.getHttpClient()).getCredentialsProvider().setCredentials(
+                requestFactory.getAuthScope(), new UsernamePasswordCredentials("user1", "password"));
 
         SyncopeClientException sce = null;
         try {
             restTemplate.getForObject(
-                    BASE_URL + "user/workflow/form/claim/{taskId}",
-                    WorkflowFormTO.class, form.getTaskId());
+                    BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form.getTaskId());
         } catch (SyncopeClientCompositeErrorException scce) {
             sce = scce.getException(SyncopeClientExceptionType.Workflow);
         }
         assertNotNull(sce);
 
         // 4. claim task from user4, in to role 7
-        ((DefaultHttpClient) requestFactory.getHttpClient()).
-                getCredentialsProvider().setCredentials(
-                requestFactory.getAuthScope(),
-                new UsernamePasswordCredentials("user4", "password"));
+        ((DefaultHttpClient) requestFactory.getHttpClient()).getCredentialsProvider().setCredentials(
+                requestFactory.getAuthScope(), new UsernamePasswordCredentials("user4", "password"));
 
         form = restTemplate.getForObject(
-                BASE_URL + "user/workflow/form/claim/{taskId}",
-                WorkflowFormTO.class, form.getTaskId());
+                BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form.getTaskId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNotNull(form.getOwner());
@@ -710,9 +667,7 @@ public class UserTestITCase extends Abst
         props.get("approve").setValue(Boolean.FALSE.toString());
         props.get("rejectReason").setValue("I don't like him.");
         form.setProperties(props.values());
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/workflow/form/submit",
-                form, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/workflow/form/submit", form, UserTO.class);
         assertNotNull(userTO);
         assertEquals("rejected", userTO.getStatus());
 
@@ -733,21 +688,18 @@ public class UserTestITCase extends Abst
         userTO.addMembership(membershipTO);
 
         // 1. create user with role 9 (and verify that no propagation occurred)
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
         assertEquals(1, userTO.getMemberships().size());
         assertEquals(9, userTO.getMemberships().get(0).getRoleId());
         assertEquals("createApproval", userTO.getStatus());
-        assertEquals(Collections.singleton("resource-testdb"),
-                userTO.getResources());
+        assertEquals(Collections.singleton("resource-testdb"), userTO.getResources());
 
         assertTrue(userTO.getPropagationTOs().isEmpty());
 
         Exception exception = null;
         try {
-            jdbcTemplate.queryForInt(
-                    "SELECT id FROM test WHERE id=?", userTO.getUsername());
+            jdbcTemplate.queryForInt("SELECT id FROM test WHERE id=?", userTO.getUsername());
         } catch (EmptyResultDataAccessException e) {
             exception = e;
         }
@@ -755,16 +707,14 @@ public class UserTestITCase extends Abst
 
         // 2. request if there is any pending task for user just created
         WorkflowFormTO form = restTemplate.getForObject(
-                BASE_URL + "user/workflow/form/{userId}",
-                WorkflowFormTO.class, userTO.getId());
+                BASE_URL + "user/workflow/form/{userId}", WorkflowFormTO.class, userTO.getId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNull(form.getOwner());
 
         // 4. claim task (from admin)
         form = restTemplate.getForObject(
-                BASE_URL + "user/workflow/form/claim/{taskId}",
-                WorkflowFormTO.class, form.getTaskId());
+                BASE_URL + "user/workflow/form/claim/{taskId}", WorkflowFormTO.class, form.getTaskId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNotNull(form.getOwner());
@@ -773,19 +723,15 @@ public class UserTestITCase extends Abst
         Map<String, WorkflowFormPropertyTO> props = form.getPropertiesAsMap();
         props.get("approve").setValue(Boolean.TRUE.toString());
         form.setProperties(props.values());
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/workflow/form/submit", form, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/workflow/form/submit", form, UserTO.class);
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
-        assertEquals(Collections.singleton("resource-testdb"),
-                userTO.getResources());
+        assertEquals(Collections.singleton("resource-testdb"), userTO.getResources());
 
         exception = null;
         try {
-            String username = jdbcTemplate.queryForObject(
-                    "SELECT id FROM test WHERE id=?",
-                    String.class,
-                    userTO.getUsername());
+            final String username =
+                    jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
             assertEquals(userTO.getUsername(), username);
         } catch (EmptyResultDataAccessException e) {
             exception = e;
@@ -797,16 +743,14 @@ public class UserTestITCase extends Abst
         userMod.setId(userTO.getId());
         userMod.setPassword("anotherPassword123");
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/update",
-                userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
         assertNotNull(userTO);
     }
 
     @Test
     public void delete() {
         try {
-            restTemplate.getForObject(
-                    BASE_URL + "user/delete/{userId}", UserTO.class, 0);
+            restTemplate.getForObject(BASE_URL + "user/delete/{userId}", UserTO.class, 0);
         } catch (HttpStatusCodeException e) {
             assertEquals(HttpStatus.NOT_FOUND, e.getStatusCode());
         }
@@ -816,13 +760,11 @@ public class UserTestITCase extends Abst
         // specify a propagation
         userTO.addResource("resource-testdb");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         long id = userTO.getId();
 
-        userTO = restTemplate.getForObject(
-                BASE_URL + "user/delete/{userId}", UserTO.class, id);
+        userTO = restTemplate.getForObject(BASE_URL + "user/delete/{userId}", UserTO.class, id);
 
         assertNotNull(userTO);
         assertEquals(id, userTO.getId());
@@ -830,12 +772,10 @@ public class UserTestITCase extends Abst
 
         // check for propagation result
         assertFalse(userTO.getPropagationTOs().isEmpty());
-        assertTrue(
-                userTO.getPropagationTOs().get(0).getStatus().isSuccessful());
+        assertTrue(userTO.getPropagationTOs().get(0).getStatus().isSuccessful());
 
         try {
-            restTemplate.getForObject(BASE_URL + "user/read/{userId}.json",
-                    UserTO.class, userTO.getId());
+            restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, userTO.getId());
         } catch (HttpStatusCodeException e) {
             assertEquals(HttpStatus.NOT_FOUND, e.getStatusCode());
         }
@@ -843,8 +783,7 @@ public class UserTestITCase extends Abst
 
     @Test
     public void count() {
-        Integer count = restTemplate.getForObject(
-                BASE_URL + "user/count.json", Integer.class);
+        Integer count = restTemplate.getForObject(BASE_URL + "user/count.json", Integer.class);
         assertNotNull(count);
         assertTrue(count > 0);
     }
@@ -855,17 +794,14 @@ public class UserTestITCase extends Abst
         isNullCond.setSchema("loginDate");
         NodeCond searchCond = NodeCond.getLeafCond(isNullCond);
 
-        Integer count = restTemplate.postForObject(
-                BASE_URL + "user/search/count.json", searchCond, Integer.class);
+        Integer count = restTemplate.postForObject(BASE_URL + "user/search/count.json", searchCond, Integer.class);
         assertNotNull(count);
         assertTrue(count > 0);
     }
 
     @Test
     public void list() {
-        List<UserTO> users = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "user/list.json", UserTO[].class));
+        List<UserTO> users = Arrays.asList(restTemplate.getForObject(BASE_URL + "user/list.json", UserTO[].class));
         assertNotNull(users);
         assertFalse(users.isEmpty());
         for (UserTO user : users) {
@@ -875,9 +811,8 @@ public class UserTestITCase extends Abst
 
     @Test
     public void paginatedList() {
-        List<UserTO> users = Arrays.asList(restTemplate.getForObject(
-                BASE_URL + "user/list/{page}/{size}.json",
-                UserTO[].class, 1, 2));
+        List<UserTO> users = Arrays.asList(
+                restTemplate.getForObject(BASE_URL + "user/list/{page}/{size}.json", UserTO[].class, 1, 2));
 
         assertNotNull(users);
         assertFalse(users.isEmpty());
@@ -887,17 +822,15 @@ public class UserTestITCase extends Abst
             assertNotNull(user);
         }
 
-        users = Arrays.asList(restTemplate.getForObject(
-                BASE_URL + "user/list/{page}/{size}.json",
-                UserTO[].class, 2, 2));
+        users = Arrays.asList(
+                restTemplate.getForObject(BASE_URL + "user/list/{page}/{size}.json", UserTO[].class, 2, 2));
 
         assertNotNull(users);
         assertFalse(users.isEmpty());
         assertEquals(2, users.size());
 
-        users = Arrays.asList(restTemplate.getForObject(
-                BASE_URL + "user/list/{page}/{size}.json",
-                UserTO[].class, 100, 2));
+        users = Arrays.asList(
+                restTemplate.getForObject(BASE_URL + "user/list/{page}/{size}.json", UserTO[].class, 100, 2));
 
         assertNotNull(users);
         assertTrue(users.isEmpty());
@@ -905,8 +838,7 @@ public class UserTestITCase extends Abst
 
     @Test
     public void read() {
-        UserTO userTO = restTemplate.getForObject(
-                BASE_URL + "user/read/{userId}.json", UserTO.class, 1);
+        UserTO userTO = restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, 1);
 
         assertNotNull(userTO);
         assertNotNull(userTO.getAttributes());
@@ -916,26 +848,21 @@ public class UserTestITCase extends Abst
     @Test
     public void search() {
         // LIKE
-        AttributeCond fullnameLeafCond1 =
-                new AttributeCond(AttributeCond.Type.LIKE);
+        AttributeCond fullnameLeafCond1 = new AttributeCond(AttributeCond.Type.LIKE);
         fullnameLeafCond1.setSchema("fullname");
         fullnameLeafCond1.setExpression("%o%");
 
-        AttributeCond fullnameLeafCond2 =
-                new AttributeCond(AttributeCond.Type.LIKE);
+        AttributeCond fullnameLeafCond2 = new AttributeCond(AttributeCond.Type.LIKE);
         fullnameLeafCond2.setSchema("fullname");
         fullnameLeafCond2.setExpression("%i%");
 
-        NodeCond searchCondition = NodeCond.getAndCond(
-                NodeCond.getLeafCond(fullnameLeafCond1),
-                NodeCond.getLeafCond(fullnameLeafCond2));
+        NodeCond searchCondition =
+                NodeCond.getAndCond(NodeCond.getLeafCond(fullnameLeafCond1), NodeCond.getLeafCond(fullnameLeafCond2));
 
         assertTrue(searchCondition.checkValidity());
 
         List<UserTO> matchedUsers = Arrays.asList(
-                restTemplate.postForObject(
-                BASE_URL + "user/search",
-                searchCondition, UserTO[].class));
+                restTemplate.postForObject(BASE_URL + "user/search", searchCondition, UserTO[].class));
         assertNotNull(matchedUsers);
         assertFalse(matchedUsers.isEmpty());
         for (UserTO user : matchedUsers) {
@@ -948,10 +875,10 @@ public class UserTestITCase extends Abst
         searchCondition = NodeCond.getLeafCond(isNullCond);
 
         matchedUsers = Arrays.asList(
-                restTemplate.postForObject(BASE_URL + "user/search",
-                searchCondition, UserTO[].class));
+                restTemplate.postForObject(BASE_URL + "user/search", searchCondition, UserTO[].class));
         assertNotNull(matchedUsers);
         assertFalse(matchedUsers.isEmpty());
+
         Set<Long> userIds = new HashSet<Long>(matchedUsers.size());
         for (UserTO user : matchedUsers) {
             userIds.add(user.getId());
@@ -962,26 +889,21 @@ public class UserTestITCase extends Abst
 
     @Test
     public void searchByUsernameAndId() {
-        final SyncopeUserCond usernameLeafCond =
-                new SyncopeUserCond(SyncopeUserCond.Type.EQ);
+        final SyncopeUserCond usernameLeafCond = new SyncopeUserCond(SyncopeUserCond.Type.EQ);
         usernameLeafCond.setSchema("username");
         usernameLeafCond.setExpression("user1");
 
-        final SyncopeUserCond idRightCond =
-                new SyncopeUserCond(SyncopeUserCond.Type.LT);
+        final SyncopeUserCond idRightCond = new SyncopeUserCond(SyncopeUserCond.Type.LT);
         idRightCond.setSchema("id");
         idRightCond.setExpression("2");
 
         final NodeCond searchCondition = NodeCond.getAndCond(
-                NodeCond.getLeafCond(usernameLeafCond),
-                NodeCond.getLeafCond(idRightCond));
+                NodeCond.getLeafCond(usernameLeafCond), NodeCond.getLeafCond(idRightCond));
 
         assertTrue(searchCondition.checkValidity());
 
         final List<UserTO> matchingUsers = Arrays.asList(
-                restTemplate.postForObject(
-                BASE_URL + "user/search",
-                searchCondition, UserTO[].class));
+                restTemplate.postForObject(BASE_URL + "user/search", searchCondition, UserTO[].class));
 
         assertNotNull(matchingUsers);
         assertEquals(1, matchingUsers.size());
@@ -997,16 +919,12 @@ public class UserTestITCase extends Abst
         ResourceCond ws1 = new ResourceCond();
         ws1.setResourceName("ws-target-resource-list-mappings-2");
 
-        NodeCond searchCondition = NodeCond.getAndCond(
-                NodeCond.getNotLeafCond(ws2),
-                NodeCond.getLeafCond(ws1));
+        NodeCond searchCondition = NodeCond.getAndCond(NodeCond.getNotLeafCond(ws2), NodeCond.getLeafCond(ws1));
 
         assertTrue(searchCondition.checkValidity());
 
         List<UserTO> matchedUsers = Arrays.asList(
-                restTemplate.postForObject(
-                BASE_URL + "user/search",
-                searchCondition, UserTO[].class));
+                restTemplate.postForObject(BASE_URL + "user/search", searchCondition, UserTO[].class));
         assertNotNull(matchedUsers);
         assertFalse(matchedUsers.isEmpty());
 
@@ -1022,25 +940,21 @@ public class UserTestITCase extends Abst
     @Test
     public void paginatedSearch() {
         // LIKE
-        AttributeCond fullnameLeafCond1 =
-                new AttributeCond(AttributeCond.Type.LIKE);
+        AttributeCond fullnameLeafCond1 = new AttributeCond(AttributeCond.Type.LIKE);
         fullnameLeafCond1.setSchema("fullname");
         fullnameLeafCond1.setExpression("%o%");
 
-        AttributeCond fullnameLeafCond2 =
-                new AttributeCond(AttributeCond.Type.LIKE);
+        AttributeCond fullnameLeafCond2 = new AttributeCond(AttributeCond.Type.LIKE);
         fullnameLeafCond2.setSchema("fullname");
         fullnameLeafCond2.setExpression("%i%");
 
-        NodeCond searchCondition = NodeCond.getAndCond(
-                NodeCond.getLeafCond(fullnameLeafCond1),
-                NodeCond.getLeafCond(fullnameLeafCond2));
+        NodeCond searchCondition =
+                NodeCond.getAndCond(NodeCond.getLeafCond(fullnameLeafCond1), NodeCond.getLeafCond(fullnameLeafCond2));
 
         assertTrue(searchCondition.checkValidity());
 
         List<UserTO> matchedUsers = Arrays.asList(restTemplate.postForObject(
-                BASE_URL + "user/search/{page}/{size}",
-                searchCondition, UserTO[].class, 1, 2));
+                BASE_URL + "user/search/{page}/{size}", searchCondition, UserTO[].class, 1, 2));
         assertNotNull(matchedUsers);
 
         assertFalse(matchedUsers.isEmpty());
@@ -1054,8 +968,7 @@ public class UserTestITCase extends Abst
         searchCondition = NodeCond.getLeafCond(isNullCond);
 
         matchedUsers = Arrays.asList(restTemplate.postForObject(
-                BASE_URL + "user/search/{page}/{size}",
-                searchCondition, UserTO[].class, 1, 2));
+                BASE_URL + "user/search/{page}/{size}", searchCondition, UserTO[].class, 1, 2));
 
         assertNotNull(matchedUsers);
         assertFalse(matchedUsers.isEmpty());
@@ -1070,8 +983,7 @@ public class UserTestITCase extends Abst
     public void updateWithouPassword() {
         UserTO userTO = getSampleTO("updatewithout@password.com");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertNotNull(userTO);
 
@@ -1079,8 +991,7 @@ public class UserTestITCase extends Abst
         userMod.setId(userTO.getId());
         userMod.addDerivedAttributeToBeRemoved("cn");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
 
         assertNotNull(userTO);
         assertNotNull(userTO.getDerivedAttributeMap());
@@ -1091,32 +1002,28 @@ public class UserTestITCase extends Abst
     public void updateInvalidPassword() {
         UserTO userTO = getSampleTO("updateinvalid@password.com");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         UserMod userMod = new UserMod();
         userMod.setId(userTO.getId());
         userMod.setPassword("pass");
 
-        restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
     }
 
     @Test(expected = SyncopeClientCompositeErrorException.class)
     public void updateSamePassword() {
         UserTO userTO = getSampleTO("updatesame@password.com");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         UserMod userMod = new UserMod();
         userMod.setId(userTO.getId());
         userMod.setPassword("password123");
 
-        restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
     }
 
     @Test
@@ -1131,8 +1038,7 @@ public class UserTestITCase extends Abst
         membershipTO.addAttribute(membershipAttr);
         userTO.addMembership(membershipTO);
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertFalse(userTO.getDerivedAttributes().isEmpty());
         assertEquals(1, userTO.getMemberships().size());
@@ -1163,11 +1069,9 @@ public class UserTestITCase extends Abst
 
         userMod.addDerivedAttributeToBeAdded("cn");
         userMod.addMembershipToBeAdded(membershipMod);
-        userMod.addMembershipToBeRemoved(
-                userTO.getMemberships().iterator().next().getId());
+        userMod.addMembershipToBeRemoved(userTO.getMemberships().iterator().next().getId());
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/update",
-                userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
         assertNotNull(userTO);
 
         SyncopeUser passwordTestUser = new SyncopeUser();
@@ -1175,23 +1079,20 @@ public class UserTestITCase extends Abst
         assertEquals(passwordTestUser.getPassword(), userTO.getPassword());
 
         assertEquals(1, userTO.getMemberships().size());
-        assertEquals(1, userTO.getMemberships().iterator().next().
-                getAttributes().size());
+        assertEquals(1, userTO.getMemberships().iterator().next().getAttributes().size());
         assertFalse(userTO.getDerivedAttributes().isEmpty());
+
         boolean userIdFound = false;
         boolean fullnameFound = false;
+
         for (AttributeTO attributeTO : userTO.getAttributes()) {
             if ("userId".equals(attributeTO.getSchema())) {
                 userIdFound = true;
-
-                assertEquals(Collections.singletonList("t.w@spre.net"),
-                        attributeTO.getValues());
+                assertEquals(Collections.singletonList("t.w@spre.net"), attributeTO.getValues());
             }
             if ("fullname".equals(attributeTO.getSchema())) {
                 fullnameFound = true;
-
-                assertEquals(Collections.singletonList("g.h@t.com"),
-                        attributeTO.getValues());
+                assertEquals(Collections.singletonList("g.h@t.com"), attributeTO.getValues());
             }
         }
         assertTrue(userIdFound);
@@ -1201,8 +1102,7 @@ public class UserTestITCase extends Abst
     @Test
     public void updatePasswordOnly() {
         List<PropagationTaskTO> beforeTasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+                restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
         assertNotNull(beforeTasks);
         assertFalse(beforeTasks.isEmpty());
 
@@ -1215,15 +1115,13 @@ public class UserTestITCase extends Abst
         membershipTO.addAttribute(membershipAttr);
         userTO.addMembership(membershipTO);
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         UserMod userMod = new UserMod();
         userMod.setId(userTO.getId());
         userMod.setPassword("newPassword");
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/update",
-                userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
 
         // check for changePwdDate
         assertNotNull(userTO.getChangePwdDate());
@@ -1233,8 +1131,7 @@ public class UserTestITCase extends Abst
         assertEquals(passwordTestUser.getPassword(), userTO.getPassword());
 
         List<PropagationTaskTO> afterTasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+                restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
         assertNotNull(afterTasks);
         assertFalse(afterTasks.isEmpty());
 
@@ -1245,8 +1142,7 @@ public class UserTestITCase extends Abst
     public void verifyTaskRegistration() {
         // get task list
         List<PropagationTaskTO> tasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+                restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
 
         assertNotNull(tasks);
         assertFalse(tasks.isEmpty());
@@ -1271,14 +1167,11 @@ public class UserTestITCase extends Abst
         userTO.addMembership(membershipTO);
 
         // 1. create user
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         // get the new task list
-        tasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+        tasks = Arrays.asList(restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
 
         assertNotNull(tasks);
         assertFalse(tasks.isEmpty());
@@ -1307,15 +1200,13 @@ public class UserTestITCase extends Abst
         attributeMod.addValueToBeAdded("surname");
         userMod.addAttributeToBeUpdated(attributeMod);
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
 
         assertNotNull(userTO);
 
         // get the new task list
         tasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+                restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
 
         // get max task id
         maxId = newMaxId;
@@ -1333,13 +1224,11 @@ public class UserTestITCase extends Abst
         // --------------------------------------
         // Delete operation
         // --------------------------------------
-        restTemplate.getForObject(BASE_URL + "user/delete/{userId}",
-                UserTO.class, userTO.getId());
+        restTemplate.getForObject(BASE_URL + "user/delete/{userId}", UserTO.class, userTO.getId());
 
         // get the new task list
         tasks = Arrays.asList(
-                restTemplate.getForObject(
-                BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
+                restTemplate.getForObject(BASE_URL + "task/propagation/list", PropagationTaskTO[].class));
 
         // get max task id
         maxId = newMaxId;
@@ -1364,20 +1253,17 @@ public class UserTestITCase extends Abst
         membershipTO.setRoleId(7L);
         userTO.addMembership(membershipTO);
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/create",
-                userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
 
-        userTO = restTemplate.getForObject(
-                BASE_URL + "user/suspend/" + userTO.getId(), UserTO.class);
+        userTO = restTemplate.getForObject(BASE_URL + "user/suspend/" + userTO.getId(), UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("suspended", userTO.getStatus());
 
-        userTO = restTemplate.getForObject(
-                BASE_URL + "user/reactivate/" + userTO.getId(), UserTO.class);
+        userTO = restTemplate.getForObject(BASE_URL + "user/reactivate/" + userTO.getId(), UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
@@ -1391,21 +1277,18 @@ public class UserTestITCase extends Abst
         userTO.getResources().clear();
 
         ResourceTO dbTable = restTemplate.getForObject(
-                BASE_URL + "/resource/read/{resourceName}.json",
-                ResourceTO.class, "resource-testdb");
+                BASE_URL + "/resource/read/{resourceName}.json", ResourceTO.class, "resource-testdb");
 
         assertNotNull(dbTable);
         userTO.addResource(dbTable.getName());
 
         ResourceTO ldap = restTemplate.getForObject(
-                BASE_URL + "/resource/read/{resourceName}.json",
-                ResourceTO.class, "resource-ldap");
+                BASE_URL + "/resource/read/{resourceName}.json", ResourceTO.class, "resource-ldap");
 
         assertNotNull(ldap);
         userTO.addResource(ldap.getName());
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
@@ -1414,9 +1297,7 @@ public class UserTestITCase extends Abst
                 + "&resourceNames=" + ldap.getName()
                 + "&performLocally=true"; // check also performLocally
 
-        userTO = restTemplate.getForObject(
-                BASE_URL + "user/suspend/" + userTO.getId() + query,
-                UserTO.class);
+        userTO = restTemplate.getForObject(BASE_URL + "user/suspend/" + userTO.getId() + query, UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("suspended", userTO.getStatus());
@@ -1425,17 +1306,16 @@ public class UserTestITCase extends Abst
         assertNotNull(dbTableUID);
 
         ConnObjectTO connObjectTO = restTemplate.getForObject(
-                BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
-                ConnObjectTO.class, dbTable.getName(), dbTableUID);
+                BASE_URL + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, dbTable.getName(),
+                dbTableUID);
 
-        assertFalse(Boolean.parseBoolean(connObjectTO.getAttributeMap().
-                get(OperationalAttributes.ENABLE_NAME).getValues().get(0)));
+        assertFalse(Boolean.parseBoolean(
+                connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME).getValues().get(0)));
 
         String ldapUID = userTO.getUsername();
         assertNotNull(ldapUID);
 
-        connObjectTO = restTemplate.getForObject(
-                BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
+        connObjectTO = restTemplate.getForObject(BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
                 ConnObjectTO.class, ldap.getName(), ldapUID);
 
         assertNotNull(connObjectTO);
@@ -1443,36 +1323,29 @@ public class UserTestITCase extends Abst
         query = "?resourceNames=" + ldap.getName()
                 + "&performLocally=false"; // check also performLocally
 
-        userTO = restTemplate.getForObject(
-                BASE_URL + "user/reactivate/" + userTO.getId() + query,
-                UserTO.class);
+        userTO = restTemplate.getForObject(BASE_URL + "user/reactivate/" + userTO.getId() + query, UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("suspended", userTO.getStatus());
 
-        connObjectTO = restTemplate.getForObject(
-                BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
+        connObjectTO = restTemplate.getForObject(BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
                 ConnObjectTO.class, dbTable.getName(), dbTableUID);
 
-        assertFalse(Boolean.parseBoolean(connObjectTO.getAttributeMap().
-                get(OperationalAttributes.ENABLE_NAME).getValues().get(0)));
+        assertFalse(Boolean.parseBoolean(
+                connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME).getValues().get(0)));
 
-        query = "?resourceNames=" + dbTable.getName()
-                + "&performLocally=true"; // check also performLocally
+        query = "?resourceNames=" + dbTable.getName() + "&performLocally=true"; // check also performLocally
 
-        userTO = restTemplate.getForObject(
-                BASE_URL + "user/reactivate/" + userTO.getId() + query,
-                UserTO.class);
+        userTO = restTemplate.getForObject(BASE_URL + "user/reactivate/" + userTO.getId() + query, UserTO.class);
 
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
 
-        connObjectTO = restTemplate.getForObject(
-                BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
+        connObjectTO = restTemplate.getForObject(BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
                 ConnObjectTO.class, dbTable.getName(), dbTableUID);
 
-        assertTrue(Boolean.parseBoolean(connObjectTO.getAttributeMap().
-                get(OperationalAttributes.ENABLE_NAME).getValues().get(0)));
+        assertTrue(Boolean.parseBoolean(
+                connObjectTO.getAttributeMap().get(OperationalAttributes.ENABLE_NAME).getValues().get(0)));
     }
 
     @Test(expected = EmptyResultDataAccessException.class)
@@ -1480,16 +1353,13 @@ public class UserTestITCase extends Abst
         UserTO userTO = getSampleTO("issue213@syncope-idm.org");
         userTO.addResource("resource-testdb");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
 
-        String username = jdbcTemplate.queryForObject(
-                "SELECT id FROM test WHERE id=?",
-                String.class,
-                userTO.getUsername());
+        String username =
+                jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
 
         assertEquals(userTO.getUsername(), username);
 
@@ -1498,15 +1368,11 @@ public class UserTestITCase extends Abst
         userMod.setId(userTO.getId());
         userMod.addResourceToBeRemoved("resource-testdb");
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/update",
-                userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
 
         assertTrue(userTO.getResources().isEmpty());
 
-        jdbcTemplate.queryForObject(
-                "SELECT id FROM test WHERE id=?",
-                String.class,
-                userTO.getUsername());
+        jdbcTemplate.queryForObject("SELECT id FROM test WHERE id=?", String.class, userTO.getUsername());
     }
 
     @Test
@@ -1514,23 +1380,19 @@ public class UserTestITCase extends Abst
         UserTO userTO = getSampleTO("issue234@syncope-idm.org");
         userTO.addResource("resource-ldap");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         UserMod userMod = new UserMod();
 
         userMod.setId(userTO.getId());
-        userMod.setUsername(
-                "1" + userTO.getUsername());
+        userMod.setUsername("1" + userTO.getUsername());
 
-        userTO = restTemplate.postForObject(BASE_URL + "user/update",
-                userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
 
         assertNotNull(userTO);
 
-        assertEquals(
-                "1issue234@syncope-idm.org", userTO.getUsername());
+        assertEquals("1issue234@syncope-idm.org", userTO.getUsername());
     }
 
     @Test
@@ -1540,23 +1402,19 @@ public class UserTestITCase extends Abst
         // be sure to remove all virtual attributes
         original.setVirtualAttributes(Collections.EMPTY_LIST);
 
-        original = restTemplate.postForObject(
-                BASE_URL + "user/create", original, UserTO.class);
+        original = restTemplate.postForObject(BASE_URL + "user/create", original, UserTO.class);
 
         assertNotNull(original);
 
         assertTrue(original.getVirtualAttributes().isEmpty());
 
         UserTO toBeUpdated = restTemplate.getForObject(
-                BASE_URL + "user/read/{userId}.json",
-                UserTO.class, original.getId());
+                BASE_URL + "user/read/{userId}.json", UserTO.class, original.getId());
 
         AttributeTO virtual = new AttributeTO();
 
-        virtual.setSchema(
-                "virtualdata");
-        virtual.addValue(
-                "virtualvalue");
+        virtual.setSchema("virtualdata");
+        virtual.addValue("virtualvalue");
 
         toBeUpdated.addVirtualAttribute(virtual);
 
@@ -1565,16 +1423,14 @@ public class UserTestITCase extends Abst
 
         assertNotNull(userMod);
 
-        toBeUpdated = restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        toBeUpdated = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
 
         assertNotNull(toBeUpdated);
 
         assertFalse(toBeUpdated.getVirtualAttributes().isEmpty());
         assertNotNull(toBeUpdated.getVirtualAttributes().get(0));
 
-        assertEquals(virtual.getSchema(),
-                toBeUpdated.getVirtualAttributes().get(0).getSchema());
+        assertEquals(virtual.getSchema(), toBeUpdated.getVirtualAttributes().get(0).getSchema());
     }
 
     @Test
@@ -1584,8 +1440,7 @@ public class UserTestITCase extends Abst
         userTO.getMemberships().clear();
         userTO.getDerivedAttributes().clear();
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         UserMod userMod = new UserMod();
@@ -1593,8 +1448,7 @@ public class UserTestITCase extends Abst
         userMod.setPassword("123password");
         userMod.addResourceToBeAdded("resource-testdb");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/update", userMod, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
         assertNotNull(userTO);
 
         final List<PropagationTO> propagations = userTO.getPropagationTOs();
@@ -1602,8 +1456,7 @@ public class UserTestITCase extends Abst
         assertNotNull(propagations);
         assertEquals(1, propagations.size());
 
-        final PropagationTaskExecStatus status =
-                propagations.get(0).getStatus();
+        final PropagationTaskExecStatus status = propagations.get(0).getStatus();
         final String resource = propagations.get(0).getResourceName();
 
         assertNotNull(status);
@@ -1619,8 +1472,7 @@ public class UserTestITCase extends Abst
         userTO.getDerivedAttributes().clear();
         userTO.addResource("resource-csv");
 
-        userTO = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        userTO = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
         assertNotNull(userTO);
 
         final List<PropagationTO> propagations = userTO.getPropagationTOs();
@@ -1628,8 +1480,7 @@ public class UserTestITCase extends Abst
         assertNotNull(propagations);
         assertEquals(1, propagations.size());
 
-        final PropagationTaskExecStatus status =
-                propagations.get(0).getStatus();
+        final PropagationTaskExecStatus status = propagations.get(0).getStatus();
         final String resource = propagations.get(0).getResourceName();
 
         assertNotNull(status);
@@ -1647,12 +1498,10 @@ public class UserTestITCase extends Abst
         userTO.addAttribute(attributeTO);
 
         try {
-            restTemplate.postForObject(
-                    BASE_URL + "user/create", userTO, UserTO.class);
+            restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
             fail();
         } catch (SyncopeClientCompositeErrorException sccee) {
-            assertNotNull(sccee.getException(
-                    SyncopeClientExceptionType.InvalidValues));
+            assertNotNull(sccee.getException(SyncopeClientExceptionType.InvalidValues));
         }
     }
 
@@ -1675,25 +1524,20 @@ public class UserTestITCase extends Abst
 
         userTO.addResource("resource-csv");
 
-        UserTO actual = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        UserTO actual = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertNotNull(actual);
         assertNotNull(actual.getDerivedAttributeMap().get("csvuserid"));
 
         ConnObjectTO connObjectTO = restTemplate.getForObject(
-                BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
-                ConnObjectTO.class,
-                "resource-csv",
-                actual.getDerivedAttributeMap().get("csvuserid").getValues().
-                get(0));
+                BASE_URL + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, "resource-csv",
+                actual.getDerivedAttributeMap().get("csvuserid").getValues().get(0));
 
         assertNotNull(connObjectTO);
 
-        assertEquals("sx-dx", connObjectTO.getAttributeMap().get("ROLE").
-                getValues().get(0));
+        assertEquals("sx-dx", connObjectTO.getAttributeMap().get("ROLE").getValues().get(0));
     }
-    
+
     @Test
     public void membershipAttrPropagation() {
         UserTO userTO = getSampleTO("checkMembAttrPropagation@syncope-idm.org");
@@ -1708,17 +1552,17 @@ public class UserTestITCase extends Abst
 
         MembershipTO membershipTO = new MembershipTO();
         membershipTO.setRoleId(1L);
-        
+
         AttributeTO mderived_sx = new AttributeTO();
         mderived_sx.setSchema("mderived_sx");
         mderived_sx.setValues(Collections.singletonList("sx"));
         membershipTO.addAttribute(mderived_sx);
-        
+
         AttributeTO mderived_dx = new AttributeTO();
         mderived_dx.setSchema("mderived_dx");
         mderived_dx.setValues(Collections.singletonList("dx"));
         membershipTO.addAttribute(mderived_dx);
-        
+
         AttributeTO mderiveddata = new AttributeTO();
         mderiveddata.setSchema("mderToBePropagated");
         membershipTO.addDerivedAttribute(mderiveddata);
@@ -1727,22 +1571,54 @@ public class UserTestITCase extends Abst
 
         userTO.addResource("resource-csv");
 
-        UserTO actual = restTemplate.postForObject(
-                BASE_URL + "user/create", userTO, UserTO.class);
+        UserTO actual = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
 
         assertNotNull(actual);
         assertNotNull(actual.getDerivedAttributeMap().get("csvuserid"));
 
         ConnObjectTO connObjectTO = restTemplate.getForObject(
-                BASE_URL + "/resource/{resourceName}/read/{objectId}.json",
-                ConnObjectTO.class,
-                "resource-csv",
-                actual.getDerivedAttributeMap().get("csvuserid").getValues().
-                get(0));
+                BASE_URL + "/resource/{resourceName}/read/{objectId}.json", ConnObjectTO.class, "resource-csv",
+                actual.getDerivedAttributeMap().get("csvuserid").getValues().get(0));
 
         assertNotNull(connObjectTO);
 
-        assertEquals("sx-dx", connObjectTO.getAttributeMap().get("MEMBERSHIP").
-                getValues().get(0));
+        assertEquals("sx-dx", connObjectTO.getAttributeMap().get("MEMBERSHIP").getValues().get(0));
+    }
+
+    @Test
+    public void issueSYNCOPE16() {
+        UserTO userTO = getSampleTO("virattrupdate@apache.org");
+
+        MembershipTO membershipTO = new MembershipTO();
+        membershipTO.setRoleId(8L);
+        userTO.addMembership(membershipTO);
+
+        // 1. create user
+        UserTO actual = restTemplate.postForObject(BASE_URL + "user/create", userTO, UserTO.class);
+        assertNotNull(actual);
+
+        // 2. check for virtual attribute value
+        actual = restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, actual.getId());
+        assertNotNull(actual);
+        assertEquals("virtualvalue", actual.getVirtualAttributeMap().get("virtualdata").getValues().get(0));
+
+        UserMod userMod = new UserMod();
+        userMod.setId(actual.getId());
+        
+        AttributeMod virtualdata = new AttributeMod();
+        virtualdata.setSchema("virtualdata");
+        virtualdata.addValueToBeAdded("virtualupdated");
+        
+        userMod.addVirtualAttributeToBeRemoved("virtualdata");
+        userMod.addVirtualAttributeToBeUpdated(virtualdata);
+        
+        // 3. update virtual attribute
+        actual = restTemplate.postForObject(BASE_URL + "user/update", userMod, UserTO.class);
+        assertNotNull(actual);
+        
+        // 4. check for virtual attribute value
+        actual = restTemplate.getForObject(BASE_URL + "user/read/{userId}.json", UserTO.class, actual.getId());
+        assertNotNull(actual);
+        assertEquals("virtualupdated", actual.getVirtualAttributeMap().get("virtualdata").getValues().get(0));
     }
 }