From 035acc5922e2f7441d249184080469ed2826e64a Mon Sep 17 00:00:00 2001 From: marahin Date: Fri, 2 Oct 2020 15:31:55 +0200 Subject: [PATCH] Allow additionalProperties in jsonapi schema --- lib/jsonapi_parameters/jsonapi_schema.json | 20 +++++++++---------- spec/lib/jsonapi_parameters/validator_spec.rb | 18 +++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/lib/jsonapi_parameters/jsonapi_schema.json b/lib/jsonapi_parameters/jsonapi_schema.json index 8e507da..e656c17 100644 --- a/lib/jsonapi_parameters/jsonapi_schema.json +++ b/lib/jsonapi_parameters/jsonapi_schema.json @@ -50,7 +50,7 @@ "$ref": "#/definitions/jsonapi" } }, - "additionalProperties": false + "additionalProperties": true }, "failure": { "type": "object", @@ -75,7 +75,7 @@ "$ref": "#/definitions/links" } }, - "additionalProperties": false + "additionalProperties": true }, "info": { "type": "object", @@ -93,7 +93,7 @@ "$ref": "#/definitions/jsonapi" } }, - "additionalProperties": false + "additionalProperties": true }, "meta": { @@ -148,7 +148,7 @@ "$ref": "#/definitions/meta" } }, - "additionalProperties": false + "additionalProperties": true }, "relationshipLinks": { "description": "A resource object **MAY** contain references to other resource objects (\"relationships\"). Relationships may be to-one or to-many. Relationships can be specified by including a member in a resource's links object.", @@ -213,7 +213,7 @@ {"required": ["type"]} ] }, - "additionalProperties": false + "additionalProperties": true }, "relationships": { @@ -251,10 +251,10 @@ {"required": ["type"]} ] }, - "additionalProperties": false + "additionalProperties": true } }, - "additionalProperties": false + "additionalProperties": true }, "relationshipToOne": { "description": "References to other resource objects in a to-one (\"relationship\"). Relationships can be specified by including a member in a resource's links object.", @@ -297,7 +297,7 @@ "$ref": "#/definitions/meta" } }, - "additionalProperties": false + "additionalProperties": true }, "pagination": { "type": "object", @@ -344,7 +344,7 @@ "$ref": "#/definitions/meta" } }, - "additionalProperties": false + "additionalProperties": true }, "error": { @@ -390,7 +390,7 @@ "$ref": "#/definitions/meta" } }, - "additionalProperties": false + "additionalProperties": true } } } diff --git a/spec/lib/jsonapi_parameters/validator_spec.rb b/spec/lib/jsonapi_parameters/validator_spec.rb index 4b8fb14..fa24432 100644 --- a/spec/lib/jsonapi_parameters/validator_spec.rb +++ b/spec/lib/jsonapi_parameters/validator_spec.rb @@ -91,5 +91,23 @@ class Translator expect { validator.validate! }.to raise_error(ActiveModel::ValidationError) end end + + describe 'Rails specific parameters' do + it 'does not yield validation error on :controller, :action, :commit' do + rails_specific_params = [:controller, :action, :commit] + payload = { controller: 'examples_controller', action: 'create', commit: 'Sign up' } + validator = described_class.new(payload) + + expect { validator.validate! }.to raise_error(ActiveModel::ValidationError) + + begin + validator.validate! + rescue => err + rails_specific_params.each do |param| + expect(err.message).not_to include("Payload path '/#{param}'") + end + end + end + end end end