|
@@ -23,7 +23,6 @@ import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.PrintStream;
|
|
|
-import java.net.URLConnection;
|
|
|
import java.net.HttpURLConnection;
|
|
|
import java.net.URL;
|
|
|
import java.util.Arrays;
|
|
@@ -310,6 +309,9 @@ public class TestHttpServer {
|
|
|
Configuration conf = new Configuration();
|
|
|
conf.setBoolean(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION,
|
|
|
true);
|
|
|
+ conf.setBoolean(
|
|
|
+ CommonConfigurationKeys.HADOOP_SECURITY_INSTRUMENTATION_REQUIRES_ADMIN,
|
|
|
+ true);
|
|
|
conf.set(HttpServer.FILTER_INITIALIZER_PROPERTY,
|
|
|
DummyFilterInitializer.class.getName());
|
|
|
|
|
@@ -395,5 +397,31 @@ public class TestHttpServer {
|
|
|
Assert.assertTrue(HttpServer.hasAdministratorAccess(context, request, response));
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testRequiresAuthorizationAccess() throws Exception {
|
|
|
+ Configuration conf = new Configuration();
|
|
|
+ ServletContext context = Mockito.mock(ServletContext.class);
|
|
|
+ Mockito.when(context.getAttribute(HttpServer.CONF_CONTEXT_ATTRIBUTE))
|
|
|
+ .thenReturn(conf);
|
|
|
+ HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
|
|
|
+ HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
|
|
|
|
|
|
+ // requires admin access to instrumentation, FALSE by default
|
|
|
+ Assert.assertTrue(HttpServer.isInstrumentationAccessAllowed(context,
|
|
|
+ request, response));
|
|
|
+
|
|
|
+ // requires admin access to instrumentation, TRUE
|
|
|
+ conf.setBoolean(
|
|
|
+ CommonConfigurationKeys.HADOOP_SECURITY_INSTRUMENTATION_REQUIRES_ADMIN,
|
|
|
+ true);
|
|
|
+ conf.setBoolean(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION, true);
|
|
|
+ AccessControlList acls = Mockito.mock(AccessControlList.class);
|
|
|
+ Mockito.when(acls.isUserAllowed(Mockito.<UserGroupInformation> any()))
|
|
|
+ .thenReturn(false);
|
|
|
+ Mockito.when(context.getAttribute(HttpServer.ADMINS_ACL)).thenReturn(acls);
|
|
|
+ Assert.assertFalse(HttpServer.isInstrumentationAccessAllowed(context,
|
|
|
+ request, response));
|
|
|
+ }
|
|
|
+
|
|
|
}
|