pactflow / swagger-mock-validator

Other
13 stars 4 forks source link

feat: Upgrade to latest swagger-parser that supports OAS 3.1 #17

Closed vwong closed 1 year ago

YOU54F commented 1 year ago

Hey Voon,

Took a look at this at the weekend because I was super excited about OAS 3.1 support and just wanted to test out a local build

added a sample 3.1 and 3.0 OAS file and a corresponding simple pact file

https://github.com/pactflow/swagger-mock-validator/compare/feat/oas-3.1...feat/oas-3.1-saf

With original package

3.0

 npx -y @pactflow/swagger-mock-validator openapi3_0.json petstore-consumer-petstore-provider.json
0 error(s)
0 warning(s)

3.1

 npx -y @pactflow/swagger-mock-validator openapi3_1.json petstore-consumer-petstore-provider.json

returns

 VError: Unable to parse "swagger-mock-validator/openapi3_1.json": Unsupported OpenAPI version: 3.1.0. Swagger Parser only supports versions 3.0.0, 3.0.1, 3.0.2, 3.0.3
    at /Users/saf/.npm/_npx/ba6fd930b87a45a7/node_modules/@pactflow/swagger-mock-validator/dist/swagger-mock-validator/spec-parser/validate-and-dereference-spec.js:24:15
    at Generator.throw (<anonymous>)
    at rejected (/Users/saf/.npm/_npx/ba6fd930b87a45a7/node_modules/@pactflow/swagger-mock-validator/dist/swagger-mock-validator/spec-parser/validate-and-dereference-spec.js:6:65)

With package built from PR

3.0

./bin/swagger-mock-validator-local openapi3_0.json petstore-consumer-petstore-provider.json

gives me

0 error(s)
0 warning(s)

3.1

./bin/swagger-mock-validator-local openapi3_1.json petstore-consumer-petstore-provider.json

gives me

TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at parseResponses (/Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser/parse-responses.js:34:36)
    at parseOperation (/Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser/parse-operation.js:38:70)
    at /Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser.js:17:53
    at Array.map (<anonymous>)
    at parsePathOperations (/Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser.js:15:10)
    at /Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser.js:31:28
    at Array.map (<anonymous>)
    at parseOperations (/Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser.js:31:10)
    at Object.parse (/Users/saf/dev/pactflow/swagger-mock-validator/build-output/lib/swagger-mock-validator/spec-parser/openapi3/openapi3-parser.js:38:25)
YOU54F commented 1 year ago

Other changes in the build were related to trying to get it building in CI for windows, bar the yarn.lock change which is required for this PR (and the update in the build step to use yarn)

vwong commented 1 year ago

This has now since been upgraded