Skip to content

Commit a7e26d6

Browse files
authored
Merge pull request #1416 from swagger-api/issue#1398
fix for MultipleOf with negative value issue #1398
2 parents 4cf798f + 61a8e36 commit a7e26d6

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2189,7 +2189,11 @@ public Schema getSchema(ObjectNode node, String location, ParseResult result){
21892189

21902190
BigDecimal bigDecimal = getBigDecimal("multipleOf",node,false,location,result);
21912191
if(bigDecimal != null) {
2192-
schema.setMultipleOf(bigDecimal);
2192+
if(bigDecimal.intValue() > 0) {
2193+
schema.setMultipleOf(bigDecimal);
2194+
}else{
2195+
result.warning(location,"multipleOf value must be > 0");
2196+
}
21932197
}
21942198

21952199
bigDecimal = getBigDecimal("maximum", node, false, location, result);

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ public class OpenAPIV3ParserTest {
8282
protected int serverPort = getDynamicPort();
8383
protected WireMockServer wireMockServer;
8484

85+
@Test
86+
public void testIssue1398() {
87+
ParseOptions options = new ParseOptions();
88+
SwaggerParseResult result = new OpenAPIV3Parser().readLocation("issue1398.yaml", null, options);
89+
assertEquals(result.getMessages().get(0), "attribute paths.'/pet/{petId}'(get).parameters.[petId].schemas.multipleOf value must be > 0");
90+
}
8591

8692
@Test
8793
public void testIssue1367() {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
openapi: 3.0.1
2+
info:
3+
title: Swagger Petstore
4+
description: 'This is a sample server Petstore server'
5+
version: 1.0.0
6+
servers:
7+
- url: http://mytestServer/{v1}
8+
variables:
9+
v2:
10+
default: 'd'
11+
paths:
12+
'/pet/{petId}':
13+
get:
14+
summary: Find pet by ID
15+
description: Returns a single pet
16+
parameters:
17+
- name: petId
18+
in: path
19+
description: ID of pet to return
20+
required: true
21+
schema:
22+
type : integer
23+
multipleOf: -10
24+
responses:
25+
'200':
26+
description: successful operation

0 commit comments

Comments
 (0)