Skip to content

Commit 88b52ec

Browse files
committed
ut
1 parent 343f070 commit 88b52ec

File tree

2 files changed

+113
-8
lines changed

2 files changed

+113
-8
lines changed

authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationPlugin.java

+22-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ public abstract class RangerAuthorizationPlugin
7777

7878
protected String metalake;
7979
protected final String rangerServiceName;
80-
protected final RangerClientExtension rangerClient;
81-
protected final RangerHelper rangerHelper;
80+
protected RangerClientExtension rangerClient;
81+
protected RangerHelper rangerHelper;
8282
@VisibleForTesting public final String rangerAdminName;
8383

8484
protected RangerAuthorizationPlugin(String metalake, Map<String, String> config) {
@@ -108,6 +108,26 @@ public String getMetalake() {
108108
return metalake;
109109
}
110110

111+
@VisibleForTesting
112+
public RangerHelper getRangerHelper() {
113+
return rangerHelper;
114+
}
115+
116+
@VisibleForTesting
117+
public void setRangerHelper(RangerHelper rangerHelper) {
118+
this.rangerHelper = rangerHelper;
119+
}
120+
121+
@VisibleForTesting
122+
public RangerClientExtension getRangerClient() {
123+
return rangerClient;
124+
}
125+
126+
@VisibleForTesting
127+
public void setRangerClient(RangerClientExtension rangerClient) {
128+
this.rangerClient = rangerClient;
129+
}
130+
111131
/**
112132
* Set the Ranger policy resource defines rule.
113133
*

authorizations/authorization-ranger/src/test/java/org/apache/gravitino/authorization/ranger/integration/test/RangerHiveIT.java

+91-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import static org.apache.gravitino.authorization.ranger.integration.test.RangerITEnv.currentFunName;
2222
import static org.apache.gravitino.authorization.ranger.integration.test.RangerITEnv.rangerClient;
2323
import static org.apache.gravitino.authorization.ranger.integration.test.RangerITEnv.verifyRoleInRanger;
24+
import static org.mockito.ArgumentMatchers.any;
25+
import static org.mockito.Mockito.when;
2426

2527
import com.google.common.base.Joiner;
2628
import com.google.common.collect.ImmutableList;
@@ -48,24 +50,30 @@
4850
import org.apache.gravitino.authorization.SecurableObject;
4951
import org.apache.gravitino.authorization.SecurableObjects;
5052
import org.apache.gravitino.authorization.ranger.RangerAuthorizationPlugin;
53+
import org.apache.gravitino.authorization.ranger.RangerClientExtension;
5154
import org.apache.gravitino.authorization.ranger.RangerHadoopSQLMetadataObject;
5255
import org.apache.gravitino.authorization.ranger.RangerHadoopSQLSecurableObject;
5356
import org.apache.gravitino.authorization.ranger.RangerHelper;
5457
import org.apache.gravitino.authorization.ranger.RangerPrivileges;
5558
import org.apache.gravitino.authorization.ranger.reference.RangerDefines;
59+
import org.apache.gravitino.authorization.ranger.reference.VXUserList;
60+
import org.apache.gravitino.exceptions.AuthorizationPluginException;
5661
import org.apache.gravitino.integration.test.util.GravitinoITUtils;
5762
import org.apache.gravitino.meta.AuditInfo;
5863
import org.apache.gravitino.meta.GroupEntity;
5964
import org.apache.gravitino.meta.RoleEntity;
6065
import org.apache.gravitino.meta.UserEntity;
6166
import org.apache.ranger.RangerServiceException;
6267
import org.apache.ranger.plugin.model.RangerPolicy;
68+
import org.apache.ranger.plugin.model.RangerRole;
69+
import org.glassfish.jersey.internal.guava.Sets;
6370
import org.junit.jupiter.api.AfterAll;
6471
import org.junit.jupiter.api.AfterEach;
6572
import org.junit.jupiter.api.Assertions;
6673
import org.junit.jupiter.api.BeforeAll;
6774
import org.junit.jupiter.api.Tag;
6875
import org.junit.jupiter.api.Test;
76+
import org.mockito.Mockito;
6977
import org.slf4j.Logger;
7078
import org.slf4j.LoggerFactory;
7179

@@ -134,8 +142,24 @@ public RoleEntity mock3TableRole(String roleName) {
134142

135143
// Use the different db.table different privilege to test OnRoleCreated()
136144
@Test
137-
public void testOnRoleCreated() {
145+
public void testOnRoleCreated() throws Exception {
138146
RoleEntity role = mock3TableRole(currentFunName());
147+
148+
// test to throw an exception
149+
RangerClientExtension client = Mockito.mock(RangerClientExtension.class);
150+
RangerClientExtension originClient = rangerAuthHivePlugin.getRangerClient();
151+
rangerAuthHivePlugin.setRangerClient(client);
152+
RangerHelper originHelper = rangerAuthHivePlugin.getRangerHelper();
153+
154+
RangerHelper helper =
155+
new RangerHelper(client, "test", "test", Sets.newHashSet(), Lists.newArrayList());
156+
rangerAuthHivePlugin.setRangerHelper(helper);
157+
when(client.createRole(any(), any())).thenThrow(new RangerServiceException(new Exception("")));
158+
Assertions.assertThrows(
159+
AuthorizationPluginException.class, () -> rangerAuthHivePlugin.onRoleCreated(role));
160+
rangerAuthHivePlugin.setRangerClient(originClient);
161+
rangerAuthHivePlugin.setRangerHelper(originHelper);
162+
139163
Assertions.assertTrue(rangerAuthHivePlugin.onRoleCreated(role));
140164
verifyRoleInRanger(rangerAuthHivePlugin, role);
141165

@@ -259,7 +283,7 @@ public void testOnDenyRoleCreatedCatalog() {
259283
}
260284

261285
@Test
262-
public void testOnRoleDeleted() {
286+
public void testOnRoleDeleted() throws Exception {
263287
// prepare to create a role
264288
RoleEntity role = mock3TableRole(currentFunName());
265289
Assertions.assertTrue(rangerAuthHivePlugin.onRoleCreated(role));
@@ -272,6 +296,23 @@ public void testOnRoleDeleted() {
272296

273297
// Repeat to delete the same role to verify the idempotent operation
274298
Assertions.assertTrue(rangerAuthHivePlugin.onRoleDeleted(role));
299+
300+
// test to throw an exception
301+
RangerClientExtension client = Mockito.mock(RangerClientExtension.class);
302+
RangerClientExtension originClient = rangerAuthHivePlugin.getRangerClient();
303+
RangerHelper originHelper = rangerAuthHivePlugin.getRangerHelper();
304+
rangerAuthHivePlugin.setRangerClient(client);
305+
306+
RangerHelper helper = Mockito.mock(RangerHelper.class);
307+
rangerAuthHivePlugin.setRangerHelper(helper);
308+
Mockito.doThrow(new RangerServiceException(new Exception("test")))
309+
.when(client)
310+
.deleteRole(any(), any(), any());
311+
Mockito.when(helper.getRangerRole(any())).thenReturn(Mockito.mock(RangerRole.class));
312+
Assertions.assertThrows(
313+
AuthorizationPluginException.class, () -> rangerAuthHivePlugin.onRoleDeleted(role));
314+
rangerAuthHivePlugin.setRangerClient(originClient);
315+
rangerAuthHivePlugin.setRangerHelper(originHelper);
275316
}
276317

277318
@Test
@@ -1089,7 +1130,7 @@ public void testRoleChangeCombinedOperation() {
10891130
}
10901131

10911132
@Test
1092-
public void testOnGrantedRolesToUser() {
1133+
public void testOnGrantedRolesToUser() throws Exception {
10931134
// prepare to create a role
10941135
RoleEntity role = mock3TableRole(currentFunName());
10951136
Assertions.assertTrue(rangerAuthHivePlugin.onRoleCreated(role));
@@ -1113,6 +1154,17 @@ public void testOnGrantedRolesToUser() {
11131154
rangerAuthHivePlugin.onGrantedRolesToUser(Lists.newArrayList(role), userEntity1));
11141155
verifyRoleInRanger(rangerAuthHivePlugin, role, Lists.newArrayList(userName1));
11151156

1157+
// test to throw an exception
1158+
RangerClientExtension client = Mockito.mock(RangerClientExtension.class);
1159+
RangerClientExtension originClient = rangerAuthHivePlugin.getRangerClient();
1160+
rangerAuthHivePlugin.setRangerClient(client);
1161+
when(client.searchUser(any())).thenReturn(Mockito.mock(VXUserList.class));
1162+
when(client.grantRole(any(), any())).thenThrow(new AuthorizationPluginException("test"));
1163+
Assertions.assertThrows(
1164+
AuthorizationPluginException.class,
1165+
() -> rangerAuthHivePlugin.onGrantedRolesToUser(Lists.newArrayList(role), userEntity1));
1166+
rangerAuthHivePlugin.setRangerClient(originClient);
1167+
11161168
// granted a role to the user2
11171169
String userName2 = "user2";
11181170
UserEntity userEntity2 =
@@ -1131,7 +1183,7 @@ public void testOnGrantedRolesToUser() {
11311183
}
11321184

11331185
@Test
1134-
public void testOnRevokedRolesFromUser() {
1186+
public void testOnRevokedRolesFromUser() throws Exception {
11351187
// prepare to create a role
11361188
RoleEntity role = mock3TableRole(currentFunName());
11371189
Assertions.assertTrue(rangerAuthHivePlugin.onRoleCreated(role));
@@ -1158,10 +1210,21 @@ public void testOnRevokedRolesFromUser() {
11581210
Assertions.assertTrue(
11591211
rangerAuthHivePlugin.onRevokedRolesFromUser(Lists.newArrayList(role), userEntity1));
11601212
verifyRoleInRanger(rangerAuthHivePlugin, role, null, Lists.newArrayList(userName1));
1213+
1214+
// test to throw an exception
1215+
RangerClientExtension client = Mockito.mock(RangerClientExtension.class);
1216+
RangerClientExtension originClient = rangerAuthHivePlugin.getRangerClient();
1217+
rangerAuthHivePlugin.setRangerClient(client);
1218+
when(client.searchUser(any())).thenReturn(Mockito.mock(VXUserList.class));
1219+
when(client.revokeRole(any(), any())).thenThrow(new AuthorizationPluginException("test"));
1220+
Assertions.assertThrows(
1221+
AuthorizationPluginException.class,
1222+
() -> rangerAuthHivePlugin.onRevokedRolesFromUser(Lists.newArrayList(role), userEntity1));
1223+
rangerAuthHivePlugin.setRangerClient(originClient);
11611224
}
11621225

11631226
@Test
1164-
public void testOnGrantedRolesToGroup() {
1227+
public void testOnGrantedRolesToGroup() throws Exception {
11651228
// prepare to create a role
11661229
RoleEntity role = mock3TableRole(currentFunName());
11671230
Assertions.assertTrue(rangerAuthHivePlugin.onRoleCreated(role));
@@ -1185,6 +1248,17 @@ public void testOnGrantedRolesToGroup() {
11851248
rangerAuthHivePlugin.onGrantedRolesToGroup(Lists.newArrayList(role), groupEntity1));
11861249
verifyRoleInRanger(rangerAuthHivePlugin, role, null, null, Lists.newArrayList(groupName1));
11871250

1251+
// test to throw an exception
1252+
RangerClientExtension client = Mockito.mock(RangerClientExtension.class);
1253+
RangerClientExtension originClient = rangerAuthHivePlugin.getRangerClient();
1254+
rangerAuthHivePlugin.setRangerClient(client);
1255+
when(client.createGroup(any())).thenReturn(true);
1256+
when(client.grantRole(any(), any())).thenThrow(new AuthorizationPluginException("test"));
1257+
Assertions.assertThrows(
1258+
AuthorizationPluginException.class,
1259+
() -> rangerAuthHivePlugin.onGrantedRolesToGroup(Lists.newArrayList(role), groupEntity1));
1260+
rangerAuthHivePlugin.setRangerClient(originClient);
1261+
11881262
// granted a role to the group2
11891263
String groupName2 = "group2";
11901264
GroupEntity groupEntity2 =
@@ -1204,7 +1278,7 @@ public void testOnGrantedRolesToGroup() {
12041278
}
12051279

12061280
@Test
1207-
public void testOnRevokedRolesFromGroup() {
1281+
public void testOnRevokedRolesFromGroup() throws Exception {
12081282
// prepare to create a role
12091283
RoleEntity role = mock3TableRole(currentFunName());
12101284
Assertions.assertTrue(rangerAuthHivePlugin.onRoleCreated(role));
@@ -1233,6 +1307,17 @@ public void testOnRevokedRolesFromGroup() {
12331307
rangerAuthHivePlugin.onRevokedRolesFromGroup(Lists.newArrayList(role), groupEntity1));
12341308
verifyRoleInRanger(
12351309
rangerAuthHivePlugin, role, null, null, null, Lists.newArrayList(groupName1));
1310+
1311+
// test to throw an exception
1312+
RangerClientExtension client = Mockito.mock(RangerClientExtension.class);
1313+
RangerClientExtension originClient = rangerAuthHivePlugin.getRangerClient();
1314+
rangerAuthHivePlugin.setRangerClient(client);
1315+
when(client.createGroup(any())).thenReturn(true);
1316+
when(client.revokeRole(any(), any())).thenThrow(new AuthorizationPluginException("test"));
1317+
Assertions.assertThrows(
1318+
AuthorizationPluginException.class,
1319+
() -> rangerAuthHivePlugin.onRevokedRolesFromGroup(Lists.newArrayList(role), groupEntity1));
1320+
rangerAuthHivePlugin.setRangerClient(originClient);
12361321
}
12371322

12381323
private void assertFindManagedPolicyItems(Role role, boolean gravitinoPolicyItemExist) {

0 commit comments

Comments
 (0)