mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
The Swagger specification indicates that all operationId values should be unique. However, SwaggerParser doesn't complain during validation if that doesn't happen, so this commit adds our own method to identify these cases. Also, the violations of this rule have been fixed.
50 lines
1.7 KiB
Plaintext
50 lines
1.7 KiB
Plaintext
var SwaggerParser = require('swagger-parser'),
|
|
_ = require('underscore');
|
|
|
|
function check_duplicate_operationids(api) {
|
|
var operation_ids = [];
|
|
|
|
_.each(api.paths, function(endpoint) {
|
|
_.each(endpoint, function(value) {
|
|
var operation_id = value.operationId;
|
|
if(operation_id !== undefined) {
|
|
if(operation_ids.indexOf(operation_id) >= 0) {
|
|
console.error('In', file + ':');
|
|
console.error('Duplicate operationId:', operation_id);
|
|
process.exitCode = 1;
|
|
} else {
|
|
operation_ids.push(operation_id);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function validate_swagger(file) {
|
|
SwaggerParser.validate(file)
|
|
.then(function(api) {
|
|
// Let's make sure that there aren't any duplicate operationids,
|
|
// until this issue is fixed:
|
|
// https://github.com/BigstickCarpet/swagger-parser/issues/68
|
|
check_duplicate_operationids(api);
|
|
return;
|
|
})
|
|
.catch(function(err) {
|
|
// There is something wrong. Display the validation errors
|
|
console.error('In', file + ':');
|
|
console.error(err.message);
|
|
process.exitCode = 1;
|
|
});
|
|
}
|
|
|
|
// Iterate through the changed files, passed in the arguments.
|
|
// The two first arguments are the call to the Node interpreter and this
|
|
// script, hence the starting point at 2.
|
|
for(var i = 2; i < process.argv.length; i++) {
|
|
var file = process.argv[i];
|
|
// Run the validator only for YAML files inside static/swagger
|
|
if(file.startsWith('static/swagger')) {
|
|
validate_swagger(file);
|
|
}
|
|
}
|