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); } }