Skip to content

Commit ea5042a

Browse files
RANGER-5343: Add unit test cases for hbase-agent module (#695)
1 parent 6eac7ee commit ea5042a

14 files changed

+4860
-173
lines changed

hbase-agent/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,18 @@
444444
<version>${junit.jupiter.version}</version>
445445
<scope>test</scope>
446446
</dependency>
447+
<dependency>
448+
<groupId>org.mockito</groupId>
449+
<artifactId>mockito-inline</artifactId>
450+
<version>${mockito.version}</version>
451+
<scope>test</scope>
452+
</dependency>
453+
<dependency>
454+
<groupId>org.mockito</groupId>
455+
<artifactId>mockito-junit-jupiter</artifactId>
456+
<version>${mockito.version}</version>
457+
<scope>test</scope>
458+
</dependency>
447459
<dependency>
448460
<groupId>org.slf4j</groupId>
449461
<artifactId>log4j-over-slf4j</artifactId>

hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/AuthorizationSessionTest.java

Lines changed: 328 additions & 96 deletions
Large diffs are not rendered by default.

hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/HbaseAuthUtilsImplTest.java

Lines changed: 133 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,143 @@
1818
*/
1919
package org.apache.ranger.authorization.hbase;
2020

21-
import org.junit.Test;
21+
import org.apache.hadoop.hbase.TableName;
22+
import org.apache.hadoop.hbase.client.RegionInfo;
23+
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
24+
import org.apache.hadoop.hbase.ipc.RpcServer;
25+
import org.apache.hadoop.hbase.regionserver.Region;
26+
import org.apache.hadoop.hbase.security.User;
27+
import org.apache.hadoop.hbase.security.access.Permission;
28+
import org.junit.jupiter.api.Assertions;
29+
import org.junit.jupiter.api.MethodOrderer;
30+
import org.junit.jupiter.api.Test;
31+
import org.junit.jupiter.api.TestMethodOrder;
32+
import org.junit.jupiter.api.extension.ExtendWith;
33+
import org.mockito.MockedStatic;
34+
import org.mockito.Mockito;
35+
import org.mockito.junit.jupiter.MockitoExtension;
2236

23-
import static org.junit.Assert.assertTrue;
37+
import java.io.IOException;
38+
import java.util.Optional;
2439

40+
import static org.mockito.Mockito.mock;
41+
import static org.mockito.Mockito.when;
42+
43+
/**
44+
* @generated by Cursor
45+
* @description <Unit Test for HbaseAuthUtilsImpl class>
46+
*/
47+
@ExtendWith(MockitoExtension.class)
48+
@TestMethodOrder(MethodOrderer.MethodName.class)
2549
public class HbaseAuthUtilsImplTest {
2650
@Test
27-
public void testIsReadAccess() {
51+
public void test01_isReadWriteExecuteAccess() {
52+
HbaseAuthUtilsImpl authUtils = new HbaseAuthUtilsImpl();
53+
Assertions.assertTrue(authUtils.isReadAccess("read"));
54+
Assertions.assertTrue(authUtils.isWriteAccess("write"));
55+
Assertions.assertTrue(authUtils.isExecuteAccess("execute"));
56+
}
57+
58+
@Test
59+
public void test02_getAccess_forAllActions() {
2860
HbaseAuthUtilsImpl authUtils = new HbaseAuthUtilsImpl();
29-
assertTrue(authUtils.isReadAccess("read"));
30-
assertTrue(authUtils.isWriteAccess("write"));
31-
assertTrue(authUtils.isExecuteAccess("execute"));
61+
Assertions.assertEquals("read", authUtils.getAccess(Permission.Action.READ));
62+
Assertions.assertEquals("write", authUtils.getAccess(Permission.Action.WRITE));
63+
Assertions.assertEquals("create", authUtils.getAccess(Permission.Action.CREATE));
64+
Assertions.assertEquals("admin", authUtils.getAccess(Permission.Action.ADMIN));
65+
Assertions.assertEquals("execute", authUtils.getAccess(Permission.Action.EXEC));
66+
}
67+
68+
@Test
69+
public void test03_getActionName_forKnownAndUnknown() {
70+
HbaseAuthUtilsImpl authUtils = new HbaseAuthUtilsImpl();
71+
Assertions.assertEquals(Permission.Action.READ.name(), authUtils.getActionName("read"));
72+
Assertions.assertEquals(Permission.Action.WRITE.name(), authUtils.getActionName("write"));
73+
Assertions.assertEquals(Permission.Action.CREATE.name(), authUtils.getActionName("create"));
74+
Assertions.assertEquals(Permission.Action.ADMIN.name(), authUtils.getActionName("admin"));
75+
Assertions.assertEquals(Permission.Action.EXEC.name(), authUtils.getActionName("execute"));
76+
Assertions.assertEquals("CUSTOM", authUtils.getActionName("custom"));
77+
}
78+
79+
@Test
80+
public void test04_getTable_fromRegionEnv() {
81+
HbaseAuthUtilsImpl authUtils = new HbaseAuthUtilsImpl();
82+
RegionCoprocessorEnvironment env = mock(RegionCoprocessorEnvironment.class);
83+
RegionInfo regionInfo = mock(RegionInfo.class);
84+
Region region = mock(Region.class);
85+
when(env.getRegion()).thenReturn(region);
86+
when(region.getRegionInfo()).thenReturn(regionInfo);
87+
when(regionInfo.getTable()).thenReturn(TableName.valueOf("t"));
88+
Assertions.assertEquals("t", authUtils.getTable(env));
89+
}
90+
91+
@Test
92+
public void test05_isReadWriteExecuteAccessFalseCases() {
93+
HbaseAuthUtilsImpl authUtils = new HbaseAuthUtilsImpl();
94+
Assertions.assertFalse(authUtils.isReadAccess(null));
95+
Assertions.assertFalse(authUtils.isReadAccess("READ"));
96+
Assertions.assertFalse(authUtils.isWriteAccess("READ"));
97+
Assertions.assertFalse(authUtils.isExecuteAccess("WRITE"));
98+
}
99+
100+
@Test
101+
public void test06_getUser_prefersRequestUser() {
102+
try (MockedStatic<RpcServer> rpcServerMock = Mockito.mockStatic(RpcServer.class)) {
103+
User user = mock(User.class);
104+
rpcServerMock.when(RpcServer::getRequestUser).thenReturn(Optional.of(user));
105+
106+
HbaseUserUtilsImpl utils = new HbaseUserUtilsImpl();
107+
Assertions.assertEquals(user, utils.getUser());
108+
}
109+
}
110+
111+
@Test
112+
public void test07_getUser_usesCurrentWhenRequestUserEmpty() {
113+
try (MockedStatic<RpcServer> rpcMock = Mockito.mockStatic(RpcServer.class);
114+
MockedStatic<User> userStatic = Mockito.mockStatic(User.class)) {
115+
rpcMock.when(RpcServer::getRequestUser).thenReturn(Optional.empty());
116+
117+
User current = mock(User.class);
118+
userStatic.when(User::getCurrent).thenReturn(current);
119+
120+
HbaseUserUtilsImpl utils = new HbaseUserUtilsImpl();
121+
Assertions.assertEquals(current, utils.getUser());
122+
}
123+
}
124+
125+
@Test
126+
public void test08_getUser_handlesIOExceptionFromGetCurrent() {
127+
try (MockedStatic<RpcServer> rpcMock = Mockito.mockStatic(RpcServer.class);
128+
MockedStatic<User> userStatic = Mockito.mockStatic(User.class)) {
129+
rpcMock.when(RpcServer::getRequestUser).thenReturn(Optional.empty());
130+
userStatic.when(User::getCurrent).thenThrow(new IOException("ioe"));
131+
132+
HbaseUserUtilsImpl utils = new HbaseUserUtilsImpl();
133+
Assertions.assertNull(utils.getUser());
134+
}
135+
}
136+
137+
@Test
138+
public void test09_getUserAsString_noArg_returnsEmptyWhenNoUser() {
139+
try (MockedStatic<RpcServer> rpcMock = Mockito.mockStatic(RpcServer.class);
140+
MockedStatic<User> userStatic = Mockito.mockStatic(User.class)) {
141+
rpcMock.when(RpcServer::getRequestUser).thenReturn(Optional.empty());
142+
userStatic.when(User::getCurrent).thenReturn(null);
143+
144+
HbaseUserUtilsImpl utils = new HbaseUserUtilsImpl();
145+
Assertions.assertEquals("", utils.getUserAsString());
146+
}
147+
}
148+
149+
@Test
150+
public void test10_getUserAsString_noArg_returnsShortNameWhenUserPresent() {
151+
try (MockedStatic<RpcServer> rpcMock = Mockito.mockStatic(RpcServer.class)) {
152+
User reqUser = mock(User.class);
153+
when(reqUser.getShortName()).thenReturn("bob");
154+
rpcMock.when(RpcServer::getRequestUser).thenReturn(Optional.of(reqUser));
155+
156+
HbaseUserUtilsImpl utils = new HbaseUserUtilsImpl();
157+
Assertions.assertEquals("bob", utils.getUserAsString());
158+
}
32159
}
33160
}

0 commit comments

Comments
 (0)