LiJie20190102 commented on code in PR #13105:
URL: https://github.com/apache/gravitino/pull/13105#discussion_r4005823919
##########
lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/TestLanceRESTService.java:
##########
@@ -18,22 +18,112 @@
*/
package org.apache.gravitino.lance;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang3.reflect.FieldUtils;
+import org.apache.gravitino.Config;
+import org.apache.gravitino.Configs;
+import org.apache.gravitino.GravitinoEnv;
import org.apache.gravitino.lance.common.config.LanceConfig;
+import org.apache.gravitino.lance.service.LanceServiceIdentityFilter;
import org.apache.gravitino.listener.EventBus;
+import org.apache.gravitino.metrics.MetricsSystem;
import org.apache.gravitino.server.web.HttpAuditFilter;
import org.apache.gravitino.server.web.JettyServer;
import org.apache.gravitino.server.web.JettyServerConfig;
import org.apache.gravitino.server.web.JettyServerTestUtils;
import org.apache.gravitino.server.web.RequestContextFilter;
import org.eclipse.jetty.servlet.ServletHandler;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
public class TestLanceRESTService {
+ private Config previousConfig;
+ private MetricsSystem previousMetricsSystem;
+ private EventBus previousEventBus;
+
+ @AfterEach
+ public void tearDown() throws Exception {
+ if (previousConfig != null) {
+ FieldUtils.writeField(GravitinoEnv.getInstance(), "config",
previousConfig, true);
+ }
+ if (previousMetricsSystem != null) {
+ FieldUtils.writeField(
+ GravitinoEnv.getInstance(), "metricsSystem", previousMetricsSystem,
true);
+ }
+ if (previousEventBus != null) {
+ FieldUtils.writeField(GravitinoEnv.getInstance(), "eventBus",
previousEventBus, true);
+ }
+ }
+
+ private void injectGravitinoEnv(boolean authorizationEnabled) throws
Exception {
+ previousConfig = (Config) FieldUtils.readField(GravitinoEnv.getInstance(),
"config", true);
+ previousMetricsSystem =
+ (MetricsSystem) FieldUtils.readField(GravitinoEnv.getInstance(),
"metricsSystem", true);
+ previousEventBus =
+ (EventBus) FieldUtils.readField(GravitinoEnv.getInstance(),
"eventBus", true);
+
+ Config mockConfig = mock(Config.class);
+
when(mockConfig.get(Configs.ENABLE_AUTHORIZATION)).thenReturn(authorizationEnabled);
+ FieldUtils.writeField(GravitinoEnv.getInstance(), "config", mockConfig,
true);
+ FieldUtils.writeField(GravitinoEnv.getInstance(), "metricsSystem", new
MetricsSystem(), true);
+ FieldUtils.writeField(
+ GravitinoEnv.getInstance(), "eventBus", new
EventBus(Collections.emptyList()), true);
+ }
+
+ private boolean hasServiceIdentityFilter(LanceRESTService service) throws
Exception {
+ JettyServer server = (JettyServer) FieldUtils.readField(service, "server",
true);
+ ServletHandler servletHandler =
+
JettyServerTestUtils.getServletContextHandler(server).getServletHandler();
+ Set<String> filterPathSpecs =
+ JettyServerTestUtils.filterPathSpecsFor(servletHandler,
LanceServiceIdentityFilter.class);
+ return !filterPathSpecs.isEmpty();
+ }
+
+ /** See GH-13093. The filter must not be registered when authorization is
enabled. */
+ @Test
+ public void testServiceIdentityFilterNotRegisteredWhenAuthorizationEnabled()
throws Exception {
Review Comment:
Yes, the test is in
LanceNamespaceAuthorizationIT.testServiceIdentityFallbackIsRejected (line 253).
It's a modification of the existing testServiceIdentityFallbackIsAuthorized —
the method was renamed and the assertion changed from 200 to 403, since the old
test verified the pre-fix fallback behavior (anonymous → service user → 200).
The @BeforeAll already configures
gravitino.lance-rest.gravitino-simple.user-name to WRITER (line 84), which is a
metalake user with CreateCatalog privilege, so pre-fix this test returns 200
and post-fix returns 403.What do you think?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]