diff --git a/csbschema/validators.py b/csbschema/validators.py index e82a219..7fb6200 100644 --- a/csbschema/validators.py +++ b/csbschema/validators.py @@ -407,6 +407,14 @@ def validate_b12_3_1_0_properties(document: dict, errors: List) -> None: if 'platform' not in properties: return + if 'trustedNode' not in properties: + return + + if 'uniqueVesselID' not in properties['trustedNode']: + errors.append(_error_factory('/properties/trustedNode', + "'uniqueVesselID' is a required property.")) + return + validate_b12_3_1_0_platform(properties, errors) diff --git a/tests/integration/validate_cmd.sh b/tests/integration/validate_cmd.sh index 896b646..742ca43 100644 --- a/tests/integration/validate_cmd.sh +++ b/tests/integration/validate_cmd.sh @@ -58,6 +58,9 @@ csbschema validate -f docs/IHO/b12_v3_1_0_xyz_example-invalid.json \ --version XYZ-3.1.0-2023-08 check_failed_as_expected +# Run valid B12 3.0.0 against B12 3.1.0 - should fail (but clean) +csbschema validate -f docs/NOAA/noaa_b12_v3_0_0_required.json --version 3.1.0-2024-04 +check_failed_as_expected # Validate B12 3.2.0-BETA csbschema validate -f docs/IHO/b12_v3_2_0-BETA_example.json --version 3.2.0-BETA || exit $? diff --git a/tests/unit/test_validators_current.py b/tests/unit/test_validators_current.py index 13d34ec..cb12f8f 100644 --- a/tests/unit/test_validators_current.py +++ b/tests/unit/test_validators_current.py @@ -326,6 +326,13 @@ def test_validate_b12_3_2_0_BETA_valid(self): with self.assertRaises(KeyError): _: dict = result['errors'] + def test_validate_b12_3_1_0_invalid_previous_version(self): + b12_filepath_invalid = Path(self.fixtures_dir, 'NOAA', + 'noaa_b12_v3_0_0_required.json') + (valid, result) = validate_b12_3_1_0_2024_04(b12_filepath_invalid) + self.assertFalse(valid) + self.assertTrue(isinstance(result, dict)) + if __name__ == '__main__': unittest.main(