Comments (6)
Thanks @richdouglasevans. I'll have a look at providing an option coerceTypes.
from express-openapi-validator.
@richdouglasevans
i put together a test to try out your case. as far as i can tell it works correctly
Given the following spec for Pet (which is used in the POST request below)
NewPet:
required:
- name
properties:
name:
type: string
tag:
type: string
is_cat:
type: boolean
I created the following test
(note that is_cat
is specified as a boolean in the spec above, however, it is passed in the request as a string
and is thus is a candidate for type coercion)
it.only('should coerce the string 'true' to the boolean true', async () =>
request(app)
.post(`${basePath}/pets`)
.send({
name: 'test',
is_cat: 'true',
})
.expect(200)
.then(r => {
// return the request body after validation
expect(r.body.is_cat).to.be.a('boolean');
}));
The test case works as expected, the string "is_cat": true
is properly coerced to boolean
which i echo back in the response
Next, I created a similar test but passed a boolean in the request. Here, I want to ensure that the boolean true
remain a boolean after validation. Th
it.only('should keep the boolean true as a boolean', async () =>
request(app)
.post(`${basePath}/pets`)
.send({
name: 'test',
is_cat: true,
})
.expect(200)
.then(r => {
expect(r.body.is_cat).to.be.a('boolean');
}));
This test also looks good
All in all, it's very possible that my tests don't match your use case. If so, please let me know. An example is of course appreciated.
On another note. as a sanity check, it may be worth verifying that type for majorReferenceWork
is defined with type boolean
and not string
from express-openapi-validator.
Carmine you're a ⭐️ Thanks for the speedy reply.
Annoyingly, I'm unable to supply a failing example using the pets
schema. The issue manifests consistently in the schema I'm using on this work project but I just can't get the same behaviour elsewhere.
Let me close this ticket because I need to spend some time understanding what, specifically, is causing the issue in my environment: if I can create a failing example using the pets
schema I'll open another ticket.
👍
from express-openapi-validator.
np. i've added a couple tests around coercion in case we find a need for this. 3126ef9
from express-openapi-validator.
@richdouglasevans ive added the ability to disable type coercion. The option is described in the ready. Hope this helps. See v1.8.0
from express-openapi-validator.
I saw that Carmine, cheers! I'll be testing it next week at work 👌
from express-openapi-validator.
Related Issues (20)
- Multer worked on 5.0.1 throws internal server error in 5.1.0 HOT 5
- Introduction of multiple swagger docs with new endpoint now versioned returns 404 HOT 2
- the same oneOf schema can pass request validation. But cannot pass response validation
- version 5.1.1, apiKey cookie authentication results in error HOT 1
- Email format validation does not accept non-ascii characters
- Multiple spec support breaks if validateResponses: true HOT 2
- readonly is ignored when properties are inherited through allOf
- Type coercion stops working if request validation is turned off HOT 1
- Support for the HyperExpress web framework HOT 1
- Multiple path params break support for URI path param HOT 1
- Upgrade or replace lodash
- Server variables without enum don't get validated
- Multiple specs are not supported HOT 1
- Found CVE-2021-23337 in latest version of express-openapi-validator HOT 1
- Request body is marked as invalid, using `oneOf` inside `allOf`
- Request body schema validations are skipped when using multiple external refs
- Subsequent express middleware not invoked after OpenApiValidator HOT 3
- Use Precompiled Validator?
- Setting nullable breaks minLength validation
- Multiple `example` set in OpenAPI schema doesn't work
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from express-openapi-validator.