This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git


The following commit(s) were added to refs/heads/rocketmq-studio by this push:
     new 7c04959a fix(metrics): normalize auth modes with root locale (#1488)
7c04959a is described below

commit 7c04959a5e25a4320818c890fa3a69d1a40f5bcf
Author: yyqdbngt <[email protected]>
AuthorDate: Tue Aug 11 17:55:26 2026 +0800

    fix(metrics): normalize auth modes with root locale (#1488)
    
    Co-authored-by: yyqdbngt <[email protected]>
---
 .../studio/cluster/metrics/MetricsService.java     |  3 +-
 .../studio/cluster/metrics/MetricsServiceTest.java | 37 ++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
 
b/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
index 5a3c94a6..04ceec22 100644
--- 
a/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
+++ 
b/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/MetricsService.java
@@ -28,6 +28,7 @@ import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -119,7 +120,7 @@ public class MetricsService {
         if (!StringUtils.hasText(auth)) {
             return "none";
         }
-        return switch (auth.trim().toLowerCase()) {
+        return switch (auth.trim().toLowerCase(Locale.ROOT)) {
             case "basic auth", "basic" -> "basic";
             case "bearer token", "bearer" -> "bearer";
             default -> "none";
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
 
b/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
index 96efdd3e..353d0ab1 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/cluster/metrics/MetricsServiceTest.java
@@ -29,6 +29,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -421,6 +422,42 @@ class MetricsServiceTest {
         verifyNoInteractions(metricsSourceFactory, metricsSource);
     }
 
+    @Test
+    void queryByDataSourceShouldNormalizeAuthIndependentlyOfDefaultLocale() {
+        MetricQueryDTO query = MetricQueryDTO.builder()
+                .metric("cpu")
+                .start(1700000000L)
+                .end(1700003600L)
+                .step("1m")
+                .build();
+        MetricsDataSourceQueryRequest request = new 
MetricsDataSourceQueryRequest();
+        request.setQuery(query);
+        request.setUsername("prom");
+        request.setPassword("secret");
+        DataSourceVO dataSource = DataSourceVO.builder()
+                .key("ds-1")
+                .name("prometheus-prod")
+                .type("prometheus")
+                .url("http://prometheus:9090";)
+                .auth("BASIC")
+                .build();
+        when(settingsService.getDataSource("ds-1")).thenReturn(dataSource);
+        
when(metricsSourceFactory.create(any(MetricsDataSourceConfig.class))).thenReturn(metricsSource);
+        
when(metricsSource.query(any(MetricQueryDTO.class))).thenReturn(metricData("cpu",
 List.of()));
+        Locale originalLocale = Locale.getDefault();
+
+        try {
+            Locale.setDefault(Locale.forLanguageTag("tr-TR"));
+            metricsService.queryByDataSource("ds-1", request);
+        } finally {
+            Locale.setDefault(originalLocale);
+        }
+
+        ArgumentCaptor<MetricsDataSourceConfig> configCaptor = 
ArgumentCaptor.forClass(MetricsDataSourceConfig.class);
+        verify(metricsSourceFactory).create(configCaptor.capture());
+        assertThat(configCaptor.getValue().getAuthType()).isEqualTo("basic");
+    }
+
     @Test
     void queryByDataSourceShouldRejectMissingKey() {
         MetricsDataSourceQueryRequest request = new 
MetricsDataSourceQueryRequest();

Reply via email to