b/161441872 Integrate scope validation in extended validator
Change-Id: I82c8c93d7f736c9f87510f1e03d3ce8fac8ffcbc
diff --git a/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidator.java b/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidator.java
index 2679e54..f7b7551 100644
--- a/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidator.java
+++ b/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidator.java
@@ -13,13 +13,16 @@
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final TraversalHelperFactory traversalHelperFactory;
private final ExtensionSchemaValidator schemaValidator;
+ private final ExtensionScopeValidator scopeValidator;
- // TODO(b/161441872) : Inject ExtensionScopeValidator
@Inject
BaseExtendedValidator(
- TraversalHelperFactory traversalHelperFactory, ExtensionSchemaValidator schemaValidator) {
+ TraversalHelperFactory traversalHelperFactory,
+ ExtensionSchemaValidator schemaValidator,
+ ExtensionScopeValidator scopeValidator) {
this.traversalHelperFactory = traversalHelperFactory;
this.schemaValidator = schemaValidator;
+ this.scopeValidator = scopeValidator;
}
@Override
@@ -40,15 +43,13 @@
private ImmutableSet<ExtensionValidationMessage> validateSchemaAndScope(
ImmutableSet<Extension> extensions) {
- return
- extensions.stream()
- .filter(extension -> valueOfExtensionName(extension.getExtensionName()).isPresent())
- .flatMap(
- extension ->
- ImmutableSet.<ExtensionValidationMessage>builder()
- .addAll(extension.validate(schemaValidator)).build().stream())
- .collect(ImmutableSet.toImmutableSet());
-
- // TODO(b/161441872) : Add extension scope validation logic
+ return extensions.stream()
+ .filter(extension -> valueOfExtensionName(extension.getExtensionName()).isPresent())
+ .flatMap(
+ extension ->
+ ImmutableSet.<ExtensionValidationMessage>builder()
+ .addAll(extension.validate(schemaValidator))
+ .addAll(extension.validate(scopeValidator)).build().stream())
+ .collect(ImmutableSet.toImmutableSet());
}
}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidatorTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidatorTest.java
index 0ff912a..86be8d9 100644
--- a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidatorTest.java
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/BaseExtendedValidatorTest.java
@@ -30,8 +30,11 @@
@Mock private OpenApi3 openApiSpec;
@Mock private Extension supportedExtension;
@Mock private Extension unsupportedExtension;
+ @Mock private ExtensionValidationMessage schemaMessage;
+ @Mock private ExtensionValidationMessage scopeMessage;
- @Mock private ExtensionSchemaValidator extensionSchemaValidator;
+ @Mock private ExtensionSchemaValidator schemaValidator;
+ @Mock private ExtensionScopeValidator scopeValidator;
@Mock private TraversalHelperFactory traversalHelperFactory;
@Mock private TraversalHelper traversalHelper;
@InjectMocks private BaseExtendedValidator baseExtendedValidator;
@@ -55,7 +58,7 @@
@Test
public void validate_supportedExtension_callsExtensionValidate() {
when(supportedExtension.getExtensionName()).thenReturn(X_SECURITY_TYPE.getExtensionName());
- when(supportedExtension.validate(extensionSchemaValidator)).thenReturn(ImmutableSet.of());
+ when(supportedExtension.validate(any(ExtensionValidator.class))).thenReturn(ImmutableSet.of());
when(traversalHelper.traverse()).thenReturn(ImmutableSet.of(supportedExtension));
baseExtendedValidator.validate(openApiSpec);
@@ -73,15 +76,12 @@
}
@Test
- public void validate_withExtensions_returnsExtensionValidationMessage() {
- ExtensionValidationMessage message =
- ExtensionValidationMessage.builder().setType("").setMessage("").setPath("").build();
-
+ public void validate_withExtensions_returnsExactExtensionValidationMessages() {
when(supportedExtension.getExtensionName()).thenReturn(X_SECURITY_TYPE.getExtensionName());
when(traversalHelper.traverse()).thenReturn(ImmutableSet.of(supportedExtension));
- when(supportedExtension.validate(any(ExtensionValidator.class)))
- .thenReturn(ImmutableSet.of(message));
+ when(supportedExtension.validate(schemaValidator)).thenReturn(ImmutableSet.of(schemaMessage));
+ when(supportedExtension.validate(scopeValidator)).thenReturn(ImmutableSet.of(scopeMessage));
- assertThat(baseExtendedValidator.validate(openApiSpec)).hasSize(1);
+ assertThat(baseExtendedValidator.validate(openApiSpec)).hasSize(2);
}
}