|
@@ -28,26 +28,32 @@ import org.apache.hadoop.security.UserGroupInformation;
|
|
|
import org.junit.Assert;
|
|
|
import org.junit.Test;
|
|
|
import org.junit.runner.RunWith;
|
|
|
+import org.mockito.stubbing.Answer;
|
|
|
import org.powermock.api.mockito.PowerMockito;
|
|
|
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
|
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
|
|
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
|
|
|
import org.powermock.modules.junit4.PowerMockRunner;
|
|
|
|
|
|
@RunWith(PowerMockRunner.class)
|
|
|
-@SuppressStaticInitializationFor("org.apache.dolphinscheduler.spi.utils.PropertyUtils")
|
|
|
+@SuppressStaticInitializationFor(
|
|
|
+ value = {"org.apache.dolphinscheduler.spi.utils.PropertyUtils", "org.apache.hadoop.security.UserGroupInformation"}
|
|
|
+)
|
|
|
@PrepareForTest(value = {PropertyUtils.class, UserGroupInformation.class, CommonUtils.class, PasswordUtils.class})
|
|
|
+@PowerMockIgnore({"jdk.xml.*", "org.apache.hadoop.security.*"})
|
|
|
public class CommonUtilsTest {
|
|
|
|
|
|
@Test
|
|
|
public void testGetKerberosStartupState() {
|
|
|
PowerMockito.mockStatic(CommonUtils.class);
|
|
|
- PowerMockito.when(CommonUtils.getKerberosStartupState()).thenReturn(false);
|
|
|
+ PowerMockito.when(CommonUtils.getKerberosStartupState()).thenAnswer((Answer<Boolean>) invocation -> false);
|
|
|
boolean kerberosStartupState = CommonUtils.getKerberosStartupState();
|
|
|
Assert.assertFalse(kerberosStartupState);
|
|
|
|
|
|
PowerMockito.mockStatic(PropertyUtils.class);
|
|
|
- PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenReturn("HDFS");
|
|
|
- PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, true)).thenReturn(Boolean.TRUE);
|
|
|
+ PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenAnswer((Answer<String>) invocation -> "HDFS");
|
|
|
+ PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, true))
|
|
|
+ .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
|
|
|
kerberosStartupState = CommonUtils.getKerberosStartupState();
|
|
|
Assert.assertFalse(kerberosStartupState);
|
|
|
}
|
|
@@ -56,34 +62,43 @@ public class CommonUtilsTest {
|
|
|
public void testLoadKerberosConf() {
|
|
|
try {
|
|
|
PowerMockito.mockStatic(PropertyUtils.class);
|
|
|
- PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenReturn("HDFS");
|
|
|
- PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false)).thenReturn(Boolean.TRUE);
|
|
|
- PowerMockito.when(PropertyUtils.getString(Constants.JAVA_SECURITY_KRB5_CONF_PATH)).thenReturn("/opt/krb5.conf");
|
|
|
- PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_USERNAME)).thenReturn("hdfs-mycluster@ESZ.COM");
|
|
|
- PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_PATH)).thenReturn("/opt/hdfs.headless.keytab");
|
|
|
+ PowerMockito.when(PropertyUtils.getUpperCaseString(Constants.RESOURCE_STORAGE_TYPE)).thenAnswer((Answer<String>) invocation -> "HDFS");
|
|
|
+ PowerMockito.when(PropertyUtils.getBoolean(Constants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false))
|
|
|
+ .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
|
|
|
+ PowerMockito.when(PropertyUtils.getString(Constants.JAVA_SECURITY_KRB5_CONF_PATH))
|
|
|
+ .thenAnswer((Answer<String>) invocation -> "/opt/krb5.conf");
|
|
|
+ PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_USERNAME))
|
|
|
+ .thenAnswer((Answer<String>) invocation -> "hdfs-mycluster@ESZ.COM");
|
|
|
+ PowerMockito.when(PropertyUtils.getString(Constants.LOGIN_USER_KEY_TAB_PATH))
|
|
|
+ .thenAnswer((Answer<String>) invocation -> "/opt/hdfs.headless.keytab");
|
|
|
|
|
|
PowerMockito.mockStatic(UserGroupInformation.class);
|
|
|
- boolean result = CommonUtils.loadKerberosConf(new Configuration());
|
|
|
+ Configuration configuration = PowerMockito.mock(Configuration.class);
|
|
|
+ PowerMockito.whenNew(Configuration.class).withNoArguments().thenReturn(configuration);
|
|
|
+
|
|
|
+ boolean result = CommonUtils.loadKerberosConf(configuration);
|
|
|
Assert.assertTrue(result);
|
|
|
|
|
|
CommonUtils.loadKerberosConf(null, null, null);
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
- Assert.fail("load Kerberos Conf failed");
|
|
|
+ Assert.fail("load Kerberos Conf failed" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void encodePassword() {
|
|
|
PowerMockito.mockStatic(PropertyUtils.class);
|
|
|
- PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false)).thenReturn(Boolean.TRUE);
|
|
|
+ PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
|
|
|
+ .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
|
|
|
|
|
|
Assert.assertEquals("", PasswordUtils.encodePassword(""));
|
|
|
Assert.assertEquals("bnVsbE1USXpORFUy", PasswordUtils.encodePassword("123456"));
|
|
|
Assert.assertEquals("bnVsbElWRkJXbGhUVjBBPQ==", PasswordUtils.encodePassword("!QAZXSW@"));
|
|
|
Assert.assertEquals("bnVsbE5XUm1aMlZ5S0VBPQ==", PasswordUtils.encodePassword("5dfger(@"));
|
|
|
|
|
|
- PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false)).thenReturn(Boolean.FALSE);
|
|
|
+ PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
|
|
|
+ .thenAnswer((Answer<Boolean>) invocation -> Boolean.FALSE);
|
|
|
|
|
|
Assert.assertEquals("", PasswordUtils.encodePassword(""));
|
|
|
Assert.assertEquals("123456", PasswordUtils.encodePassword("123456"));
|
|
@@ -95,7 +110,8 @@ public class CommonUtilsTest {
|
|
|
@Test
|
|
|
public void decodePassword() {
|
|
|
PowerMockito.mockStatic(PropertyUtils.class);
|
|
|
- PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false)).thenReturn(Boolean.TRUE);
|
|
|
+ PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
|
|
|
+ .thenAnswer((Answer<Boolean>) invocation -> Boolean.TRUE);
|
|
|
|
|
|
PropertyUtils.setValue(DATASOURCE_ENCRYPTION_ENABLE, "true");
|
|
|
|
|
@@ -109,7 +125,8 @@ public class CommonUtilsTest {
|
|
|
Assert.assertEquals("!QAZXSW@", PasswordUtils.decodePassword("bnVsbElWRkJXbGhUVjBBPQ=="));
|
|
|
Assert.assertEquals("5dfger(@", PasswordUtils.decodePassword("bnVsbE5XUm1aMlZ5S0VBPQ=="));
|
|
|
|
|
|
- PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false)).thenReturn(Boolean.FALSE);
|
|
|
+ PowerMockito.when(PropertyUtils.getBoolean(DATASOURCE_ENCRYPTION_ENABLE, false))
|
|
|
+ .thenAnswer((Answer<Boolean>) invocation -> Boolean.FALSE);
|
|
|
|
|
|
PowerMockito.when(PasswordUtils.decodePassword("123456")).thenReturn("123456");
|
|
|
PowerMockito.when(PasswordUtils.decodePassword("!QAZXSW@")).thenReturn("!QAZXSW@");
|