ajv-validator / ajv-validator/ajv

Unexpected behaviour of unevaluatedProperties when used with dependentSchemas

Ouverte
#2,483 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
bug
Langage dominant
TypeScript
Étoiles
14.8k
Forks
1k
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Code sandbox: https://codesandbox.io/s/ajv-playground-forked-nz924l?file=/src/index.js

**What version of Ajv are you using? Does the issue happen if you use the latest version?**

Latest 8.17.1

**Ajv options object**

Empty (no options)

**JSON Schema**

```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"link": {
"type": "boolean"
}
},
"required": ["name"],
"unevaluatedProperties": false,
"dependentSchemas": {
"link": {
"if": {
"properties": {
"link": {
"const": true
}
}
},
"then": {
"properties": {
"originalId": {
"type": "string"
}
},
"required": ["originalId"]
}
}
}
}
```

**Sample data**

```json
{
"name": "test"
}
```

**Your code**

```javascript
const Ajv2020 = require("ajv/dist/2020");
const ajv = new Ajv2020();

const schema = require("./schema.json");
const validate = ajv.compile(schema);

const valid = validate({
name: "test"
});
```

**Validation result, data AFTER validation, error messages**

```json
{
"instancePath": "",
"schemaPath": "#/unevaluatedProperties",
"keyword": "unevaluatedProperties",
"params": {
"unevaluatedProperty": "name"
},
"message": "must NOT have unevaluated properties"
}
```

**What results did you expect?**

If I understand the JSON Schema specification around `unevaluatedProperties` and sub-schemas applied conditionally, the validation should pass with no errors given that `name` is defined in `properties` adjacent to `unevaluatedProperties` and it is present in the data instance.

Interestingly, the same example passes validation in https://www.jsonschemavalidator.net

**Are you going to resolve the issue?**

Looking for clarification/analysis from maintainers or those who are well-versed in latest JSON Schema specifications.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.