diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java index 106f76f46e..cfcd2a2693 100644 --- a/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java +++ b/proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidator.java @@ -52,17 +52,14 @@ public class GrpcValidator { } public void validateTopic(String topicName) { - if (StringUtils.isBlank(topicName)) { - throw new GrpcProxyException(Code.ILLEGAL_TOPIC, "topic name cannot be empty"); - } - if (TopicValidator.isSystemTopic(topicName)) { - throw new GrpcProxyException(Code.ILLEGAL_TOPIC, "cannot access system topic"); - } try { Validators.checkTopic(topicName); } catch (MQClientException mqClientException) { throw new GrpcProxyException(Code.ILLEGAL_TOPIC, mqClientException.getErrorMessage()); } + if (TopicValidator.isSystemTopic(topicName)) { + throw new GrpcProxyException(Code.ILLEGAL_TOPIC, "cannot access system topic"); + } } public void validateConsumerGroup(Resource consumerGroup) { @@ -70,17 +67,14 @@ public class GrpcValidator { } public void validateConsumerGroup(String consumerGroupName) { - if (StringUtils.isBlank(consumerGroupName)) { - throw new GrpcProxyException(Code.ILLEGAL_CONSUMER_GROUP, "consumer group cannot be empty"); - } - if (MixAll.isSysConsumerGroup(consumerGroupName)) { - throw new GrpcProxyException(Code.ILLEGAL_CONSUMER_GROUP, "cannot use system consumer group"); - } try { Validators.checkGroup(consumerGroupName); } catch (MQClientException mqClientException) { throw new GrpcProxyException(Code.ILLEGAL_CONSUMER_GROUP, mqClientException.getErrorMessage()); } + if (MixAll.isSysConsumerGroup(consumerGroupName)) { + throw new GrpcProxyException(Code.ILLEGAL_CONSUMER_GROUP, "cannot use system consumer group"); + } } public void validateTopicAndConsumerGroup(Resource topic, Resource consumerGroup) { diff --git a/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidatorTest.java b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidatorTest.java new file mode 100644 index 0000000000..df42844e95 --- /dev/null +++ b/proxy/src/test/java/org/apache/rocketmq/proxy/grpc/v2/common/GrpcValidatorTest.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.rocketmq.proxy.grpc.v2.common; + +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertThrows; + +public class GrpcValidatorTest { + + private GrpcValidator grpcValidator; + + @Before + public void before() { + this.grpcValidator = GrpcValidator.getInstance(); + } + + @Test + public void testValidateTopic() { + assertThrows(GrpcProxyException.class, () -> grpcValidator.validateTopic("")); + assertThrows(GrpcProxyException.class, () -> grpcValidator.validateTopic("rmq_sys_xxxx")); + grpcValidator.validateTopic("topicName"); + } + + @Test + public void testValidateConsumerGroup() { + assertThrows(GrpcProxyException.class, () -> grpcValidator.validateConsumerGroup("")); + assertThrows(GrpcProxyException.class, () -> grpcValidator.validateConsumerGroup("CID_RMQ_SYS_xxxx")); + grpcValidator.validateConsumerGroup("consumerGroupName"); + } +}