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 d6dd637af fix: validate topic deletion names (#2423)
d6dd637af is described below

commit d6dd637afadd469de68b4def0e610926b0bc30fd
Author: xdz997 <[email protected]>
AuthorDate: Fri Aug 21 17:41:49 2026 +0800

    fix: validate topic deletion names (#2423)
---
 .../rocketmq/studio/instance/topic/MetadataService.java |  2 +-
 .../studio/instance/topic/MetadataServiceTest.java      | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/instance/topic/MetadataService.java
 
b/server/src/main/java/org/apache/rocketmq/studio/instance/topic/MetadataService.java
index 2b61fb0b4..bfe9a6a44 100644
--- 
a/server/src/main/java/org/apache/rocketmq/studio/instance/topic/MetadataService.java
+++ 
b/server/src/main/java/org/apache/rocketmq/studio/instance/topic/MetadataService.java
@@ -117,7 +117,7 @@ public class MetadataService {
 
     public void deleteTopic(String instanceId, String name) {
         instanceId = normalizeInstanceId(instanceId);
-        resolve(instanceId).deleteTopic(instanceId, name);
+        resolve(instanceId).deleteTopic(instanceId, requireName(name, "topic 
name"));
     }
 
 
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/instance/topic/MetadataServiceTest.java
 
b/server/src/test/java/org/apache/rocketmq/studio/instance/topic/MetadataServiceTest.java
index b02659653..0812728e3 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/instance/topic/MetadataServiceTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/instance/topic/MetadataServiceTest.java
@@ -67,6 +67,7 @@ class MetadataServiceTest {
     void routeBlankInstanceIdsToApacheProvider() {
         
lenient().when(providerRegistry.forVendor(InstanceVendor.APACHE)).thenReturn(apacheProvider);
         
lenient().when(apacheProvider.vendor()).thenReturn(InstanceVendor.APACHE);
+        
lenient().when(providerRegistry.byInstanceId("instance-a")).thenReturn(java.util.Optional.of(apacheProvider));
         
lenient().when(instanceRepository.findByIdentifier(org.mockito.ArgumentMatchers.anyString()))
                 .thenReturn(java.util.Optional.empty());
     }
@@ -163,6 +164,22 @@ class MetadataServiceTest {
         verify(apacheProvider).deleteTopic(null, "topic-to-delete");
     }
 
+    @Test
+    void deleteTopicShouldTrimTopicNameBeforeProviderResolution() {
+        metadataService.deleteTopic("instance-a", "  topic-to-delete  ");
+
+        verify(apacheProvider).deleteTopic("instance-a", "topic-to-delete");
+    }
+
+    @Test
+    void deleteTopicShouldRejectBlankNameBeforeProviderResolution() {
+        assertThatThrownBy(() -> metadataService.deleteTopic("instance-a", " 
"))
+                .isInstanceOf(BusinessException.class)
+                .hasMessage("topic name is required");
+
+        verifyNoInteractions(apacheProvider);
+    }
+
     @Test
     void topicRuntimeDiagnosticsShouldDelegateWithSelectedInstance() {
         BrokerRouteVO route = 
BrokerRouteVO.builder().brokerName("broker-a").build();

Reply via email to