#521 Enhanced Kind Validation and Testing for ValidKindConstraintValidator
Type of change
-
Bug Fix -
Feature
Please provide link to gitlab issue or ADR(Architecture Decision Record)
#521
Does this introduce a change in the core logic?
- [YES]
Does this introduce a change in the cloud provider implementation, if so which cloud?
-
AWS -
Azure -
GCP -
IBM
Does this introduce a breaking change?
- [NO]
What is the current behavior?
- The existing kind id validation is shallow, doesn't cover all validation cases
- It is possible to try to create a kind cache config with wrong/absent kinds referenced.
What is the new/expected behavior?
This merge request introduces a comprehensive validation mechanism for the Kind
structure and entity type identifier in the ValidKindConstraintValidator
. The key highlights include:
-
Kind Structure Validation: Implemented validation for the
Kind
property, ensuring that it conforms to the expected four-part structure. This logic was externalized to a newKindUtil
class to keep the validator clean. -
Entity Type Identifier Validation: The validation to check whether the entity type identifier (third segment) is part of the supported data types was moved to the
TransformerConfigurationCacheService
. This keeps responsibility aligned and reduces complexity in the validator class. -
Exception Handling: Incorporated handling for
TransformerConfigurationCacheException
in the validator logic and corresponding unit tests.
Changes
-
Kind Structure Validation:
- Introduced
KindUtil
to manage kind structure validation and entity type extraction.
- Introduced
-
Entity Type Identifier Validation:
- Added
isEntityTypeSupported
method toTransformerConfigurationCacheService
to validate the entity type.
- Added
-
Refactoring of
ValidKindConstraintValidator
:- The validator now uses
KindUtil
andTransformerConfigurationCacheService
to handle kind structure and entity type validation.
- The validator now uses
-
Robust Unit Tests:
- Added unit tests that cover various validation scenarios such as null kind values, unsupported entity types, and invalid kind structure.
- Mocks dependencies like
KindCacheConfigurationCacheService
,SchemaService
, andTransformerConfigurationCacheService
. - Unit tests rely on exact text matching in error messages for validation.
How to Test
- Run the unit tests (
ValidKindConstraintValidatorTest
) to verify the functionality. - Tests cover:
- Validation of proper and improper
Kind
structure. - Handling of null values based on annotation configuration.
- Validation of entity type identifier support in transformer configuration.
- Exception handling in the validator.
- Validation of proper and improper
Risks and Considerations
- Message Updates: Tests rely on exact error message text matching, so any changes to error messages in the code will require updates in the test assertions.
- Scalability: The changes keep the validation logic clean and modular, preparing for future extensions to the kind validation process.
Conclusion
This merge request improves the modularity, maintainability, and robustness of the ValidKindConstraintValidator
by externalizing key logic and ensuring thorough unit test coverage.
Any other useful information
Closes #521