Code Monkey home page Code Monkey logo

Comments (6)

cdimascio avatar cdimascio commented on May 9, 2024 1

Thanks @richdouglasevans. I'll have a look at providing an option coerceTypes.

from express-openapi-validator.

cdimascio avatar cdimascio commented on May 9, 2024 1

@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.

richdouglasevans avatar richdouglasevans commented on May 9, 2024

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.

cdimascio avatar cdimascio commented on May 9, 2024

np. i've added a couple tests around coercion in case we find a need for this. 3126ef9

from express-openapi-validator.

cdimascio avatar cdimascio commented on May 9, 2024

@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.

richdouglasevans avatar richdouglasevans commented on May 9, 2024

I saw that Carmine, cheers! I'll be testing it next week at work 👌

from express-openapi-validator.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.