This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch ranger-2.4
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-2.4 by this push:
     new 556675a15 RANGER-3883: updated REST APIs to validate id/userId path 
parameter
556675a15 is described below

commit 556675a15a0b99d871d5668e08a109a1b04429b7
Author: Ramachandran Krishnan <ramachandran.k.krish...@oracle.com>
AuthorDate: Tue Nov 29 17:23:33 2022 +0530

    RANGER-3883: updated REST APIs to validate id/userId path parameter
    
    Signed-off-by: Madhan Neethiraj <mad...@apache.org>
    (cherry picked from commit d1fd921e419c469d3b02e96ae9a5c4d1081cd15a)
---
 .../java/org/apache/ranger/rest/AssetREST.java     |  11 +-
 .../java/org/apache/ranger/rest/PublicAPIs.java    |   2 +-
 .../java/org/apache/ranger/rest/PublicAPIsv2.java  |   8 +-
 .../java/org/apache/ranger/rest/ServiceREST.java   |  29 +++-
 .../main/java/org/apache/ranger/rest/UserREST.java |  14 +-
 .../java/org/apache/ranger/rest/XUserREST.java     |  12 +-
 .../java/org/apache/ranger/rest/TestAssetREST.java |  54 ++++++-
 .../org/apache/ranger/rest/TestPublicAPIs.java     |   7 +-
 .../org/apache/ranger/rest/TestPublicAPIsv2.java   |  16 +--
 .../org/apache/ranger/rest/TestServiceREST.java    | 155 +++++++++++++++++++--
 .../java/org/apache/ranger/rest/TestUserREST.java  |  33 +++--
 .../java/org/apache/ranger/rest/TestXUserREST.java |  41 +++++-
 12 files changed, 322 insertions(+), 60 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
index a0ba3b750..abc324dd1 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
@@ -341,15 +341,22 @@ public class AssetREST {
        @Path("/resources/{id}")
        @Consumes({ "application/json" })
        @Produces({ "application/json" })
-       public VXResource updateXResource(VXResource vXResource) {
+       public VXResource updateXResource(VXResource vXResource , 
@PathParam("id") Long id) {
                if(logger.isDebugEnabled()) {
                        logger.debug("==> AssetREST.updateXResource(" + 
vXResource + ")");
                }
 
+               // if vXResource.id is specified, it should be same as the 
param 'id'
+               if (vXResource.getId() == null) {
+                       vXResource.setId(id);
+               } else if(!vXResource.getId().equals(id)) {
+                       throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , 
"resource Id mismatch", true);
+               }
+
                RangerService service = 
serviceREST.getService(vXResource.getAssetId());
                RangerPolicy  policy  = serviceUtil.toRangerPolicy(vXResource, 
service);
 
-               RangerPolicy updatedPolicy = serviceREST.updatePolicy(policy);
+               RangerPolicy updatedPolicy = serviceREST.updatePolicy(policy, 
policy.getId());
                
                VXResource ret = serviceUtil.toVXResource(updatedPolicy, 
service);
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java 
b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
index 2e7e90bb4..a6b86e965 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
@@ -321,7 +321,7 @@ public class PublicAPIs {
                if(policy != null) {
                        policy.setVersion(existing.getVersion());
 
-                       RangerPolicy  updatedPolicy = 
serviceREST.updatePolicy(policy);
+                       RangerPolicy  updatedPolicy = 
serviceREST.updatePolicy(policy, policy.getId());
 
                        ret = serviceUtil.toVXPolicy(updatedPolicy, service);
                }
diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java 
b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
index 293107f24..c7a6ea0a6 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIsv2.java
@@ -253,7 +253,7 @@ public class PublicAPIsv2 {
                        throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , 
"serviceDef id mismatch", true);
                }
 
-               return serviceREST.updateServiceDef(serviceDef);
+               return serviceREST.updateServiceDef(serviceDef, 
serviceDef.getId());
        }
 
 
@@ -279,7 +279,7 @@ public class PublicAPIsv2 {
                        serviceDef.setGuid(existingServiceDef.getGuid());
                }
 
-               return serviceREST.updateServiceDef(serviceDef);
+               return serviceREST.updateServiceDef(serviceDef, null);
        }
 
        /*
@@ -538,7 +538,7 @@ public class PublicAPIsv2 {
                        throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , 
"policyID mismatch", true);
                }
 
-               return serviceREST.updatePolicy(policy);
+               return serviceREST.updatePolicy(policy, id);
        }
 
        @PUT
@@ -563,7 +563,7 @@ public class PublicAPIsv2 {
                        policy.setName(StringUtils.trim(oldPolicy.getName()));
                }
 
-               return serviceREST.updatePolicy(policy);
+               return serviceREST.updatePolicy(policy, policy.getId());
        }
 
 
diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index c556f1e90..0538a7820 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -323,11 +323,19 @@ public class ServiceREST {
        @Consumes({ "application/json" })
        @Produces({ "application/json" })
        @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + 
RangerAPIList.UPDATE_SERVICE_DEF + "\")")
-       public RangerServiceDef updateServiceDef(RangerServiceDef serviceDef) {
+       public RangerServiceDef updateServiceDef(RangerServiceDef serviceDef,  
@PathParam("id") Long id) {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> 
ServiceREST.updateServiceDef(serviceDefName=" + serviceDef.getName() + ")");
                }
 
+               // if serviceDef.id and param 'id' are specified, serviceDef.id 
should be same as the param 'id'
+               // if serviceDef.id is null, then set param 'id' into 
serviceDef Object
+               if (serviceDef.getId() == null) {
+                       serviceDef.setId(id);
+               } else if(!serviceDef.getId().equals(id)) {
+                       throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , 
"serviceDef Id mismatch", true);
+               }
+
                RangerServiceDef ret  = null;
                RangerPerfTracer perf = null;
 
@@ -1650,7 +1658,7 @@ public class ServiceREST {
                                    RangerPolicy existingPolicy = 
getPolicyMatchByName(policy, request);
                                    if (existingPolicy != null) {
                                       policy.setId(existingPolicy.getId());
-                                      ret = updatePolicy(policy);
+                                      ret = updatePolicy(policy, null);
                                    } else {
                                       ret = 
createPolicyUnconditionally(policy);
                                    }
@@ -1749,7 +1757,7 @@ public class ServiceREST {
                                        } else {
                                                
policy.setId(existingPolicy.getId());
                                        }
-                                       ret = updatePolicy(policy);
+                                       ret = updatePolicy(policy, null);
                                }
                        } catch(WebApplicationException excp) {
                                throw excp;
@@ -1772,10 +1780,19 @@ public class ServiceREST {
        @Path("/policies/{id}")
        @Consumes({ "application/json" })
        @Produces({ "application/json" })
-       public RangerPolicy updatePolicy(RangerPolicy policy) {
+       public RangerPolicy updatePolicy(RangerPolicy policy, @PathParam("id") 
Long id) {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> ServiceREST.updatePolicy(" + policy + 
")");
                }
+
+               // if policy.id and param 'id' are specified, policy.id should 
be same as the param 'id'
+               // if policy.id is null, then set param 'id' into policy Object
+               if (policy.getId() == null) {
+                       policy.setId(id);
+               } else if(!policy.getId().equals(id)) {
+                       throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , 
"policyID mismatch", true);
+               }
+
                RangerPolicy ret  = null;
                RangerPerfTracer perf = null;
 
@@ -2471,7 +2488,7 @@ public class ServiceREST {
                                                                                
                createPolicy(policy, request);
                                                                                
        } else {
                                                                                
                
ServiceRESTUtil.mergeExactMatchPolicyForResource(existingPolicy, policy);
-                                                                               
                updatePolicy(existingPolicy);
+                                                                               
                updatePolicy(existingPolicy, null);
                                                                                
        }
                                                                                
} else {
                                                                                
        createPolicy(policy, request);
@@ -2507,7 +2524,7 @@ public class ServiceREST {
                                                                        
createPolicy(policy, request);
                                                                } else {
                                                                        
ServiceRESTUtil.mergeExactMatchPolicyForResource(existingPolicy, policy);
-                                                                       
updatePolicy(existingPolicy);
+                                                                       
updatePolicy(existingPolicy, null);
                                                                }
                                                        } else {
                                                                
createPolicy(policy, request);
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java
index 5fc18034b..c6557b11c 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/UserREST.java
@@ -307,8 +307,13 @@ public class UserREST {
        @Produces({ "application/json" })
        public VXResponse changePassword(@PathParam("userId") Long userId,
                        VXPasswordChange changePassword) {
-               if(changePassword==null || 
stringUtil.isEmpty(changePassword.getLoginId())){
+               if(changePassword==null || 
stringUtil.isEmpty(changePassword.getLoginId())) {
                        logger.warn("SECURITY:changePassword(): Invalid loginId 
provided. loginId was empty or null");
+                       throw 
restErrorUtil.createRESTException("serverMsg.userRestUser", 
MessageEnums.DATA_NOT_FOUND, null, null, "");
+               } else if (changePassword.getId() == null) {
+                       changePassword.setId(userId);
+               } else if (!changePassword.getId().equals(userId) ) {
+                       logger.warn("SECURITY:changePassword(): userId 
mismatch");
                        throw 
restErrorUtil.createRESTException("serverMsg.userRestUser",MessageEnums.DATA_NOT_FOUND,
 null, null,"");
                }
 
@@ -336,8 +341,13 @@ public class UserREST {
        @Produces({ "application/json" })
        public VXPortalUser changeEmailAddress(@PathParam("userId") Long userId,
                        VXPasswordChange changeEmail) {
-               if(changeEmail==null || 
stringUtil.isEmpty(changeEmail.getLoginId())){
+               if(changeEmail==null || 
stringUtil.isEmpty(changeEmail.getLoginId())) {
                        logger.warn("SECURITY:changeEmail(): Invalid loginId 
provided. loginId was empty or null");
+                       throw 
restErrorUtil.createRESTException("serverMsg.userRestUser", 
MessageEnums.DATA_NOT_FOUND, null, null, "");
+               } else if (changeEmail.getId() == null) {
+                       changeEmail.setId(userId);
+               } else if (!changeEmail.getId().equals(userId) ) {
+                       logger.warn("SECURITY:changeEmail(): userId mismatch");
                        throw 
restErrorUtil.createRESTException("serverMsg.userRestUser",MessageEnums.DATA_NOT_FOUND,
 null, null,"");
                }
 
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
index dd12048ac..faad41c6c 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
@@ -1111,7 +1111,7 @@ public class XUserREST {
        public VXGroupPermission createXGroupPermission(
                        VXGroupPermission vXGroupPermission) {
                xUserMgr.checkAdminAccess();
-                bizUtil.blockAuditorRoleUser();
+               bizUtil.blockAuditorRoleUser();
                return xUserMgr.createXGroupPermission(vXGroupPermission);
        }
 
@@ -1128,10 +1128,16 @@ public class XUserREST {
        @Consumes({ "application/json" })
        @Produces({ "application/json" })
        @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + 
RangerAPIList.UPDATE_X_GROUP_PERMISSION + "\")")
-       public VXGroupPermission updateXGroupPermission(
+       public VXGroupPermission updateXGroupPermission(@PathParam("id") Long 
id,
                        VXGroupPermission vXGroupPermission) {
+               // if VXGroupPermission.id is specified, it should be same as 
the param 'id'
+               if(vXGroupPermission.getId() == null) {
+                       vXGroupPermission.setId(id);
+               } else if(!vXGroupPermission.getId().equals(id)) {
+                       throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , 
"vXGroupPermission Id mismatch", true);
+               }
                xUserMgr.checkAdminAccess();
-                bizUtil.blockAuditorRoleUser();
+               bizUtil.blockAuditorRoleUser();
                return xUserMgr.updateXGroupPermission(vXGroupPermission);
        }
 
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestAssetREST.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestAssetREST.java
index abd4b1c1c..cc0d75872 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestAssetREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestAssetREST.java
@@ -36,6 +36,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.ranger.admin.client.datatype.RESTResponse;
 import org.apache.ranger.biz.AssetMgr;
 import org.apache.ranger.biz.RangerBizUtil;
+import org.apache.ranger.common.RESTErrorUtil;
 import org.apache.ranger.common.RangerSearchUtil;
 import org.apache.ranger.common.SearchCriteria;
 import org.apache.ranger.common.ServiceUtil;
@@ -84,7 +85,9 @@ import org.apache.ranger.view.VXTrxLog;
 import org.apache.ranger.view.VXTrxLogList;
 import org.junit.Assert;
 import org.junit.FixMethodOrder;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.junit.runners.MethodSorters;
 import org.mockito.InjectMocks;
@@ -105,8 +108,8 @@ public class TestAssetREST {
        @Mock
        RangerSearchUtil searchUtil;
 
-        @Mock
-        RangerBizUtil xaBizUtil;
+       @Mock
+       RangerBizUtil xaBizUtil;
 
        @Mock
        XAssetService xAssetService;
@@ -143,6 +146,11 @@ public class TestAssetREST {
        @InjectMocks
        AssetREST assetREST = new AssetREST();
 
+       @Rule public ExpectedException thrown = ExpectedException.none();
+       @Mock RESTErrorUtil restErrorUtil;
+       @Mock WebApplicationException webApplicationException;
+
+
        public void TestAssetRest() {
 
        }
@@ -202,6 +210,7 @@ public class TestAssetREST {
        private VXResource vxResource(Long id) {
                VXResource vXResource = new VXResource();
                vXResource.setName("HDFS_1-1-20150316062453");
+               vXResource.setId(id);
                vXResource.setAssetId(id);
                return vXResource;
        }
@@ -453,14 +462,49 @@ public class TestAssetREST {
                RangerPolicy rangerPolicy = rangerPolicy(Id);
                RangerService rangerService = rangerService(Id);
                
Mockito.when(serviceREST.getService(vxResource.getAssetId())).thenReturn(rangerService);
-               
Mockito.when(serviceREST.updatePolicy(rangerPolicy)).thenReturn(rangerPolicy);
+               Mockito.when(serviceREST.updatePolicy(rangerPolicy, 
Id)).thenReturn(rangerPolicy);
+               Mockito.when(serviceUtil.toRangerPolicy(vxResource, 
rangerService)).thenReturn(rangerPolicy);
+               Mockito.when(serviceUtil.toVXResource(rangerPolicy, 
rangerService)).thenReturn(vxResource);
+               VXResource actualvxResource = 
assetREST.updateXResource(vxResource, Id);
+               Assert.assertNotNull(actualvxResource);
+               Assert.assertEquals(vxResource, actualvxResource);
+               Mockito.verify(serviceREST).getService(vxResource.getAssetId());
+               Mockito.verify(serviceREST).updatePolicy(rangerPolicy, Id);
+               Mockito.verify(serviceUtil).toRangerPolicy(vxResource, 
rangerService);
+               Mockito.verify(serviceUtil).toVXResource(rangerPolicy, 
rangerService);
+       }
+
+       @Test
+       public void testUpdateXResourceForInvalidResourceId() {
+               VXResource vxResource = vxResource(Id);
+               RangerPolicy rangerPolicy = rangerPolicy(Id);
+               RangerService rangerService = rangerService(Id);
+               
Mockito.when(restErrorUtil.createRESTException(Mockito.anyInt(), 
Mockito.anyString(), Mockito.anyBoolean())).thenThrow(new 
WebApplicationException());
+               thrown.expect(WebApplicationException.class);
+               VXResource actualvxResource = 
assetREST.updateXResource(vxResource, -11L);
+               Assert.assertNotNull(actualvxResource);
+               Assert.assertEquals(vxResource, actualvxResource);
+               Mockito.verify(serviceREST).getService(vxResource.getAssetId());
+               Mockito.verify(serviceREST).updatePolicy(rangerPolicy, Id);
+               Mockito.verify(serviceUtil).toRangerPolicy(vxResource, 
rangerService);
+               Mockito.verify(serviceUtil).toVXResource(rangerPolicy, 
rangerService);
+       }
+
+       @Test
+       public void testUpdateXResourceWhenResourceIdIsNull() {
+               VXResource vxResource = vxResource(Id);
+               vxResource.setId(null);
+               RangerPolicy rangerPolicy = rangerPolicy(Id);
+               RangerService rangerService = rangerService(Id);
+               
Mockito.when(serviceREST.getService(vxResource.getAssetId())).thenReturn(rangerService);
+               Mockito.when(serviceREST.updatePolicy(rangerPolicy, 
Id)).thenReturn(rangerPolicy);
                Mockito.when(serviceUtil.toRangerPolicy(vxResource, 
rangerService)).thenReturn(rangerPolicy);
                Mockito.when(serviceUtil.toVXResource(rangerPolicy, 
rangerService)).thenReturn(vxResource);
-               VXResource actualvxResource = 
assetREST.updateXResource(vxResource);
+               VXResource actualvxResource = 
assetREST.updateXResource(vxResource, Id);
                Assert.assertNotNull(actualvxResource);
                Assert.assertEquals(vxResource, actualvxResource);
                Mockito.verify(serviceREST).getService(vxResource.getAssetId());
-               Mockito.verify(serviceREST).updatePolicy(rangerPolicy);
+               Mockito.verify(serviceREST).updatePolicy(rangerPolicy, Id);
                Mockito.verify(serviceUtil).toRangerPolicy(vxResource, 
rangerService);
                Mockito.verify(serviceUtil).toVXResource(rangerPolicy, 
rangerService);
        }
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java
index 2bf5ee6c9..eb0cb6452 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java
@@ -425,7 +425,7 @@ public class TestPublicAPIs {
                Mockito.when(xXPolicyDao.getById(Id)).thenReturn(xXPolicy);
                
Mockito.when(serviceREST.getServiceByName(vXPolicy.getRepositoryName())).thenReturn(service);
                
Mockito.when(serviceUtil.toRangerPolicy(vXPolicy,service)).thenReturn(policy);
-               
Mockito.when(serviceREST.updatePolicy(policy)).thenReturn(policy);
+               Mockito.when(serviceREST.updatePolicy(policy, 
Id)).thenReturn(policy);
                Mockito.when(serviceUtil.toVXPolicy(policy, 
service)).thenReturn(vXPolicy);
                VXPolicy dbVXPolicy = publicAPIs.updatePolicy(vXPolicy, Id);
                
@@ -435,7 +435,7 @@ public class TestPublicAPIs {
                                vXPolicy.getId());
                Assert.assertEquals(dbVXPolicy.getRepositoryName(),
                                vXPolicy.getRepositoryName());
-               Mockito.verify(serviceREST).updatePolicy(policy);
+               Mockito.verify(serviceREST).updatePolicy(policy, Id);
                
Mockito.verify(serviceREST).getServiceByName(vXPolicy.getRepositoryName());
                Mockito.verify(serviceUtil).toVXPolicy(policy, service);
                Mockito.verify(serviceUtil).toRangerPolicy(vXPolicy,service);
@@ -508,6 +508,5 @@ public class TestPublicAPIs {
                
Mockito.verify(serviceUtil).rangerPolicyListToPublic(policyList,filter);
                
        }
-       
-       
+
 }
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java
index 1069f013d..2a123de93 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIsv2.java
@@ -302,7 +302,7 @@ public class TestPublicAPIsv2 {
        @Test
        public void test5updateServiceDef() throws Exception {
                RangerServiceDef rangerServiceDef = rangerServiceDef();
-               
Mockito.when(serviceREST.updateServiceDef(rangerServiceDef)).thenReturn(rangerServiceDef);
+               Mockito.when(serviceREST.updateServiceDef(rangerServiceDef, 
rangerServiceDef.getId())).thenReturn(rangerServiceDef);
                RangerServiceDef dbRangerServiceDef = 
publicAPIsv2.updateServiceDef(rangerServiceDef, Id);
                Assert.assertNotNull(dbRangerServiceDef);
                Assert.assertEquals(dbRangerServiceDef, rangerServiceDef);
@@ -310,7 +310,7 @@ public class TestPublicAPIsv2 {
                                rangerServiceDef.getId());
                Assert.assertEquals(dbRangerServiceDef.getName(),
                                rangerServiceDef.getName());
-               Mockito.verify(serviceREST).updateServiceDef(rangerServiceDef);
+               Mockito.verify(serviceREST).updateServiceDef(rangerServiceDef, 
rangerServiceDef.getId());
        }
        
        @Test
@@ -318,7 +318,7 @@ public class TestPublicAPIsv2 {
                RangerServiceDef rangerServiceDef = rangerServiceDef();
                String name = rangerServiceDef.getName();
                
Mockito.when(serviceREST.getServiceDefByName(name)).thenReturn(rangerServiceDef);
-               
Mockito.when(serviceREST.updateServiceDef(rangerServiceDef)).thenReturn(rangerServiceDef);
+               Mockito.when(serviceREST.updateServiceDef(rangerServiceDef, 
null)).thenReturn(rangerServiceDef);
                RangerServiceDef dbRangerServiceDef = 
publicAPIsv2.updateServiceDefByName(rangerServiceDef, name);
                Assert.assertNotNull(dbRangerServiceDef);
                Assert.assertEquals(dbRangerServiceDef, rangerServiceDef);
@@ -326,7 +326,7 @@ public class TestPublicAPIsv2 {
                                rangerServiceDef.getId());
                Assert.assertEquals(dbRangerServiceDef.getName(),
                                rangerServiceDef.getName());
-               Mockito.verify(serviceREST).updateServiceDef(rangerServiceDef);
+               Mockito.verify(serviceREST).updateServiceDef(rangerServiceDef, 
null);
                Mockito.verify(serviceREST).getServiceDefByName(name);
        }
        
@@ -541,7 +541,7 @@ public class TestPublicAPIsv2 {
        @Test
        public void test22updatePolicy() throws Exception {
                RangerPolicy rangerPolicy = rangerPolicy();
-               
Mockito.when(serviceREST.updatePolicy(rangerPolicy)).thenReturn(rangerPolicy);
+               Mockito.when(serviceREST.updatePolicy(rangerPolicy, 
Id)).thenReturn(rangerPolicy);
                RangerPolicy dbRangerPolicy = 
publicAPIsv2.updatePolicy(rangerPolicy, Id);
                Assert.assertNotNull(dbRangerPolicy);
                Assert.assertEquals(dbRangerPolicy, rangerPolicy);
@@ -549,7 +549,7 @@ public class TestPublicAPIsv2 {
                                rangerPolicy.getId());
                Assert.assertEquals(dbRangerPolicy.getName(),
                                rangerPolicy.getName());
-               Mockito.verify(serviceREST).updatePolicy(rangerPolicy);
+               Mockito.verify(serviceREST).updatePolicy(rangerPolicy, Id);
        }
        
        @Test
@@ -562,7 +562,7 @@ public class TestPublicAPIsv2 {
                List<RangerPolicy> policies = new ArrayList<RangerPolicy>();
                policies.add(rangerPolicy);
                Mockito.when(serviceREST.getPolicies((SearchFilter) 
Mockito.any())).thenReturn(policies);
-               
Mockito.when(serviceREST.updatePolicy(rangerPolicy)).thenReturn(rangerPolicy);
+               Mockito.when(serviceREST.updatePolicy(rangerPolicy, 
rangerPolicy.getId())).thenReturn(rangerPolicy);
                RangerPolicy dbRangerPolicy = 
publicAPIsv2.updatePolicyByName(rangerPolicy, serviceName, policyName, request);
                Assert.assertNotNull(dbRangerPolicy);
                Assert.assertEquals(dbRangerPolicy, rangerPolicy);
@@ -570,7 +570,7 @@ public class TestPublicAPIsv2 {
                                rangerPolicy.getId());
                Assert.assertEquals(dbRangerPolicy.getName(),
                                rangerPolicy.getName());
-               Mockito.verify(serviceREST).updatePolicy(rangerPolicy);
+               Mockito.verify(serviceREST).updatePolicy(rangerPolicy, 
rangerPolicy.getId());
                Mockito.verify(serviceREST).getPolicies((SearchFilter) 
Mockito.any());
        }
        
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
index 375135a5a..7b15810e0 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestServiceREST.java
@@ -499,7 +499,7 @@ public class TestServiceREST {
                                                
.any())).thenReturn(rangerServiceDef);
 
                RangerServiceDef dbRangerServiceDef = serviceREST
-                               .updateServiceDef(rangerServiceDef);
+                               .updateServiceDef(rangerServiceDef, 
rangerServiceDef.getId());
                Assert.assertNotNull(dbRangerServiceDef);
                Assert.assertEquals(dbRangerServiceDef, rangerServiceDef);
                Assert.assertEquals(dbRangerServiceDef.getId(),
@@ -851,7 +851,7 @@ public class TestServiceREST {
                servicePolicies.setServiceDef(rangerServiceDef);
                servicePolicies.setPolicies(policies);
 
-               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerServiceDef.RangerAccessTypeDef>();
+               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerAccessTypeDef>();
                RangerAccessTypeDef rangerAccessTypeDefObj = new 
RangerAccessTypeDef();
                rangerAccessTypeDefObj.setLabel("Read");
                rangerAccessTypeDefObj.setName("read");
@@ -893,7 +893,7 @@ public class TestServiceREST {
                userGroupsList.add("group1");
                userGroupsList.add("group2");
 
-               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerServiceDef.RangerAccessTypeDef>();
+               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerAccessTypeDef>();
                RangerAccessTypeDef rangerAccessTypeDefObj = new 
RangerAccessTypeDef();
                rangerAccessTypeDefObj.setLabel("Read");
                rangerAccessTypeDefObj.setName("read");
@@ -912,7 +912,7 @@ public class TestServiceREST {
                
Mockito.when(xServiceDao.findByName(Mockito.anyString())).thenReturn(xService);
                
Mockito.when(daoManager.getXXServiceDef()).thenReturn(xServiceDefDao);
                
Mockito.when(xServiceDefDao.getById(xService.getType())).thenReturn(xServiceDef);
-               RangerPolicy dbRangerPolicy = 
serviceREST.updatePolicy(rangerPolicy);
+               RangerPolicy dbRangerPolicy = 
serviceREST.updatePolicy(rangerPolicy, Id);
                Assert.assertNull(dbRangerPolicy);
                Mockito.verify(validatorFactory).getPolicyValidator(svcStore);
        }
@@ -929,7 +929,7 @@ public class TestServiceREST {
                userGroupsList.add("group1");
                userGroupsList.add("group2");
 
-               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerServiceDef.RangerAccessTypeDef>();
+               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerAccessTypeDef>();
                RangerAccessTypeDef rangerAccessTypeDefObj = new 
RangerAccessTypeDef();
                rangerAccessTypeDefObj.setLabel("Read");
                rangerAccessTypeDefObj.setName("read");
@@ -963,7 +963,7 @@ public class TestServiceREST {
                userGroupsList.add("group1");
                userGroupsList.add("group2");
 
-               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerServiceDef.RangerAccessTypeDef>();
+               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerAccessTypeDef>();
                RangerAccessTypeDef rangerAccessTypeDefObj = new 
RangerAccessTypeDef();
                rangerAccessTypeDefObj.setLabel("Read");
                rangerAccessTypeDefObj.setName("read");
@@ -1162,7 +1162,7 @@ public class TestServiceREST {
                Mockito.when(request.getParameter("policyId")).thenReturn("1");
                Mockito.when(request.getParameter("versionNo")).thenReturn("1");
                RangerPolicy policy=new RangerPolicy();
-               Map<String, RangerPolicyResource> resources=new HashMap<String, 
RangerPolicy.RangerPolicyResource>();
+               Map<String, RangerPolicyResource> resources=new HashMap<String, 
RangerPolicyResource>();
                policy.setService("services");
                policy.setResources(resources);
                Mockito.when(svcStore.getPolicyFromEventTime(strdt, 
1l)).thenReturn(policy);
@@ -2039,7 +2039,7 @@ public class TestServiceREST {
                Mockito.when(request.getParameter("policyId")).thenReturn("1");
                Mockito.when(request.getParameter("versionNo")).thenReturn("1");
                RangerPolicy policy = new RangerPolicy();
-               Map<String, RangerPolicyResource> resources = new 
HashMap<String, RangerPolicy.RangerPolicyResource>();
+               Map<String, RangerPolicyResource> resources = new 
HashMap<String, RangerPolicyResource>();
                policy.setService("services");
                policy.setResources(resources);
                Mockito.when(svcStore.getPolicyFromEventTime(strdt, 
1l)).thenReturn(null);
@@ -2378,4 +2378,143 @@ public class TestServiceREST {
                        assert response.getIsDeleted();
                }
        }
+
+       @Test
+       public void test72updatePolicyWithPolicyIdIsNull() throws Exception {
+               RangerPolicy rangerPolicy = rangerPolicy();
+               Long policyId = rangerPolicy.getId();
+               rangerPolicy.setId(null);
+               String userName = "admin";
+
+               Set<String> userGroupsList = new HashSet<String>();
+               userGroupsList.add("group1");
+               userGroupsList.add("group2");
+
+               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerAccessTypeDef>();
+               RangerAccessTypeDef rangerAccessTypeDefObj = new 
RangerAccessTypeDef();
+               rangerAccessTypeDefObj.setLabel("Read");
+               rangerAccessTypeDefObj.setName("read");
+               rangerAccessTypeDefObj.setRbKeyLabel(null);
+               rangerAccessTypeDefList.add(rangerAccessTypeDefObj);
+               XXServiceDef xServiceDef = serviceDef();
+               XXService xService = xService();
+               XXServiceDefDao xServiceDefDao = 
Mockito.mock(XXServiceDefDao.class);
+               XXServiceDao xServiceDao = Mockito.mock(XXServiceDao.class);
+
+               
Mockito.when(validatorFactory.getPolicyValidator(svcStore)).thenReturn(
+                       policyValidator);
+               Mockito.when(bizUtil.isAdmin()).thenReturn(true);
+               
Mockito.when(bizUtil.getCurrentUserLoginId()).thenReturn(userName);
+               Mockito.when(daoManager.getXXService()).thenReturn(xServiceDao);
+               
Mockito.when(xServiceDao.findByName(Mockito.anyString())).thenReturn(xService);
+               
Mockito.when(daoManager.getXXServiceDef()).thenReturn(xServiceDefDao);
+               
Mockito.when(xServiceDefDao.getById(xService.getType())).thenReturn(xServiceDef);
+               RangerPolicy dbRangerPolicy = 
serviceREST.updatePolicy(rangerPolicy, policyId);
+               Assert.assertNull(dbRangerPolicy);
+               Mockito.verify(validatorFactory).getPolicyValidator(svcStore);
+       }
+
+       @Test
+       public void test72updatePolicyWithInvalidPolicyId() throws Exception {
+               RangerPolicy rangerPolicy = rangerPolicy();
+               String userName = "admin";
+
+               Set<String> userGroupsList = new HashSet<String>();
+               userGroupsList.add("group1");
+               userGroupsList.add("group2");
+
+               List<RangerAccessTypeDef> rangerAccessTypeDefList = new 
ArrayList<RangerAccessTypeDef>();
+               RangerAccessTypeDef rangerAccessTypeDefObj = new 
RangerAccessTypeDef();
+               rangerAccessTypeDefObj.setLabel("Read");
+               rangerAccessTypeDefObj.setName("read");
+               rangerAccessTypeDefObj.setRbKeyLabel(null);
+               rangerAccessTypeDefList.add(rangerAccessTypeDefObj);
+               XXServiceDefDao xServiceDefDao = 
Mockito.mock(XXServiceDefDao.class);
+               XXServiceDao xServiceDao = Mockito.mock(XXServiceDao.class);
+
+               Mockito.when(daoManager.getXXService()).thenReturn(xServiceDao);
+               
Mockito.when(daoManager.getXXServiceDef()).thenReturn(xServiceDefDao);
+               
Mockito.when(restErrorUtil.createRESTException(Mockito.anyInt(), 
Mockito.anyString(), Mockito.anyBoolean())).thenThrow(new 
WebApplicationException());
+               thrown.expect(WebApplicationException.class);
+               RangerPolicy dbRangerPolicy = 
serviceREST.updatePolicy(rangerPolicy, -11L);
+               Assert.assertNull(dbRangerPolicy);
+               Mockito.verify(validatorFactory).getPolicyValidator(svcStore);
+       }
+
+       @Test
+       public void test73updateServiceDefWhenIdIsNull() throws Exception {
+               RangerServiceDef rangerServiceDef = rangerServiceDef();
+               Long id = rangerServiceDef.getId();
+               rangerServiceDef.setId(null);
+
+               Mockito.when(validatorFactory.getServiceDefValidator(svcStore))
+                       .thenReturn(serviceDefValidator);
+
+               Mockito.when(
+                       svcStore.updateServiceDef((RangerServiceDef) Mockito
+                               .any())).thenReturn(rangerServiceDef);
+
+               RangerServiceDef dbRangerServiceDef = serviceREST
+                       .updateServiceDef(rangerServiceDef, 
rangerServiceDef.getId());
+               Assert.assertNotNull(dbRangerServiceDef);
+               Assert.assertEquals(dbRangerServiceDef, rangerServiceDef);
+               Assert.assertEquals(dbRangerServiceDef.getId(),
+                       rangerServiceDef.getId());
+               Assert.assertEquals(dbRangerServiceDef.getName(),
+                       rangerServiceDef.getName());
+               Assert.assertEquals(dbRangerServiceDef.getImplClass(),
+                       rangerServiceDef.getImplClass());
+               Assert.assertEquals(dbRangerServiceDef.getLabel(),
+                       rangerServiceDef.getLabel());
+               Assert.assertEquals(dbRangerServiceDef.getDescription(),
+                       rangerServiceDef.getDescription());
+               Assert.assertEquals(dbRangerServiceDef.getRbKeyDescription(),
+                       rangerServiceDef.getRbKeyDescription());
+               Assert.assertEquals(dbRangerServiceDef.getUpdatedBy(),
+                       rangerServiceDef.getUpdatedBy());
+               Assert.assertEquals(dbRangerServiceDef.getUpdateTime(),
+                       rangerServiceDef.getUpdateTime());
+               Assert.assertEquals(dbRangerServiceDef.getVersion(),
+                       rangerServiceDef.getVersion());
+               Assert.assertEquals(dbRangerServiceDef.getConfigs(),
+                       rangerServiceDef.getConfigs());
+
+               
Mockito.verify(validatorFactory).getServiceDefValidator(svcStore);
+               Mockito.verify(svcStore).updateServiceDef(rangerServiceDef);
+       }
+       @Test
+       public void test74updateServiceDefWithInvalidDefId() throws Exception {
+               RangerServiceDef rangerServiceDef = rangerServiceDef();
+
+               
Mockito.when(restErrorUtil.createRESTException(Mockito.anyInt(), 
Mockito.anyString(), Mockito.anyBoolean())).thenThrow(new 
WebApplicationException());
+               thrown.expect(WebApplicationException.class);
+
+               RangerServiceDef dbRangerServiceDef = serviceREST
+                       .updateServiceDef(rangerServiceDef, -1L);
+               Assert.assertNotNull(dbRangerServiceDef);
+               Assert.assertEquals(dbRangerServiceDef, rangerServiceDef);
+               Assert.assertEquals(dbRangerServiceDef.getId(),
+                       rangerServiceDef.getId());
+               Assert.assertEquals(dbRangerServiceDef.getName(),
+                       rangerServiceDef.getName());
+               Assert.assertEquals(dbRangerServiceDef.getImplClass(),
+                       rangerServiceDef.getImplClass());
+               Assert.assertEquals(dbRangerServiceDef.getLabel(),
+                       rangerServiceDef.getLabel());
+               Assert.assertEquals(dbRangerServiceDef.getDescription(),
+                       rangerServiceDef.getDescription());
+               Assert.assertEquals(dbRangerServiceDef.getRbKeyDescription(),
+                       rangerServiceDef.getRbKeyDescription());
+               Assert.assertEquals(dbRangerServiceDef.getUpdatedBy(),
+                       rangerServiceDef.getUpdatedBy());
+               Assert.assertEquals(dbRangerServiceDef.getUpdateTime(),
+                       rangerServiceDef.getUpdateTime());
+               Assert.assertEquals(dbRangerServiceDef.getVersion(),
+                       rangerServiceDef.getVersion());
+               Assert.assertEquals(dbRangerServiceDef.getConfigs(),
+                       rangerServiceDef.getConfigs());
+
+               
Mockito.verify(validatorFactory).getServiceDefValidator(svcStore);
+               Mockito.verify(svcStore).updateServiceDef(rangerServiceDef);
+       }
 }
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestUserREST.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestUserREST.java
index 48cd7face..cb2ccc47c 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestUserREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestUserREST.java
@@ -112,6 +112,9 @@ public class TestUserREST {
        String loginId = "xyzId";
        String emailId = "a...@example.com";
 
+       String oldPassword = "ranger123$";
+       String newPassword = "rangerAdmin1234$";
+
        @Test
        public void test1SearchUsers() {
                SearchCriteria searchCriteria = new SearchCriteria();
@@ -383,13 +386,14 @@ public class TestUserREST {
        public void test16ChangePassword() {
                XXPortalUser xxPUser = new XXPortalUser();
                VXResponse vxResponseExp = new VXResponse();
+               VXPasswordChange vxPasswordChange = createPasswordChange();
                vxResponseExp.setStatusCode(10);
                XXPortalUserDao xxPortalUserDao = 
Mockito.mock(XXPortalUserDao.class);
 
                
Mockito.when(daoManager.getXXPortalUser()).thenReturn(xxPortalUserDao);
-               
Mockito.when(restErrorUtil.createRESTException("serverMsg.userRestUser",MessageEnums.DATA_NOT_FOUND,
 null, null, changePassword.getLoginId())).thenThrow(new 
WebApplicationException());
+               
Mockito.when(restErrorUtil.createRESTException("serverMsg.userRestUser",MessageEnums.DATA_NOT_FOUND,
 null, null, vxPasswordChange.getLoginId())).thenThrow(new 
WebApplicationException());
                thrown.expect(WebApplicationException.class);
-               VXResponse vxResponseAct = userREST.changePassword(userId, 
changePassword);
+               VXResponse vxResponseAct = userREST.changePassword(userId, 
vxPasswordChange);
 
                Assert.assertNotNull(vxResponseAct);
                Assert.assertEquals(vxResponseExp, vxResponseAct);
@@ -398,15 +402,12 @@ public class TestUserREST {
                Mockito.verify(daoManager).getXXPortalUser();
                Mockito.verify(xxPortalUserDao).getById(userId);
                Mockito.verify(userManager).checkAccessForUpdate(xxPUser);
-               Mockito.verify(changePassword).setId(userId);
-               Mockito.verify(userManager).changePassword(changePassword);
+               Mockito.verify(userManager).changePassword(vxPasswordChange);
        }
 
        @Test
        public void test17ChangePassword() {
                XXPortalUserDao xxPortalUserDao = 
Mockito.mock(XXPortalUserDao.class);
-
-               
Mockito.when(daoManager.getXXPortalUser()).thenReturn(xxPortalUserDao);
                
Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), 
(MessageEnums) Mockito.any(),
                                Mockito.nullable(Long.class), 
Mockito.nullable(String.class), Mockito.nullable(String.class))).thenReturn(new 
WebApplicationException());
                thrown.expect(WebApplicationException.class);
@@ -423,13 +424,14 @@ public class TestUserREST {
        public void test18ChangeEmailAddress() {
                XXPortalUser xxPUser = new XXPortalUser();
                VXPortalUser vxPUserExp = CreateVXPortalUser();
+               VXPasswordChange changeEmail = createPasswordChange();
 
                XXPortalUserDao xxPortalUserDao = 
Mockito.mock(XXPortalUserDao.class);
 
                
Mockito.when(daoManager.getXXPortalUser()).thenReturn(xxPortalUserDao);
-               
Mockito.when(restErrorUtil.createRESTException("serverMsg.userRestUser",MessageEnums.DATA_NOT_FOUND,
 null, null, changePassword.getLoginId())).thenThrow(new 
WebApplicationException());
+               
Mockito.when(restErrorUtil.createRESTException("serverMsg.userRestUser",MessageEnums.DATA_NOT_FOUND,
 null, null, changeEmail.getLoginId())).thenThrow(new 
WebApplicationException());
                thrown.expect(WebApplicationException.class);
-               VXPortalUser vxPortalUserAct = 
userREST.changeEmailAddress(userId, changePassword);
+               VXPortalUser vxPortalUserAct = 
userREST.changeEmailAddress(userId, changeEmail);
 
                Assert.assertNotNull(vxPortalUserAct);
                Assert.assertEquals(vxPUserExp, vxPortalUserAct);
@@ -439,15 +441,12 @@ public class TestUserREST {
                Mockito.verify(daoManager).getXXPortalUser();
                Mockito.verify(xxPortalUserDao).getById(userId);
                Mockito.verify(userManager).checkAccessForUpdate(xxPUser);
-               Mockito.verify(changePassword).setId(userId);
-               Mockito.verify(userManager).changeEmailAddress(xxPUser, 
changePassword);
+               Mockito.verify(userManager).changeEmailAddress(xxPUser, 
changeEmail);
        }
 
        @Test
        public void test19ChangeEmailAddress() {
                XXPortalUserDao xxPortalUserDao = 
Mockito.mock(XXPortalUserDao.class);
-
-               
Mockito.when(daoManager.getXXPortalUser()).thenReturn(xxPortalUserDao);
                
Mockito.when(restErrorUtil.createRESTException(Mockito.anyString(), 
(MessageEnums) Mockito.any(),
                                Mockito.nullable(Long.class), 
Mockito.nullable(String.class), Mockito.nullable(String.class))).thenReturn(new 
WebApplicationException());
                thrown.expect(WebApplicationException.class);
@@ -470,4 +469,14 @@ public class TestUserREST {
                vxPUserExp.setLoginId(loginId);
                return vxPUserExp;
        }
+
+       private VXPasswordChange createPasswordChange() {
+               VXPasswordChange vxPasswordChange = new VXPasswordChange();
+               vxPasswordChange.setId(userId);
+               vxPasswordChange.setOldPassword(oldPassword);
+               vxPasswordChange.setUpdPassword(newPassword);
+               vxPasswordChange.setEmailAddress(emailId);
+               vxPasswordChange.setLoginId(loginId);
+               return vxPasswordChange;
+       }
 }
diff --git 
a/security-admin/src/test/java/org/apache/ranger/rest/TestXUserREST.java 
b/security-admin/src/test/java/org/apache/ranger/rest/TestXUserREST.java
index 2b25ba813..74744e6cf 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestXUserREST.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestXUserREST.java
@@ -1596,18 +1596,17 @@ public class TestXUserREST {
        }
        @Test
        public void test90updateXGroupPermission() {
-       
+
                VXGroupPermission testVXGroupPermission = 
createVXGroupPermission();
                Mockito.doNothing().when(xUserMgr).checkAdminAccess();
                
Mockito.when(xUserMgr.updateXGroupPermission(testVXGroupPermission)).thenReturn(testVXGroupPermission);
-               VXGroupPermission 
retVXGroupPermission=xUserRest.updateXGroupPermission(testVXGroupPermission);
+               VXGroupPermission 
retVXGroupPermission=xUserRest.updateXGroupPermission(testVXGroupPermission.getId(),
 testVXGroupPermission);
                
Mockito.verify(xUserMgr).updateXGroupPermission(testVXGroupPermission);
                Mockito.verify(xUserMgr).checkAdminAccess();
                assertNotNull(retVXGroupPermission);
                assertEquals(retVXGroupPermission.getId(), 
testVXGroupPermission.getId());
                assertEquals(retVXGroupPermission.getClass(), 
testVXGroupPermission.getClass());
-       
-               
+
        }
        @Test
        public void test91deleteXGroupPermission() {
@@ -2022,7 +2021,7 @@ public class TestXUserREST {
                
                xUserRest.searchXUsers(request);
        }
-       
+
        @SuppressWarnings({ "unchecked", "static-access" })
        @Test
        public void test114RoleUserWillGetOnlyHisOwnUserDetails() {
@@ -2076,6 +2075,38 @@ public class TestXUserREST {
                assertEquals(gotVXUserList.getList().get(0).getId(), 
expectedUser.getId());
                assertEquals(gotVXUserList.getList().get(0).getName(), 
expectedUser.getName());
        }
+
+       @Test
+       public void test115updateXGroupPermissionWithInvalidPermissionId() {
+
+               VXGroupPermission testVXGroupPermission = 
createVXGroupPermission();
+               
Mockito.when(restErrorUtil.createRESTException(Mockito.anyInt(), 
Mockito.anyString(), Mockito.anyBoolean())).thenThrow(new 
WebApplicationException());
+               thrown.expect(WebApplicationException.class);
+               VXGroupPermission 
retVXGroupPermission=xUserRest.updateXGroupPermission(-1L, 
testVXGroupPermission);
+               
Mockito.verify(xUserMgr).updateXGroupPermission(testVXGroupPermission);
+               Mockito.verify(xUserMgr).checkAdminAccess();
+               assertNotNull(retVXGroupPermission);
+               assertEquals(retVXGroupPermission.getId(), 
testVXGroupPermission.getId());
+               assertEquals(retVXGroupPermission.getClass(), 
testVXGroupPermission.getClass());
+
+       }
+
+       @Test
+       public void test116updateXGroupPermissionWithPermissionIdIsNull() {
+
+               VXGroupPermission testVXGroupPermission = 
createVXGroupPermission();
+               Long testVXGroupPermissionId = testVXGroupPermission.getId();
+               testVXGroupPermission.setId(null);
+               Mockito.doNothing().when(xUserMgr).checkAdminAccess();
+               
Mockito.when(xUserMgr.updateXGroupPermission(testVXGroupPermission)).thenReturn(testVXGroupPermission);
+               VXGroupPermission 
retVXGroupPermission=xUserRest.updateXGroupPermission(testVXGroupPermissionId, 
testVXGroupPermission);
+               
Mockito.verify(xUserMgr).updateXGroupPermission(testVXGroupPermission);
+               Mockito.verify(xUserMgr).checkAdminAccess();
+               assertNotNull(retVXGroupPermission);
+               assertEquals(retVXGroupPermission.getId(), 
testVXGroupPermission.getId());
+               assertEquals(retVXGroupPermission.getClass(), 
testVXGroupPermission.getClass());
+
+       }
        
        @After
        public void destroySession() {


Reply via email to