Closed Tset-Noitamotua closed 3 years ago
when I try contains="somestring"
then it fails like this
Now I wonder does 'contains' only check if what I pass is an object or boolean?
contains
The value of this keyword MUST be a valid JSON Schema.
An array instance is valid against "contains" if at least one of its elements is valid against the given schema.
http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.4.6
Hi @Tset-Noitamotua,
This sounds like a bug for sure, but needs further investigation. We'll come back to this once we can see if it actually is a bug.
Hi @Tset-Noitamotua ,
After doing some digging on this, it looks like contains
only validates the output schema. This means that if your query returns
{ [ {"item1": "value1"}, {"item2": "value2"} ] }
you can check for example contains={"type": "object"}
, but not whether the array actually contains an item that matches your query. Currently, for this you should implement your own logic. We can consider if this is something we want to include into the library itself.
Also based on http://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.4 (your /latest redirects here). It doesn't have a contains
validation anymore, but instead 2 validations maxContains
and minContains
. However, these aren't supported by Python Jsonschema.
According to JSONSchema documentation, this is a feature of JSONSchema and not a bug in the library, we're closing this issue.
Not sure if this is a false positive
I am sure that
{'bar': 0, 'foo': 123}
does not occur in the response. So I was expecting the test to fail because of the validation.Am I doing something wrong?