IBM/openapi-validator

Error when I use a customized rule

Closed this issue · 7 comments

Hi there

I use a customized rule but I faced an error:

npm install -g ibm-openapi-validator
npm install @ibm-cloud/openapi-ruleset

My customized ruleset "dfo-rules.js":

const ibmCloudValidationRules = require('@ibm-cloud/openapi-ruleset');
const { enumCaseConvention } = require('@ibm-cloud/openapi-ruleset/src/functions');
const { schemas } = require('@ibm-cloud/openapi-ruleset-utilities/src/collections');

module.exports = {
  extends: ibmCloudValidationRules,
  rules: {
    'enum-case-convention': {
      description: 'Enum values must follow kebab case convention',
      message: '{{error}}',
      given: schemas,
      severity: 'error',
      then: {
        function: enumCaseConvention,
        functionOptions: {
          type: 'kebab'
        }
      }
    }
  }
};
user@yearbook1:~/myproject # lint-openapi -c ./dfo-openapi-validator-config.yaml ../target/control-plane-api-openapi.yaml
IBM OpenAPI Validator (validator: 1.0.1; ruleset: 1.0.0), @Copyright IBM Corporation 2017, 2023.

Validation Results for ../target/control-plane-api-openapi.yaml:

[ERROR] Problem reading Spectral ruleset file 'dfo-rules.js': Cannot find module 'chalk'
Require stack:
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/utils/logger-factory.js
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/utils/index.js
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/functions/array-attributes.js
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/functions/index.js
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/rules/accept-header.js
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/rules/index.js
- myproject/node_modules/@ibm-cloud/openapi-ruleset/src/ibm-oas.js
- myproject/dfo-rules.js
[ERROR] Using the default IBM Cloud OpenAPI Ruleset instead.

@ityuhui thanks for this issue - I will look into it

What version is your @ibm-cloud/openapi-ruleset dependency within the package.json file?

Hi @dpopp07

Here is my environment:

# npm list
~/myproject@ ~/myproject
└── @ibm-cloud/openapi-ruleset@1.0.0

# cat package.json
{
  "dependencies": {
    "@ibm-cloud/openapi-ruleset": "^1.0.0"
  }
}

# npm list -g
/opt/node-v18.12.0-linux-x64/lib
├── corepack@0.14.2
├── ibm-openapi-validator@1.0.1
└── npm@8.19.2

Okay, I was able to reproduce and track down the issue. It will be solved in #585.

Note that even once the bug is fixed, you'll need to change your ruleset as you have the function name wrong - it should be enumCasingConvention, not enumCaseConvention.

Thank you !

🎉 This issue has been resolved in version 1.0.1 🎉

The release is available on npm package (@latest dist-tag)

Your semantic-release bot 📦🚀

🎉 This issue has been resolved in version 1.0.4 🎉

The release is available on npm package (@latest dist-tag)

Your semantic-release bot 📦🚀

🎉 This issue has been resolved in version 1.0.1 🎉

The release is available on npm package (@latest dist-tag)

Your semantic-release bot 📦🚀