From e62ccfadc371f177d334410db9449cb4460e195e Mon Sep 17 00:00:00 2001 From: SrikarMannepalli Date: Mon, 5 Sep 2022 10:37:29 +0530 Subject: [PATCH] fix: add request validation for system exclude rule --- .../SpanProcessingConfigRequestValidator.java | 8 ++++++++ .../SpanProcessingRequestValidatorTest.java | 19 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/span-processing-config-service-impl/src/main/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingConfigRequestValidator.java b/span-processing-config-service-impl/src/main/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingConfigRequestValidator.java index 8464555b..26226ac5 100644 --- a/span-processing-config-service-impl/src/main/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingConfigRequestValidator.java +++ b/span-processing-config-service-impl/src/main/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingConfigRequestValidator.java @@ -3,6 +3,7 @@ import static org.hypertrace.config.validation.GrpcValidatorUtils.printMessage; import static org.hypertrace.config.validation.GrpcValidatorUtils.validateNonDefaultPresenceOrThrow; import static org.hypertrace.config.validation.GrpcValidatorUtils.validateRequestContextOrThrow; +import static org.hypertrace.span.processing.config.service.v1.RuleType.RULE_TYPE_SYSTEM; import com.google.common.base.Strings; import com.google.re2j.Pattern; @@ -39,6 +40,13 @@ public void validateOrThrow( public void validateOrThrow(RequestContext requestContext, CreateExcludeSpanRuleRequest request) { validateRequestContextOrThrow(requestContext); this.validateData(request.getRuleInfo()); + if (RULE_TYPE_SYSTEM.equals(request.getRuleInfo().getType())) { + throw Status.INVALID_ARGUMENT + .withDescription( + String.format( + "Invalid rule type to create system level rule : %s", request.getRuleInfo())) + .asRuntimeException(); + } } public void validateOrThrow(RequestContext requestContext, UpdateExcludeSpanRuleRequest request) { diff --git a/span-processing-config-service-impl/src/test/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingRequestValidatorTest.java b/span-processing-config-service-impl/src/test/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingRequestValidatorTest.java index 20686e77..5c530d23 100644 --- a/span-processing-config-service-impl/src/test/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingRequestValidatorTest.java +++ b/span-processing-config-service-impl/src/test/java/org/hypertrace/span/processing/config/service/validation/SpanProcessingRequestValidatorTest.java @@ -1,5 +1,7 @@ package org.hypertrace.span.processing.config.service.validation; +import static org.hypertrace.span.processing.config.service.v1.RuleType.RULE_TYPE_SYSTEM; +import static org.hypertrace.span.processing.config.service.v1.RuleType.RULE_TYPE_USER; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -101,7 +103,21 @@ void validatesExcludeSpanRuleCreateRequest() { validator.validateOrThrow( mockRequestContext, CreateExcludeSpanRuleRequest.newBuilder() - .setRuleInfo(ExcludeSpanRuleInfo.newBuilder().build()) + .setRuleInfo(ExcludeSpanRuleInfo.newBuilder().setType(RULE_TYPE_USER).build()) + .build())); + + assertInvalidArgStatusContaining( + "Invalid rule type to create system level rule", + () -> + validator.validateOrThrow( + mockRequestContext, + CreateExcludeSpanRuleRequest.newBuilder() + .setRuleInfo( + ExcludeSpanRuleInfo.newBuilder() + .setName("name") + .setType(RULE_TYPE_SYSTEM) + .setFilter(buildTestFilter()) + .build()) .build())); assertDoesNotThrow( @@ -114,6 +130,7 @@ void validatesExcludeSpanRuleCreateRequest() { .setName("name") .setDisabled(true) .setFilter(buildTestFilter()) + .setType(RULE_TYPE_USER) .build()) .build())); }