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 769b399cb RANGER-4012: optmization of getPolicyByName REST API
769b399cb is described below
commit 769b399cb429150932a735b8cd4bde006240fd49
Author: Ramachandran Krishnan <[email protected]>
AuthorDate: Tue Feb 7 23:01:29 2023 +0530
RANGER-4012: optmization of getPolicyByName REST API
Signed-off-by: Madhan Neethiraj <[email protected]>
(cherry picked from commit b31db07dbde2d7109998689046ebe4b34bfea6c8)
---
.../main/java/org/apache/ranger/RangerClient.java | 28 +++++++++++
.../python/apache_ranger/client/ranger_client.py | 13 ++++++
.../ranger/examples/sampleclient/SampleClient.java | 26 +++++++----
.../java/org/apache/ranger/rest/PublicAPIsv2.java | 20 ++++----
.../java/org/apache/ranger/rest/ServiceREST.java | 48 ++++---------------
.../org/apache/ranger/rest/TestPublicAPIsv2.java | 28 +++++------
.../org/apache/ranger/rest/TestServiceREST.java | 54 ++++++++++++++++++++++
7 files changed, 142 insertions(+), 75 deletions(-)
diff --git a/intg/src/main/java/org/apache/ranger/RangerClient.java
b/intg/src/main/java/org/apache/ranger/RangerClient.java
index e4e3a57ad..ff281112f 100644
--- a/intg/src/main/java/org/apache/ranger/RangerClient.java
+++ b/intg/src/main/java/org/apache/ranger/RangerClient.java
@@ -48,6 +48,8 @@ public class RangerClient {
private static final String PARAM_EXEC_USER =
"execUser";
private static final String PARAM_POLICY_NAME =
"policyname";
private static final String PARAM_SERVICE_NAME =
"serviceName";
+ private static final String PARAM_ZONE_NAME =
"zoneName";
+
private static final String PARAM_RELOAD_SERVICE_POLICIES_CACHE =
"reloadServicePoliciesCache";
// URIs
@@ -259,6 +261,14 @@ public class RangerClient {
return callAPI(UPDATE_POLICY_BY_NAME.applyUrlFormat(serviceName,
policyName), null, policy, RangerPolicy.class);
}
+ public RangerPolicy updatePolicyByNameAndZone(String serviceName, String
policyName, String zoneName, RangerPolicy policy) throws RangerServiceException
{
+ Map<String,String> queryParams = new HashMap<>();
+
+ queryParams.put(PARAM_ZONE_NAME, zoneName);
+
+ return callAPI(UPDATE_POLICY_BY_NAME.applyUrlFormat(serviceName,
policyName), queryParams, policy, RangerPolicy.class);
+ }
+
public RangerPolicy applyPolicy(RangerPolicy policy) throws
RangerServiceException {
return callAPI(APPLY_POLICY, null, policy, RangerPolicy.class);
}
@@ -276,6 +286,17 @@ public class RangerClient {
callAPI(DELETE_POLICY_BY_NAME, queryParams);
}
+
+ public void deletePolicyByNameAndZone(String serviceName, String
policyName, String zoneName) throws RangerServiceException {
+ Map<String,String> queryParams = new HashMap<>();
+
+ queryParams.put(PARAM_POLICY_NAME, policyName);
+ queryParams.put(PARAM_SERVICE_NAME, serviceName);
+ queryParams.put(PARAM_ZONE_NAME, zoneName);
+
+ callAPI(DELETE_POLICY_BY_NAME, queryParams);
+ }
+
public RangerPolicy getPolicy(long policyId) throws RangerServiceException
{
return callAPI(GET_POLICY_BY_ID.applyUrlFormat(policyId), null, null,
RangerPolicy.class);
}
@@ -284,6 +305,13 @@ public class RangerClient {
return callAPI(GET_POLICY_BY_NAME.applyUrlFormat(serviceName,
policyName), null, null, RangerPolicy.class);
}
+ public RangerPolicy getPolicyByNameAndZone(String serviceName, String
policyName, String zoneName) throws RangerServiceException {
+ Map<String,String> queryParams = new HashMap<>();
+
+ queryParams.put(PARAM_ZONE_NAME, zoneName);
+
+ return callAPI(GET_POLICY_BY_NAME.applyUrlFormat(serviceName,
policyName), queryParams, null, RangerPolicy.class);
+ }
public List<RangerPolicy> getPoliciesInService(String serviceName) throws
RangerServiceException {
return callAPI(GET_POLICIES_IN_SERVICE.applyUrlFormat(serviceName),
null, null, new GenericType<List<RangerPolicy>>(){});
}
diff --git a/intg/src/main/python/apache_ranger/client/ranger_client.py
b/intg/src/main/python/apache_ranger/client/ranger_client.py
index 527380de7..f3e9bfe25 100644
--- a/intg/src/main/python/apache_ranger/client/ranger_client.py
+++ b/intg/src/main/python/apache_ranger/client/ranger_client.py
@@ -138,6 +138,11 @@ class RangerClient:
return type_coerce(resp, RangerPolicy)
+ def get_policy_by_name_zone(self, serviceName, policyName, zoneName):
+ resp =
self.client_http.call_api(RangerClient.GET_POLICY_BY_NAME.format_path({
'serviceName': serviceName, 'policyName': policyName}), { 'zoneName': zoneName
})
+
+ return type_coerce(resp, RangerPolicy)
+
def get_policies_in_service(self, serviceName, params=None):
resp =
self.client_http.call_api(RangerClient.GET_POLICIES_IN_SERVICE.format_path({
'serviceName': serviceName }), params)
@@ -153,6 +158,11 @@ class RangerClient:
return type_coerce(resp, RangerPolicy)
+ def update_policy_by_name_zone(self, serviceName, policyName, zoneName,
policy):
+ resp =
self.client_http.call_api(RangerClient.UPDATE_POLICY_BY_NAME.format_path({
'serviceName': serviceName, 'policyName': policyName}), { 'zoneName': zoneName
}, request_data=policy)
+
+ return type_coerce(resp, RangerPolicy)
+
def apply_policy(self, policy, params=None):
resp = self.client_http.call_api(RangerClient.APPLY_POLICY, params,
policy)
@@ -164,6 +174,9 @@ class RangerClient:
def delete_policy(self, serviceName, policyName):
self.client_http.call_api(RangerClient.DELETE_POLICY_BY_NAME, {
'servicename': serviceName, 'policyname': policyName })
+ def delete_policy_by_name_zone(self, serviceName, policyName, zoneName):
+ self.client_http.call_api(RangerClient.DELETE_POLICY_BY_NAME, {
'servicename': serviceName, 'policyname': policyName, 'zoneName': zoneName })
+
def find_policies(self, filter=None):
resp = self.client_http.call_api(RangerClient.FIND_POLICIES, filter)
diff --git
a/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java
b/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java
index d0202e47e..dd87b81b7 100644
---
a/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java
+++
b/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java
@@ -79,6 +79,7 @@ public class SampleClient {
String serviceDefName = "sampleServiceDef";
String serviceName = "sampleService";
String policyName = "samplePolicy";
+ String zoneName = null;
String roleName = "sampleRole";
Map<String,String> filter = Collections.emptyMap();
@@ -145,24 +146,31 @@ public class SampleClient {
"root", new
RangerPolicy.RangerPolicyResource(Collections.singletonList("/path/to/sample/resource"),false,false));
RangerPolicy policy = new RangerPolicy();
policy.setService(serviceName);
+ policy.setZoneName(zoneName);
policy.setName(policyName);
policy.setResources(resource);
RangerPolicy createdPolicy = rangerClient.createPolicy(policy);
- LOG.info("New Policy created successfully {}",
gsonBuilder.toJson(createdPolicy));
+ LOG.info("Created policy {} in zone {}: {}", policyName, zoneName,
gsonBuilder.toJson(createdPolicy));
/*
- Get a policy by name
- */
- RangerPolicy fetchedPolicy = rangerClient.getPolicy(serviceName,
policyName);
- LOG.info("Policy: {} fetched {}", policyName,
gsonBuilder.toJson(fetchedPolicy));
+ Get a policy by name and Zone
+ */
+ RangerPolicy fetchedPolicy =
rangerClient.getPolicyByNameAndZone(serviceName, policyName, zoneName);
+ LOG.info("Fetched policy {} in zone {}: {}", policyName, zoneName
,gsonBuilder.toJson(fetchedPolicy));
+ /*
+ Update a policy by name and Zone
+ */
+ RangerPolicy updatedPolicy =
rangerClient.updatePolicyByNameAndZone(serviceName, policyName, zoneName,
fetchedPolicy);
+ LOG.info("Updated policy {} in zone {}: {}", policyName, zoneName
,gsonBuilder.toJson(updatedPolicy));
/*
- Delete a policy
- */
- rangerClient.deletePolicy(serviceName, policyName);
- LOG.info("Policy {} successfully deleted", policyName);
+ Delete a policy by name and zone
+ */
+ rangerClient.deletePolicyByNameAndZone(serviceName, policyName,
zoneName);
+ LOG.info("Deleted policy {} in zone {}", policyName, zoneName);
+
/* import tags */
RangerTagDef tagDefTest1 = new RangerTagDef("test1");
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 d98910bee..4ad6058cc 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
@@ -34,7 +34,6 @@ import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.RangerServiceHeaderInfo;
import org.apache.ranger.plugin.model.RangerServiceTags;
import org.apache.ranger.plugin.util.GrantRevokeRoleRequest;
-import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.plugin.util.ServiceTags;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -463,23 +462,20 @@ public class PublicAPIsv2 {
@Produces({ "application/json" })
public RangerPolicy getPolicyByName(@PathParam("servicename") String
serviceName,
@PathParam("policyname") String
policyName,
+ @QueryParam("zoneName") String
zoneName,
@Context HttpServletRequest
request) {
if(logger.isDebugEnabled()) {
- logger.debug("==> PublicAPIsv2.getPolicyByName(" +
serviceName + "," + policyName + ")");
+ logger.debug("==> PublicAPIsv2.getPolicyByName(" +
serviceName + "," + policyName + "," + zoneName + ")");
}
- SearchFilter filter = new SearchFilter();
- filter.setParam(SearchFilter.SERVICE_NAME, serviceName);
- filter.setParam(SearchFilter.POLICY_NAME, policyName);
- List<RangerPolicy> policies = serviceREST.getPolicies(filter);
+ RangerPolicy policy = serviceREST.getPolicyByName(serviceName,
policyName, zoneName);
- if (policies.size() != 1) {
+ if (policy == null) {
throw
restErrorUtil.createRESTException(HttpServletResponse.SC_NOT_FOUND, "Not
found", true);
}
- RangerPolicy policy = policies.get(0);
if(logger.isDebugEnabled()) {
- logger.debug("<== PublicAPIsv2.getPolicyByName(" +
serviceName + "," + policyName + ")" + policy);
+ logger.debug("<== PublicAPIsv2.getPolicyByName(" +
serviceName + "," + policyName + "," + zoneName + ")" + policy);
}
return policy;
}
@@ -555,11 +551,12 @@ public class PublicAPIsv2 {
public RangerPolicy updatePolicyByName(RangerPolicy policy,
@PathParam("servicename") String serviceName,
@PathParam("policyname")
String policyName,
+ @QueryParam("zoneName")
String zoneName,
@Context
HttpServletRequest request) {
if (policy.getService() == null ||
!policy.getService().equals(serviceName)) {
throw
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , "service
name mismatch", true);
}
- RangerPolicy oldPolicy = getPolicyByName(serviceName,
policyName, request);
+ RangerPolicy oldPolicy = getPolicyByName(serviceName,
policyName, zoneName, request);
// ignore policy.id - if specified. Retrieve using the given
serviceName+policyName and use id from the retrieved object
policy.setId(oldPolicy.getId());
@@ -602,6 +599,7 @@ public class PublicAPIsv2 {
@Path("/api/policy")
public void deletePolicyByName(@QueryParam("servicename") String
serviceName,
@QueryParam("policyname") String
policyName,
+ @QueryParam("zoneName") String zoneName,
@Context HttpServletRequest request) {
if(logger.isDebugEnabled()) {
logger.debug("==> PublicAPIsv2.deletePolicyByName(" +
serviceName + "," + policyName + ")");
@@ -610,7 +608,7 @@ public class PublicAPIsv2 {
if (serviceName == null || policyName == null) {
throw
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , "Invalid
service name or policy name", true);
}
- RangerPolicy policy = getPolicyByName(serviceName, policyName,
request);
+ RangerPolicy policy = getPolicyByName(serviceName, policyName,
zoneName, request);
serviceREST.deletePolicy(policy.getId());
if(logger.isDebugEnabled()) {
logger.debug("<== PublicAPIsv2.deletePolicyByName(" +
serviceName + "," + policyName + ")");
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 862a1d754..fac25878e 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
@@ -4360,59 +4360,33 @@ public class ServiceREST {
}
/**
- * Returns {@link RangerPolicy} for non-empty serviceName and
policyName, null otherwise.
+ * Returns {@link RangerPolicy} for non-empty serviceName, policyName
and zoneName null otherwise.
* @param serviceName
* @param policyName
+ * @param zoneName
* @return
*/
- private RangerPolicy getPolicyByName(String serviceName, String
policyName) {
+ public RangerPolicy getPolicyByName(String serviceName, String
policyName, String zoneName) {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> ServiceREST.getPolicyByName(" + serviceName + "," +
policyName + ")");
+ LOG.debug("==> ServiceREST.getPolicyByName(" + serviceName + "," +
policyName + "," + zoneName + ")");
}
RangerPolicy ret = null;
if (StringUtils.isNotBlank(serviceName) &&
StringUtils.isNotBlank(policyName)) {
- SearchFilter filter = new SearchFilter();
+ XXPolicy dbPolicy =
daoManager.getXXPolicy().findPolicy(policyName, serviceName, zoneName);
- filter.setParam(SearchFilter.SERVICE_NAME, serviceName);
- filter.setParam(SearchFilter.POLICY_NAME, policyName);
-
- List<RangerPolicy> policies = getPolicies(filter);
-
- if (CollectionUtils.isNotEmpty(policies)) {
- ret = policies.get(0);
+ if (dbPolicy != null) {
+ ret = policyService.getPopulatedViewObject(dbPolicy);
}
}
if (LOG.isDebugEnabled()) {
- LOG.debug("<== ServiceREST.getPolicyByName(" + serviceName + "," +
policyName + ") " + (ret != null ? ret : "ret is null"));
+ LOG.debug("<== ServiceREST.getPolicyByName(" + serviceName + "," +
policyName + "," + zoneName + ") " + (ret != null ? ret : "ret is null"));
}
return ret;
}
- private RangerPolicy getPolicyByNameAndZone(String serviceName, String
policyName, String zoneName) {
- RangerPolicy ret = null;
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> ServiceREST.getPolicyByNameAndZone(" +
serviceName + "," + policyName + "," + zoneName + ")");
- }
-
- SearchFilter filter = new SearchFilter();
- filter.setParam(SearchFilter.SERVICE_NAME, serviceName);
- filter.setParam(SearchFilter.POLICY_NAME, policyName);
- filter.setParam(SearchFilter.ZONE_NAME, zoneName);
- List<RangerPolicy> policies = getPolicies(filter);
-
- if (CollectionUtils.isNotEmpty(policies) && policies.size()==1)
{
- ret = policies.get(0);
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== ServiceREST.getPolicyByNameAndZone(" +
serviceName + "," + policyName + "," + zoneName + ")");
- }
- return ret;
- }
-
private RangerPolicy createPolicyUnconditionally(RangerPolicy policy)
throws Exception {
if(LOG.isDebugEnabled()) {
LOG.debug("==> ServiceREST.createPolicyUnconditionally(
"+ policy +")");
@@ -4474,11 +4448,7 @@ public class ServiceREST {
if (StringUtils.isNotBlank(zoneName)) {
policy.setZoneName(StringUtils.trim(zoneName));
}
- if (StringUtils.isNotBlank(zoneName)) {
- existingPolicy =
getPolicyByNameAndZone(policy.getService(), policy.getName(),
policy.getZoneName());
- } else {
- existingPolicy =
getPolicyByName(policy.getService(), policy.getName());
- }
+ existingPolicy = getPolicyByName(policy.getService(),
policy.getName(), policy.getZoneName());
}
if(LOG.isDebugEnabled()) {
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 7409883ab..53750a041 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
@@ -46,7 +46,6 @@ import
org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef;
import
org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef;
-import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.security.context.RangerContextHolder;
import org.apache.ranger.security.context.RangerSecurityContext;
import org.apache.ranger.service.RangerPolicyService;
@@ -479,17 +478,16 @@ public class TestPublicAPIsv2 {
RangerService rangerService = rangerService();
String serviceName = rangerService.getName();
String policyName = rangerPolicy.getName();
- List<RangerPolicy> policies = new ArrayList<RangerPolicy>();
- policies.add(rangerPolicy);
- Mockito.when(serviceREST.getPolicies((SearchFilter)
Mockito.any())).thenReturn(policies);
- RangerPolicy dbRangerPolicy =
publicAPIsv2.getPolicyByName(serviceName, policyName, request);
+ String zoneName = "zone-1";
+
Mockito.when(serviceREST.getPolicyByName(Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenReturn(rangerPolicy);
+ RangerPolicy dbRangerPolicy =
publicAPIsv2.getPolicyByName(serviceName, policyName, zoneName, request);
Assert.assertNotNull(dbRangerPolicy);
Assert.assertEquals(dbRangerPolicy, rangerPolicy);
Assert.assertEquals(dbRangerPolicy.getId(),
rangerPolicy.getId());
Assert.assertEquals(dbRangerPolicy.getName(),
rangerPolicy.getName());
- Mockito.verify(serviceREST).getPolicies((SearchFilter)
Mockito.any());
+
Mockito.verify(serviceREST).getPolicyByName(Mockito.anyString(),Mockito.anyString(),Mockito.anyString());
}
@Test
@@ -559,11 +557,10 @@ public class TestPublicAPIsv2 {
String policyName = rangerPolicy.getName();
RangerService rangerService = rangerService();
String serviceName = rangerService.getName();
- List<RangerPolicy> policies = new ArrayList<RangerPolicy>();
- policies.add(rangerPolicy);
- Mockito.when(serviceREST.getPolicies((SearchFilter)
Mockito.any())).thenReturn(policies);
+ String zoneName = "zone-1";
+
Mockito.when(serviceREST.getPolicyByName(Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenReturn(rangerPolicy);
Mockito.when(serviceREST.updatePolicy(rangerPolicy,
rangerPolicy.getId())).thenReturn(rangerPolicy);
- RangerPolicy dbRangerPolicy =
publicAPIsv2.updatePolicyByName(rangerPolicy, serviceName, policyName, request);
+ RangerPolicy dbRangerPolicy =
publicAPIsv2.updatePolicyByName(rangerPolicy, serviceName, policyName,
zoneName, request);
Assert.assertNotNull(dbRangerPolicy);
Assert.assertEquals(dbRangerPolicy, rangerPolicy);
Assert.assertEquals(dbRangerPolicy.getId(),
@@ -571,7 +568,7 @@ public class TestPublicAPIsv2 {
Assert.assertEquals(dbRangerPolicy.getName(),
rangerPolicy.getName());
Mockito.verify(serviceREST).updatePolicy(rangerPolicy,
rangerPolicy.getId());
- Mockito.verify(serviceREST).getPolicies((SearchFilter)
Mockito.any());
+
Mockito.verify(serviceREST).getPolicyByName(Mockito.anyString(),Mockito.anyString(),Mockito.anyString());
}
@Test
@@ -588,12 +585,11 @@ public class TestPublicAPIsv2 {
String policyName = rangerPolicy.getName();
RangerService rangerService = rangerService();
String serviceName = rangerService.getName();
- List<RangerPolicy> policies = new ArrayList<RangerPolicy>();
- policies.add(rangerPolicy);
- Mockito.when(serviceREST.getPolicies((SearchFilter)
Mockito.any())).thenReturn(policies);
+ String zoneName = "zone-1";
+
Mockito.when(serviceREST.getPolicyByName(Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenReturn(rangerPolicy);
Mockito.doNothing().when(serviceREST).deletePolicy(Id);
- publicAPIsv2.deletePolicyByName(serviceName, policyName,
request);
- Mockito.verify(serviceREST).getPolicies((SearchFilter)
Mockito.any());
+ publicAPIsv2.deletePolicyByName(serviceName, policyName,
zoneName, request);
+
Mockito.verify(serviceREST).getPolicyByName(Mockito.anyString(),Mockito.anyString(),Mockito.anyString());
Mockito.verify(serviceREST).deletePolicy(Id);
}
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 5e3b1908d..9d17553a4 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
@@ -55,6 +55,7 @@ import org.apache.ranger.common.StringUtil;
import org.apache.ranger.common.UserSessionBase;
import org.apache.ranger.common.db.RangerTransactionSynchronizationAdapter;
import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.db.XXPolicyDao;
import org.apache.ranger.db.XXSecurityZoneDao;
import org.apache.ranger.db.XXSecurityZoneRefServiceDao;
import org.apache.ranger.db.XXSecurityZoneRefTagServiceDao;
@@ -447,6 +448,22 @@ public class TestServiceREST {
return grantRevokeRequest;
}
+ private XXPolicy getXXPolicy() {
+ XXPolicy xxPolicy = new XXPolicy();
+ xxPolicy.setId(Id);
+ xxPolicy.setName("HDFS_1-1-20150316062453");
+ xxPolicy.setAddedByUserId(Id);
+ xxPolicy.setDescription("policy");
+ xxPolicy.setGuid("policyguid");
+ xxPolicy.setCreateTime(new Date());
+ xxPolicy.setIsAuditEnabled(true);
+ xxPolicy.setIsEnabled(true);
+ xxPolicy.setService(1L);
+ xxPolicy.setUpdatedByUserId(Id);
+ xxPolicy.setUpdateTime(new Date());
+ return xxPolicy;
+ }
+
@Test
public void test1createServiceDef() throws Exception {
RangerServiceDef rangerServiceDef = rangerServiceDef();
@@ -2675,4 +2692,41 @@ public class TestServiceREST {
serviceREST.resetPolicyCache(serviceName);
Mockito.verify(restErrorUtil).createRESTException(Mockito.anyInt(),
Mockito.anyString(), Mockito.anyBoolean());
}
+
+ @Test
+ public void test80GetPolicyByNameAndServiceNameWithZoneName() throws
Exception {
+ RangerPolicy rangerPolicy = rangerPolicy();
+ RangerService rangerService = rangerService();
+ XXPolicy xxPolicy = new XXPolicy();
+ String serviceName = rangerService.getName();
+ String policyName = rangerPolicy.getName();
+ String zoneName = "zone-1";
+ XXPolicyDao xXPolicyDao = Mockito.mock(XXPolicyDao.class);
+ Mockito.when(daoManager.getXXPolicy()).thenReturn(xXPolicyDao);
+
Mockito.when(daoManager.getXXPolicy().findPolicy(policyName,serviceName,zoneName)).thenReturn(xxPolicy);
+
Mockito.when(policyService.getPopulatedViewObject(xxPolicy)).thenReturn(rangerPolicy);
+ RangerPolicy dbRangerPolicy =
serviceREST.getPolicyByName(serviceName, policyName, zoneName);
+ Assert.assertNotNull(dbRangerPolicy);
+ Assert.assertEquals(dbRangerPolicy, rangerPolicy);
+ Assert.assertEquals(dbRangerPolicy.getId(),
rangerPolicy.getId());
+ Assert.assertEquals(dbRangerPolicy.getName(),
rangerPolicy.getName());
+ }
+
+ @Test
+ public void test81GetPolicyByNameAndServiceNameWithZoneNameIsNull()
throws Exception {
+ RangerPolicy rangerPolicy = rangerPolicy();
+ RangerService rangerService = rangerService();
+ XXPolicy xxPolicy = new XXPolicy();
+ String serviceName = rangerService.getName();
+ String policyName = rangerPolicy.getName();
+ XXPolicyDao xXPolicyDao = Mockito.mock(XXPolicyDao.class);
+ Mockito.when(daoManager.getXXPolicy()).thenReturn(xXPolicyDao);
+
Mockito.when(daoManager.getXXPolicy().findPolicy(policyName,serviceName,null)).thenReturn(xxPolicy);
+
Mockito.when(policyService.getPopulatedViewObject(xxPolicy)).thenReturn(rangerPolicy);
+ RangerPolicy dbRangerPolicy =
serviceREST.getPolicyByName(serviceName, policyName, null);
+ Assert.assertNotNull(dbRangerPolicy);
+ Assert.assertEquals(dbRangerPolicy, rangerPolicy);
+ Assert.assertEquals(dbRangerPolicy.getId(),
rangerPolicy.getId());
+ Assert.assertEquals(dbRangerPolicy.getName(),
rangerPolicy.getName());
+ }
}