Aggregation of allOf combined with additionalProperties false not working - Response validation #239
Open
Description
I am getting the following error when validating response for a /route endpoint (see schema and the response example below)
Error: .response should NOT have additional properties, .response should NOT have additional properties
at ResponseValidator._validate (C:\Code\automation\node_modules\express-openapi-validator\dist\middlewares\openapi.response.validator.js:83:32)
at C:\Code\automation\node_modules\express-openapi-validator\dist\middlewares\openapi.response.validator.js:27:29
at ServerResponse.json_hook (C:\Code\automation\node_modules\express-openapi-validator\dist\framework\modded.express.mung.js:35:24)
at ServerResponse.send (C:\Code\automation\node_modules\express\lib\response.js:158:21)
at c:\Code\automation\src\dataserver\Server.ts:268:25
at Layer.handle [as handle_request] (C:\Code\automation\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Code\automation\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Code\automation\node_modules\express\lib\router\route.js:112:3)
Expected result: The validation should pass
Example 1 - Demonstrates the issue
Having the following schema, the below response causes validation error - no additional properties
Schema:
---
openapi: "3.0.0"
info:
title: "Test for allOf"
version: "1"
paths:
/route:
get:
responses:
200:
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/RouteType"
components:
schemas:
RouteType:
allOf:
-
$ref: "#/components/schemas/Type1"
-
$ref: "#/components/schemas/Type2"
Type1:
type: "object"
additionalProperties: false
properties:
property1:
type: "integer"
Type2:
type: "object"
additionalProperties: false
properties:
property2:
type: "string"
Response:
---
property1: 1
property2: SomeString
Example 2 - No issue
If there is just one item in allOf collection, it validates correctly:
Schema:
---
openapi: "3.0.0"
info:
title: "Test for allOf"
version: "1"
paths:
/route:
get:
responses:
200:
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/RouteType"
components:
schemas:
RouteType:
allOf:
-
$ref: "#/components/schemas/Type1"
Type1:
type: "object"
additionalProperties: false
properties:
property1:
type: "integer"
Response:
---
property1: 1
Metadata
Assignees
Labels
No labels