This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push: new ae101610d Test modernization ae101610d is described below commit ae101610d5b0b110c3f0750deba37ced9d51299f Author: James Bognar <james.bog...@salesforce.com> AuthorDate: Sat Aug 30 17:15:18 2025 -0400 Test modernization --- .../src/test/java/org/apache/juneau/TestUtils.java | 19 +- .../apache/juneau/dto/swagger/Contact_Test.java | 49 ++-- .../dto/swagger/ExternalDocumentation_Test.java | 22 +- .../apache/juneau/dto/swagger/HeaderInfo_Test.java | 249 +++++++++-------- .../org/apache/juneau/dto/swagger/Info_Test.java | 45 ++- .../org/apache/juneau/dto/swagger/Items_Test.java | 213 +++++++------- .../apache/juneau/dto/swagger/License_Test.java | 24 +- .../apache/juneau/dto/swagger/Operation_Test.java | 110 ++++---- .../juneau/dto/swagger/ParameterInfo_Test.java | 249 ++++++++--------- .../juneau/dto/swagger/ResponseInfo_Test.java | 101 ++++--- .../apache/juneau/dto/swagger/SchemaInfo_Test.java | 307 +++++++++------------ .../juneau/dto/swagger/SecurityScheme_Test.java | 58 ++-- .../apache/juneau/dto/swagger/Swagger_Test.java | 208 +++++++------- .../org/apache/juneau/dto/swagger/Tag_Test.java | 35 +-- .../org/apache/juneau/dto/swagger/Xml_Test.java | 61 ++-- .../http/annotation/FormDataAnnotation_Test.java | 16 +- .../http/annotation/HeaderAnnotation_Test.java | 16 +- .../http/annotation/PathAnnotation_Test.java | 16 +- .../http/annotation/QueryAnnotation_Test.java | 56 ++-- .../http/annotation/ResponseAnnotation_Test.java | 15 +- 20 files changed, 901 insertions(+), 968 deletions(-) diff --git a/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java b/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java index 742bfa128..972a74f2c 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java +++ b/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java @@ -227,7 +227,7 @@ public class TestUtils extends Utils2 { * <h5 class='section'>Advanced Collection Analysis:</h5> * <p class='bjava'> * <jc>// Combine size/length, metadata, and content iteration in single assertions</jc> - * assertBean(myBean, <js>"users{length,class{simpleName},#{name}}"</js>, + * assertBean(myBean, <js>"users{length,class{simpleName},#{name}}"</js>, * <js>"{3,{ArrayList},[{John},{Jane},{Bob}]}"</js>); * * <jc>// Comprehensive collection validation with multiple iteration patterns</jc> @@ -235,7 +235,7 @@ public class TestUtils extends Utils2 { * <js>"{3,[{Laptop},{Phone},{Tablet}],[{999.99},{599.99},{399.99}]}"</js>); * * <jc>// Perfect for validation testing - verify error count and details</jc> - * assertBean(result, <js>"errors{length,#{field},#{code}}"</js>, + * assertBean(result, <js>"errors{length,#{field},#{code}}"</js>, * <js>"{2,[{email},{password}],[{E001},{E002}]}"</js>); * * <jc>// Mixed collection types with consistent syntax</jc> @@ -503,11 +503,6 @@ public class TestUtils extends Utils2 { assertContains(json, Json5.DEFAULT.write(value)); } - public static void assertJsonMatches(Object o, String pattern) throws AssertionError { - var json = json(o); - assertTrue(getMatchPattern3(pattern).matcher(json).matches(), fs("JSON did not match pattern.\njson={0}", json)); - } - public static void assertLines(String expected, Object value) { assertEquals(expected, r(value).replaceAll("\\r?\\n", "|")); } @@ -1184,4 +1179,14 @@ public class TestUtils extends Utils2 { var xml = s.serialize(o); checkXmlWhitespace(xml); } + + /** + * Helper method for creating StringBuilder objects. + * + * @param value The string value to wrap in a StringBuilder. + * @return A new StringBuilder containing the specified value. + */ + public static StringBuilder sb(String value) { + return new StringBuilder(value); + } } diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Contact_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Contact_Test.java index da97c3a10..48b574985 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Contact_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Contact_Test.java @@ -33,41 +33,46 @@ class Contact_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new Contact(); + // General - Combined assertBean test assertBean( t.setName("a").setEmail("b").setUrl(URI.create("http://c")), "name,email,url", "a,b,http://c" ); - assertNull(t.setName(null).getName()); - assertNull(t.setEmail(null).getEmail()); + // Null cases + assertBean( + t.setName(null).setEmail(null), + "name,email", + "null,null" + ); } /** * Test method for {@link Contact#set(String, Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new Contact(); t - .set("name", "a") - .set("url", "b") - .set("email", "c") - .set("$ref", "d"); + .set("email", "a") + .set("name", "b") + .set("$ref", "c") + .set("url", "d"); - assertBean(t, "name,url,email,$ref", "a,b,c,d"); + assertBean(t, "email,name,$ref,url", "a,b,c,d"); t - .set("name", new StringBuilder("a")) - .set("url", new StringBuilder("b")) - .set("email", new StringBuilder("c")) - .set("$ref", new StringBuilder("d")); + .set("email", sb("a")) + .set("name", sb("b")) + .set("$ref", sb("c")) + .set("url", sb("d")); - assertBean(t, "name,url,email,$ref", "a,b,c,d"); + assertBean(t, "email,name,$ref,url", "a,b,c,d"); assertMapped( t, (obj,prop) -> obj.get(prop, String.class), - "name,url,email,$ref", + "email,name,$ref,url", "a,b,c,d" ); @@ -75,11 +80,13 @@ class Contact_Test extends SimpleTestBase { assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { assertBean(JsonParser.DEFAULT.parse("{name:'a',url:'b',email:'c','$ref':'d'}", Contact.class), "name,url,email,$ref", "a,b,c,d"); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Contact(); t = t.copy(); @@ -96,16 +103,16 @@ class Contact_Test extends SimpleTestBase { assertBean(t, "name,url,email,$ref", "a,b,c,d"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Contact(); - assertJson(t.keySet(), "[]"); + assertEmpty(t.keySet()); t - .set("name", "foo") - .set("url", "bar") - .set("email", "baz") - .set("$ref", "qux"); + .set("name", "a") + .set("url", "b") + .set("email", "c") + .set("$ref", "d"); assertSet(t.keySet(), "email,name,url,$ref"); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ExternalDocumentation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ExternalDocumentation_Test.java index 8d1c5cb1c..072fcec66 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ExternalDocumentation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ExternalDocumentation_Test.java @@ -33,19 +33,25 @@ class ExternalDocumentation_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new ExternalDocumentation(); + // General - Combined assertBean test assertBean( t.setDescription("a").setUrl(URI.create("http://b")), "description,url", "a,http://b" ); - assertNull(t.setDescription(null).getDescription()); + // Null cases + assertBean( + t.setDescription(null), + "description", + "null" + ); } /** * Test method for {@link ExternalDocumentation#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new ExternalDocumentation(); t @@ -56,9 +62,9 @@ class ExternalDocumentation_Test extends SimpleTestBase { assertBean(t, "description,url,$ref", "a,b,c"); t - .set("description", new StringBuilder("a2")) - .set("url", new StringBuilder("b2")) - .set("$ref", new StringBuilder("c2")); + .set("description", sb("a2")) + .set("url", sb("b2")) + .set("$ref", sb("c2")); assertBean(t, "description,url,$ref", "a2,b2,c2"); @@ -72,11 +78,13 @@ class ExternalDocumentation_Test extends SimpleTestBase { assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { assertBean(JsonParser.DEFAULT.parse("{description:'a',url:'b','$ref':'c'}", ExternalDocumentation.class), "description,url,$ref", "a,b,c"); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new ExternalDocumentation(); t = t.copy(); @@ -92,7 +100,7 @@ class ExternalDocumentation_Test extends SimpleTestBase { assertBean(t, "description,url,$ref", "a,b,c"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new ExternalDocumentation(); assertEmpty(t.keySet()); diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/HeaderInfo_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/HeaderInfo_Test.java index 12f1917a1..340c61d30 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/HeaderInfo_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/HeaderInfo_Test.java @@ -36,134 +36,139 @@ class HeaderInfo_Test extends SimpleTestBase { // General - Combined assertBean test assertBean( - t.setDescription("foo").setType("foo").setFormat("foo").setItems(items("foo")) - .setCollectionFormat("foo").setDefault("foo").setMaximum(123).setExclusiveMaximum(true) - .setMinimum(123).setExclusiveMinimum(true).setMaxLength(123).setMinLength(123) - .setPattern("foo").setMaxItems(123).setMinItems(123).setUniqueItems(true) - .setEnum(set("foo","bar")).setMultipleOf(123).setExample("foo").setRef("foo"), - "description,type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,example,ref", - "foo,foo,foo,{foo},foo,foo,123,true,123,true,123,123,foo,123,123,true,[foo,bar],123,foo,foo" + t.setCollectionFormat("a").setDefault("b").setDescription("c").setEnum(set("d1","d2")).setExample("e") + .setExclusiveMaximum(true).setExclusiveMinimum(true).setFormat("f").setItems(items("g")) + .setMaxItems(1).setMaxLength(2).setMaximum(3).setMinItems(4).setMinLength(5) + .setMinimum(6).setMultipleOf(7).setPattern("h").setRef("i").setType("j").setUniqueItems(true), + "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,ref,type,uniqueItems", + "a,b,c,[d1,d2],e,true,true,f,{g},1,2,3,4,5,6,7,h,i,j,true" ); - // Special cases - assertNull(t.setDescription(null).getDescription()); - assertNull(t.setType(null).getType()); - assertNull(t.setFormat(null).getFormat()); - assertNull(t.setItems((Items)null).getItems()); - assertNull(t.setCollectionFormat(null).getCollectionFormat()); - assertNull(t.setDefault(null).getDefault()); - assertEquals(123f, t.setMaximum(123f).getMaximum()); - assertEquals(123f, t.setMinimum(123f).getMinimum()); - assertNull(t.setPattern(null).getPattern()); - assertEmpty(t.setEnum(set()).getEnum()); - assertSet(t.setEnum("foo","bar").getEnum(), "foo,bar"); - assertNull(t.setEnum((Set<Object>)null).getEnum()); - assertSet(t.addEnum("foo","bar").getEnum(), "foo,bar"); - assertSet(t.addEnum("baz").getEnum(), "foo,bar,baz"); - assertEquals(123f, t.setMultipleOf(123f).getMultipleOf()); - assertBean(t.setExample(123f), "example", "123.0"); - assertNull(t.setExample((String)null).getExample()); - assertBean(t.setRef(null), "ref", "null"); + // Null cases + assertBean( + t.setCollectionFormat(null).setDefault(null).setDescription(null).setEnum((Set<Object>)null).setExample((String)null) + .setFormat(null).setItems((Items)null).setPattern(null).setRef(null).setType(null), + "collectionFormat,default,description,enum,example,format,items,pattern,ref,type", + "null,null,null,null,null,null,null,null,null,null" + ); + + // Empty collections + assertBean( + t.setEnum(set()), + "enum", + "[]" + ); + + // Other + assertBean( + t.setExample(1f).setMaximum(2f).setMinimum(3f).setMultipleOf(4f), + "example,maximum,minimum,multipleOf", "1.0,2.0,3.0,4.0"); + + // addEnum + assertSet(t.addEnum("a","b").getEnum(), "a,b"); + assertSet(t.addEnum("c").getEnum(), "a,b,c"); } /** * Test method for {@link HeaderInfo#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new HeaderInfo(); t - .set("default", "a") - .set("enum", set("b")) - .set("collectionFormat", "c") - .set("description", "d") + .set("collectionFormat", "a") + .set("default", "b") + .set("description", "c") + .set("enum", set("d")) .set("example", "e") .set("exclusiveMaximum", true) .set("exclusiveMinimum", true) - .set("format", "g") - .set("items", items("h")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) - .set("pattern", "i") + .set("format", "f") + .set("items", items("g")) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) + .set("pattern", "h") + .set("$ref", "i") .set("type", "j") - .set("uniqueItems", true) - .set("$ref", "ref"); + .set("uniqueItems", true); assertBean(t, - "description,type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref,example", - "d,j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref,e"); + "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items{type},maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,ref,type,uniqueItems", + "a,b,c,[d],e,true,true,f,{g},1.0,2,3,4.0,5,6,7.0,h,i,j,true"); t - .set("default", "a") - .set("enum", "['b']") - .set("collectionFormat", "c") - .set("description", "d") + .set("collectionFormat", "a") + .set("default", "b") + .set("description", "c") + .set("enum", "['d']") .set("example", "e") .set("exclusiveMaximum", "true") .set("exclusiveMinimum", "true") - .set("format", "g") - .set("items", "{type:'h'}") - .set("maximum", "123f") - .set("maxItems", "123") - .set("maxLength", "123") - .set("minimum", "123f") - .set("minItems", "123") - .set("minLength", "123") - .set("multipleOf", "123f") - .set("pattern", "i") + .set("format", "f") + .set("items", "{type:'g'}") + .set("maximum", "1f") + .set("maxItems", "2") + .set("maxLength", "3") + .set("minimum", "4f") + .set("minItems", "5") + .set("minLength", "6") + .set("multipleOf", "7f") + .set("pattern", "h") + .set("$ref", "i") .set("type", "j") - .set("uniqueItems", "true") - .set("$ref", "ref"); + .set("uniqueItems", "true"); assertBean(t, - "description,type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref,example", - "d,j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref,e"); + "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items{type},maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,ref,type,uniqueItems", + "a,b,c,[d],e,true,true,f,{g},1.0,2,3,4.0,5,6,7.0,h,i,j,true"); t - .set("default", new StringBuilder("a")) - .set("enum", new StringBuilder("['b']")) - .set("collectionFormat", new StringBuilder("c")) - .set("description", new StringBuilder("d")) - .set("example", new StringBuilder("e")) - .set("exclusiveMaximum", new StringBuilder("true")) - .set("exclusiveMinimum", new StringBuilder("true")) - .set("format", new StringBuilder("g")) - .set("items", new StringBuilder("{type:'h'}")) - .set("maximum", new StringBuilder("123f")) - .set("maxItems", new StringBuilder("123")) - .set("maxLength", new StringBuilder("123")) - .set("minimum", new StringBuilder("123f")) - .set("minItems", new StringBuilder("123")) - .set("minLength", new StringBuilder("123")) - .set("multipleOf", new StringBuilder("123f")) - .set("pattern", new StringBuilder("i")) - .set("type", new StringBuilder("j")) - .set("uniqueItems", new StringBuilder("true")) - .set("$ref", new StringBuilder("ref")); + .set("collectionFormat", sb("a")) + .set("default", sb("b")) + .set("description", sb("c")) + .set("enum", sb("['d']")) + .set("example", sb("e")) + .set("exclusiveMaximum", sb("true")) + .set("exclusiveMinimum", sb("true")) + .set("format", sb("f")) + .set("items", sb("{type:'g'}")) + .set("maximum", sb("1f")) + .set("maxItems", sb("2")) + .set("maxLength", sb("3")) + .set("minimum", sb("4f")) + .set("minItems", sb("5")) + .set("minLength", sb("6")) + .set("multipleOf", sb("7f")) + .set("pattern", sb("h")) + .set("$ref", sb("i")) + .set("type", sb("j")) + .set("uniqueItems", sb("true")); assertBean(t, - "description,type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref,example", - "d,j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref,e"); + "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items{type},maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,ref,type,uniqueItems", + "a,b,c,[d],e,true,true,f,{g},1.0,2,3,4.0,5,6,7.0,h,i,j,true"); assertMapped(t, (obj,prop) -> obj.get(prop, Object.class), - "default,collectionFormat,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items,maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,type,uniqueItems,$ref", - "a,c,d,[b],e,true,true,g,{\"type\":\"h\"},123.0,123,123,123.0,123,123,123.0,i,j,true,ref"); + "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items,maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,$ref,type,uniqueItems", + "a,b,c,[d],e,true,true,f,{\"type\":\"g\"},1.0,2,3,4.0,5,6,7.0,h,i,j,true"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{description:'d',type:'j',format:'g',items:{type:'h'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref',example:'e'}"; assertJson(JsonParser.DEFAULT.parse(s, HeaderInfo.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new HeaderInfo(); t = t.copy(); @@ -171,59 +176,59 @@ class HeaderInfo_Test extends SimpleTestBase { assertJson(t, "{}"); t - .set("default", "a") - .set("enum", set("b")) - .set("collectionFormat", "c") - .set("description", "d") + .set("collectionFormat", "a") + .set("default", "b") + .set("description", "c") + .set("enum", set("d")) .set("example", "e") .set("exclusiveMaximum", true) .set("exclusiveMinimum", true) - .set("format", "g") - .set("items", items("h")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) - .set("pattern", "i") + .set("format", "f") + .set("items", items("g")) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) + .set("pattern", "h") + .set("$ref", "i") .set("type", "j") .set("uniqueItems", true) - .set("$ref", "ref") .copy(); assertBean(t, - "description,type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref,example", - "d,j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref,e"); + "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items{type},maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,ref,type,uniqueItems", + "a,b,c,[d],e,true,true,f,{g},1.0,2,3,4.0,5,6,7.0,h,i,j,true"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new HeaderInfo(); assertEmpty(t.keySet()); t - .set("default", "a") - .set("enum", set("b")) - .set("collectionFormat", "c") - .set("description", "d") + .set("collectionFormat", "a") + .set("default", "b") + .set("description", "c") + .set("enum", set("d")) .set("example", "e") .set("exclusiveMaximum", true) .set("exclusiveMinimum", true) - .set("format", "g") - .set("items", items("h")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) - .set("pattern", "i") + .set("format", "f") + .set("items", items("g")) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) + .set("pattern", "h") + .set("$ref", "i") .set("type", "j") - .set("uniqueItems", true) - .set("$ref", "ref"); + .set("uniqueItems", true); assertSet(t.keySet(), "collectionFormat,default,description,enum,example,exclusiveMaximum,exclusiveMinimum,format,items,maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,$ref,type,uniqueItems"); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Info_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Info_Test.java index 664b9f8e1..3254b9548 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Info_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Info_Test.java @@ -32,24 +32,25 @@ class Info_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new Info(); - // General + // Basic property setters assertBean( t.setTitle("a").setDescription("b").setTermsOfService("c").setContact(contact("d")).setLicense(license("e")).setVersion("f"), "title,description,termsOfService,contact{name},license{name},version", "a,b,c,{d},{e},f" ); - // Edge cases for nulls. - assertNull(t.setTitle(null).getTitle()); - assertNull(t.setDescription(null).getDescription()); - assertNull(t.setTermsOfService(null).getTermsOfService()); - assertNull(t.setVersion(null).getVersion()); + // Null values + assertBean( + t.setTitle(null).setDescription(null).setTermsOfService(null).setVersion(null), + "title,description,termsOfService,version", + "null,null,null,null" + ); } /** * Test method for {@link Info#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new Info(); t @@ -80,13 +81,13 @@ class Info_Test extends SimpleTestBase { "e,b,f,{a},{c},d,ref"); t - .set("contact", new StringBuilder("{name:'a'}")) - .set("description", new StringBuilder("b")) - .set("license", new StringBuilder("{name:'c'}")) - .set("termsOfService", new StringBuilder("d")) - .set("title", new StringBuilder("e")) - .set("version", new StringBuilder("f")) - .set("$ref", new StringBuilder("ref")); + .set("contact", sb("{name:'a'}")) + .set("description", sb("b")) + .set("license", sb("{name:'c'}")) + .set("termsOfService", sb("d")) + .set("title", sb("e")) + .set("version", sb("f")) + .set("$ref", sb("ref")); assertBean(t, "title,description,version,contact{name},license{name},termsOfService,$ref", @@ -96,24 +97,22 @@ class Info_Test extends SimpleTestBase { "contact,description,license,termsOfService,title,version,$ref", "{name:'a'},b,{name:'c'},d,e,f,ref"); - assertType(Contact.class, t.get("contact", Object.class)); - assertType(String.class, t.get("description", Object.class)); - assertType(License.class, t.get("license", Object.class)); - assertType(String.class, t.get("termsOfService", Object.class)); - assertType(String.class, t.get("title", Object.class)); - assertType(String.class, t.get("version", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "contact,description,license,termsOfService,title,version,$ref", + "Contact,String,License,String,String,String,StringBuilder"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{title:'e',description:'b',version:'f',contact:{name:'a'},license:{name:'c'},termsOfService:'d','$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, Info.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Info(); t = t.copy(); @@ -135,7 +134,7 @@ class Info_Test extends SimpleTestBase { "e,b,f,{a},{c},d,ref"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Info(); assertEmpty(t.keySet()); diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Items_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Items_Test.java index 975d6807b..86827ae9c 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Items_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Items_Test.java @@ -34,61 +34,69 @@ class Items_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new Items(); - // General + // General - Combined assertBean test assertBean( - t.setType("foo").setFormat("foo").setItems(items("foo")).setCollectionFormat("foo") - .setDefault("foo").setMaximum(123).setExclusiveMaximum(true).setMinimum(123) - .setExclusiveMinimum(true).setMaxLength(123).setMinLength(123).setPattern("foo") - .setMaxItems(123).setMinItems(123).setUniqueItems(true).setEnum(set("foo","bar")) - .setMultipleOf(123), - "type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf", - "foo,foo,{foo},foo,foo,123,true,123,true,123,123,foo,123,123,true,[foo,bar],123" + t.setCollectionFormat("a").setDefault("b").setEnum(set("c1","c2")).setExclusiveMaximum(true) + .setExclusiveMinimum(true).setFormat("d").setItems(items("e")).setMaxItems(1).setMaxLength(2) + .setMaximum(3).setMinItems(4).setMinLength(5).setMinimum(6).setMultipleOf(7) + .setPattern("f").setType("g").setUniqueItems(true), + "collectionFormat,default,enum,exclusiveMaximum,exclusiveMinimum,format,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,type,uniqueItems", + "a,b,[c1,c2],true,true,d,{e},1,2,3,4,5,6,7,f,g,true" ); - // Other cases - assertString("foo", t.setDefault(new StringBuilder("foo")).getDefault()); - assertNull(t.setType(null).getType()); - assertNull(t.setFormat(null).getFormat()); - assertNull(t.setCollectionFormat(null).getCollectionFormat()); - assertNull(t.setDefault(null).getDefault()); - assertEquals(123f, t.setMaximum(123f).getMaximum()); - assertEquals(123f, t.setMinimum(123f).getMinimum()); - assertNull(t.setPattern(null).getPattern()); - assertJson(t.setEnum("foo","baz").getEnum(), "['foo','baz']"); - assertJson(t.setEnum(set()).getEnum(), "[]"); - assertNull(t.setEnum((Collection<Object>)null).getEnum()); - assertJson(t.addEnum("foo","bar").getEnum(), "['foo','bar']"); - assertJson(t.addEnum("baz").getEnum(), "['foo','bar','baz']"); - assertEquals(123f, t.setMultipleOf(123f).getMultipleOf()); + // Null cases + assertBean( + t.setCollectionFormat(null).setDefault(null).setEnum((Collection<Object>)null).setFormat(null).setPattern(null).setType(null), + "collectionFormat,default,enum,format,pattern,type", + "null,null,null,null,null,null" + ); + + // Empty collections + assertBean( + t.setEnum(set()), + "enum", + "[]" + ); + + // Other + assertBean( + t.setDefault(sb("a")).setMaximum(1f).setMinimum(2f).setMultipleOf(3f), + "default,maximum,minimum,multipleOf", "a,1.0,2.0,3.0"); + + // addEnum + assertSet(t.addEnum("a","b").getEnum(), "a,b"); + assertSet(t.addEnum("c").getEnum(), "a,b,c"); } /** * Test method for {@link Items#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new Items(); t + .set("collectionFormat", "c") .set("default", "a") .set("enum", set("b")) - .set("collectionFormat", "c") .set("exclusiveMaximum", true) .set("exclusiveMinimum", true) .set("format", "g") .set("items", items("h")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("maximum", 1f) + .set("minItems", 5) + .set("minLength", 6) + .set("minimum", 4f) + .set("multipleOf", 7f) .set("pattern", "i") + .set("$ref", "k") .set("type", "j") - .set("uniqueItems", true) - .set("$ref", "ref"); + .set("uniqueItems", true); - assertBean(t, "type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref", "j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref"); + assertBean(t, + "collectionFormat,default,enum,exclusiveMaximum,exclusiveMinimum,format,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,ref,type,uniqueItems", + "c,a,[b],true,true,g,{h},2,3,1.0,5,6,4.0,7.0,i,k,j,true"); t .set("default", "a") @@ -98,75 +106,64 @@ class Items_Test extends SimpleTestBase { .set("exclusiveMinimum", "true") .set("format", "g") .set("items", "{type:'h'}") - .set("maximum", "123f") - .set("maxItems", "123") - .set("maxLength", "123") - .set("minimum", "123f") - .set("minItems", "123") - .set("minLength", "123") - .set("multipleOf", "123f") + .set("maximum", "1f") + .set("maxItems", "2") + .set("maxLength", "3") + .set("minimum", "4f") + .set("minItems", "5") + .set("minLength", "6") + .set("multipleOf", "7f") .set("pattern", "i") .set("type", "j") .set("uniqueItems", "true") - .set("$ref", "ref"); + .set("$ref", "k"); - assertBean(t, "type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref", "j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref"); + assertBean(t, + "type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref", + "j,g,{h},c,a,1.0,true,4.0,true,3,6,i,2,5,true,[b],7.0,k"); t - .set("default", new StringBuilder("a")) - .set("enum", new StringBuilder("['b']")) - .set("collectionFormat", new StringBuilder("c")) - .set("exclusiveMaximum", new StringBuilder("true")) - .set("exclusiveMinimum", new StringBuilder("true")) - .set("format", new StringBuilder("g")) - .set("items", new StringBuilder("{type:'h'}")) - .set("maximum", new StringBuilder("123f")) - .set("maxItems", new StringBuilder("123")) - .set("maxLength", new StringBuilder("123")) - .set("minimum", new StringBuilder("123f")) - .set("minItems", new StringBuilder("123")) - .set("minLength", new StringBuilder("123")) - .set("multipleOf", new StringBuilder("123f")) - .set("pattern", new StringBuilder("i")) - .set("type", new StringBuilder("j")) - .set("uniqueItems", new StringBuilder("true")) - .set("$ref", new StringBuilder("ref")); - - assertBean(t, "type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref", "j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref"); + .set("collectionFormat", sb("c")) + .set("default", sb("a")) + .set("enum", sb("['b']")) + .set("exclusiveMaximum", sb("true")) + .set("exclusiveMinimum", sb("true")) + .set("format", sb("g")) + .set("items", sb("{type:'h'}")) + .set("maxItems", sb("2")) + .set("maxLength", sb("3")) + .set("maximum", sb("1f")) + .set("minItems", sb("5")) + .set("minLength", sb("6")) + .set("minimum", sb("4f")) + .set("multipleOf", sb("7f")) + .set("pattern", sb("i")) + .set("$ref", sb("k")) + .set("type", sb("j")) + .set("uniqueItems", sb("true")); + + assertBean(t, "collectionFormat,default,enum,exclusiveMaximum,exclusiveMinimum,format,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,ref,type,uniqueItems", "c,a,[b],true,true,g,{h},2,3,1.0,5,6,4.0,7.0,i,k,j,true"); assertMapped(t, (obj,prop) -> obj.get(prop, String.class), - "default,enum,collectionFormat,exclusiveMaximum,exclusiveMinimum,format,items,maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,pattern,type,uniqueItems,$ref", - "a,['b'],c,true,true,g,{type:'h'},123.0,123,123,123.0,123,123,123.0,i,j,true,ref"); - - assertType(StringBuilder.class, t.get("default", Object.class)); - assertType(Set.class, t.get("enum", Object.class)); - assertType(String.class, t.get("collectionFormat", Object.class)); - assertType(Boolean.class, t.get("exclusiveMaximum", Object.class)); - assertType(Boolean.class, t.get("exclusiveMinimum", Object.class)); - assertType(String.class, t.get("format", Object.class)); - assertType(Items.class, t.get("items", Object.class)); - assertType(Float.class, t.get("maximum", Object.class)); - assertType(Integer.class, t.get("maxItems", Object.class)); - assertType(Integer.class, t.get("maxLength", Object.class)); - assertType(Float.class, t.get("minimum", Object.class)); - assertType(Integer.class, t.get("minItems", Object.class)); - assertType(Integer.class, t.get("minLength", Object.class)); - assertType(Float.class, t.get("multipleOf", Object.class)); - assertType(String.class, t.get("pattern", Object.class)); - assertType(String.class, t.get("type", Object.class)); - assertType(Boolean.class, t.get("uniqueItems", Object.class)); - assertType(String.class, t.get("$ref", Object.class)); + "collectionFormat,default,enum,exclusiveMaximum,exclusiveMinimum,format,items,maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,$ref,type,uniqueItems", + "c,a,['b'],true,true,g,{type:'h'},2,3,1.0,5,6,4.0,7.0,i,k,j,true"); + + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "collectionFormat,default,enum,exclusiveMaximum,exclusiveMinimum,format,items,maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,$ref,type,uniqueItems", + "String,StringBuilder,LinkedHashSet,Boolean,Boolean,String,Items,Integer,Integer,Float,Integer,Integer,Float,Float,String,String,String,Boolean"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } - var s = "{type:'j',format:'g',items:{type:'h'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}"; + @Test void b02_roundTripJson() { + var s = "{type:'j',format:'g',items:{type:'h'},collectionFormat:'c','default':'a',maximum:1.0,exclusiveMaximum:true,minimum:4.0,exclusiveMinimum:true,maxLength:3,minLength:6,pattern:'i',maxItems:2,minItems:5,uniqueItems:true,'enum':['b'],multipleOf:7.0,'$ref':'k'}"; assertJson(JsonParser.DEFAULT.parse(s, Items.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Items(); t = t.copy(); @@ -174,35 +171,35 @@ class Items_Test extends SimpleTestBase { assertJson(t, "{}"); t + .set("collectionFormat", "c") .set("default", "a") .set("enum", set("b")) - .set("collectionFormat", "c") .set("exclusiveMaximum", true) .set("exclusiveMinimum", true) .set("format", "g") .set("items", items("h")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("maximum", 1f) + .set("minItems", 5) + .set("minLength", 6) + .set("minimum", 4f) + .set("multipleOf", 7f) .set("pattern", "i") + .set("$ref", "k") .set("type", "j") .set("uniqueItems", true) - .set("$ref", "ref") .copy(); assertBean(t, - "type,format,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,ref", - "j,g,{h},c,a,123.0,true,123.0,true,123,123,i,123,123,true,[b],123.0,ref"); + "collectionFormat,default,enum,exclusiveMaximum,exclusiveMinimum,format,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,pattern,ref,type,uniqueItems", + "c,a,[b],true,true,g,{h},2,3,1.0,5,6,4.0,7.0,i,k,j,true"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Items(); - assertJson(t.keySet(), "[]"); + assertEmpty(t.keySet()); t .set("collectionFormat", "c") @@ -212,15 +209,15 @@ class Items_Test extends SimpleTestBase { .set("exclusiveMinimum", true) .set("format", "g") .set("items", items("h")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) .set("pattern", "i") - .set("$ref", "ref") + .set("$ref", "k") .set("type", "j") .set("uniqueItems", true); diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/License_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/License_Test.java index 6aaded66d..7c348181b 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/License_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/License_Test.java @@ -33,21 +33,21 @@ class License_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new License(); - // General + // Basic property setters assertBean( t.setName("a").setUrl(URI.create("http://b")), "name,url", "a,http://b" ); - // Edge cases for nulls. + // Null values assertNull(t.setName(null).getName()); } /** * Test method for {@link License#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new License(); t @@ -70,9 +70,9 @@ class License_Test extends SimpleTestBase { "a,b,ref"); t - .set("name", new StringBuilder("a")) - .set("url", new StringBuilder("b")) - .set("$ref", new StringBuilder("ref")); + .set("name", sb("a")) + .set("url", sb("b")) + .set("$ref", sb("ref")); assertBean(t, "name,url,$ref", @@ -82,20 +82,22 @@ class License_Test extends SimpleTestBase { "name,url,$ref", "a,b,ref"); - assertType(String.class, t.get("name", Object.class)); - assertType(URI.class, t.get("url", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "name,url,$ref", + "String,URI,StringBuilder"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{name:'a',url:'b','$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, License.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new License(); t = t.copy(); @@ -113,7 +115,7 @@ class License_Test extends SimpleTestBase { "a,b,ref"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new License(); assertEmpty(t.keySet()); diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Operation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Operation_Test.java index 62b887fff..b26e54063 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Operation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Operation_Test.java @@ -34,37 +34,35 @@ class Operation_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new Operation(); - // General + // Basic property setters assertBean( - t.setSummary("a").setDescription("b").setExternalDocs(externalDocumentation("c")).setOperationId("d") - .setOperationId("e").setDeprecated(true).setTags(set("f1","f2")).setConsumes(set(MediaType.of("text/foo"))) - .setProduces(set(MediaType.of("text/foo"))).setParameters(set(parameterInfo("g1","g2"))).setResponses(map("1",responseInfo("h"))) - .setSchemes(set("foo")).setSecurity(alist(map("foo",alist("bar")))), - "summary,description,externalDocs{url},operationId,deprecated,tags,consumes,produces,parameters{0{in,name}},responses{1{description}},schemes,security", - "a,b,{c},e,true,[f1,f2],[text/foo],[text/foo],{{g1,g2}},{{h}},[foo],[{foo=[bar]}]" + t.setConsumes(set(MediaType.of("text/a"))).setDeprecated(true).setDescription("b").setExternalDocs(externalDocumentation("c")) + .setOperationId("d").setParameters(set(parameterInfo("e1","e2"))).setProduces(set(MediaType.of("text/f"))) + .setResponses(map("1",responseInfo("g"))).setSchemes(set("h")).setSecurity(alist(map("i",alist("j")))).setSummary("k").setTags(set("l1","l2")), + "consumes,deprecated,description,externalDocs{url},operationId,parameters{0{in,name}},produces,responses{1{description}},schemes,security,summary,tags", + "[text/a],true,b,{c},d,{{e1,e2}},[text/f],{{g}},[h],[{i=[j]}],k,[l1,l2]" ); - // Edge cases for collections. - assertEmpty(t.setTags(set()).getTags()); - assertNull(t.setTags((Collection<String>)null).getTags()); - assertEmpty(t.setConsumes(set()).getConsumes()); - assertNull(t.setConsumes((Collection<MediaType>)null).getConsumes()); - assertEmpty(t.setProduces(set()).getProduces()); - assertNull(t.setProduces((Collection<MediaType>)null).getProduces()); - assertEmpty(t.setParameters(set()).getParameters()); - assertNull(t.setParameters((Collection<ParameterInfo>)null).getParameters()); - assertEmpty(t.setResponses(map()).getResponses()); - assertNull(t.setResponses((Map<String,ResponseInfo>)null).getResponses()); - assertEmpty(t.setSchemes(set()).getSchemes()); - assertNull(t.setSchemes((Set<String>)null).getSchemes()); - assertEmpty(t.setSecurity(alist()).getSecurity()); - assertNull(t.setSecurity((List<Map<String,List<String>>>)null).getSecurity()); + // Null values + assertBean( + t.setConsumes((Collection<MediaType>)null).setParameters((Collection<ParameterInfo>)null).setProduces((Collection<MediaType>)null) + .setResponses((Map<String,ResponseInfo>)null).setSchemes((Set<String>)null).setSecurity((List<Map<String,List<String>>>)null).setTags((Collection<String>)null), + "consumes,parameters,produces,responses,schemes,security,tags", + "null,null,null,null,null,null,null" + ); + + // Other methods - empty collections + assertBean( + t.setConsumes(set()).setParameters(set()).setProduces(set()).setResponses(map()).setSchemes(set()).setSecurity(alist()).setTags(set()), + "consumes,parameters,produces,responses,schemes,security,tags", + "[],[],[],{},[],[],[]" + ); } /** * Test method for {@link Operation#set(java.lang.String, java.lang.Object)}. */ - @Test void a01_set() throws Exception { + @Test void a01_set() { var t = new Operation(); t @@ -110,19 +108,19 @@ class Operation_Test extends SimpleTestBase { ); t - .set("consumes", new StringBuilder("['text/a']")) - .set("deprecated", new StringBuilder("true")) - .set("description", new StringBuilder("b")) - .set("externalDocs", new StringBuilder("{url:'c'}")) - .set("operationId", new StringBuilder("d")) - .set("parameters", new StringBuilder("[{'in':'e1',name:'e2'}]")) - .set("produces", new StringBuilder("['text/f']")) - .set("responses", new StringBuilder("{'1':{description:'g'}}")) - .set("schemes", new StringBuilder("['h']")) - .set("security", new StringBuilder("[{i1:['i2']}]")) - .set("summary", new StringBuilder("j")) - .set("tags", new StringBuilder("['k']")) - .set("$ref", new StringBuilder("l")); + .set("consumes", sb("['text/a']")) + .set("deprecated", sb("true")) + .set("description", sb("b")) + .set("externalDocs", sb("{url:'c'}")) + .set("operationId", sb("d")) + .set("parameters", sb("[{'in':'e1',name:'e2'}]")) + .set("produces", sb("['text/f']")) + .set("responses", sb("{'1':{description:'g'}}")) + .set("schemes", sb("['h']")) + .set("security", sb("[{i1:['i2']}]")) + .set("summary", sb("j")) + .set("tags", sb("['k']")) + .set("$ref", sb("l")); assertBean( t, @@ -136,35 +134,28 @@ class Operation_Test extends SimpleTestBase { "['text/a'],true,b,{url:'c'},d,[{'in':'e1',name:'e2'}],['text/f'],{'1':{description:'g'}},['h'],[{i1:['i2']}],j,['k'],l" ); - assertType(Set.class, t.get("consumes", Object.class)); - assertType(MediaType.class, t.get("consumes", List.class).get(0)); - assertType(Boolean.class, t.get("deprecated", Object.class)); - assertType(String.class, t.get("description", Object.class)); - assertType(ExternalDocumentation.class, t.get("externalDocs", Object.class)); - assertType(String.class, t.get("operationId", Object.class)); - assertType(List.class, t.get("parameters", Object.class)); - assertType(ParameterInfo.class, t.get("parameters", List.class).get(0)); - assertType(Set.class, t.get("produces", Object.class)); - assertType(MediaType.class, t.get("produces", List.class).get(0)); - assertType(Map.class, t.get("responses", Object.class)); - assertType(String.class, t.get("responses", Map.class).keySet().iterator().next()); - assertType(ResponseInfo.class, t.get("responses", Map.class).values().iterator().next()); - assertType(Set.class, t.get("schemes", Object.class)); - assertType(List.class, t.get("security", Object.class)); - assertType(String.class, t.get("summary", Object.class)); - assertType(Set.class, t.get("tags", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "consumes,deprecated,description,externalDocs,operationId,parameters,produces,responses,schemes,security,summary,tags,$ref", + "LinkedHashSet,Boolean,String,ExternalDocumentation,String,ArrayList,LinkedHashSet,LinkedHashMap,LinkedHashSet,ArrayList,String,LinkedHashSet,StringBuilder"); + + assertMapped(t, (o,k) -> o.get(k, List.class).get(0).getClass().getSimpleName(), "consumes,parameters,produces", "MediaType,ParameterInfo,MediaType"); + assertMapped(t, (o,k) -> { + Map<?,?> map = o.get(k, Map.class); + return map.keySet().iterator().next().getClass().getSimpleName() + "," + map.values().iterator().next().getClass().getSimpleName(); + }, "responses", "String,ResponseInfo"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{operationId:'d',summary:'j',description:'b',tags:['k'],externalDocs:{url:'c'},consumes:['text/a'],produces:['text/f'],parameters:[{'in':'e1',name:'e2'}],responses:{'1':{description:'g'}},schemes:['h'],deprecated:true,security:[{i1:['i2']}],'$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, Operation.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Operation(); t = t.copy(); @@ -194,7 +185,7 @@ class Operation_Test extends SimpleTestBase { ); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Operation(); assertEmpty(t.keySet()); @@ -212,11 +203,8 @@ class Operation_Test extends SimpleTestBase { .set("security", set(map("i1",alist("i2")))) .set("summary", "j") .set("tags", set("k")) - .set("$ref", "ref"); + .set("$ref", "l"); - assertSet( - t.keySet(), - "consumes","deprecated","description","externalDocs","operationId","parameters","produces","responses","schemes","security","summary","tags","$ref" - ); + assertSet(t.keySet(), "consumes,deprecated,description,externalDocs,operationId,parameters,produces,responses,schemes,security,summary,tags,$ref"); } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ParameterInfo_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ParameterInfo_Test.java index 54fd3cba4..d6f88dd33 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ParameterInfo_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ParameterInfo_Test.java @@ -33,51 +33,47 @@ class ParameterInfo_Test extends SimpleTestBase { */ @Test void a01_gettersAndSetters() { var t = new ParameterInfo(); - assertBean(t.setName("foo"), "name", "foo"); - assertNull(t.setName(null).getName()); - assertBean(t.setIn("foo"), "in", "foo"); - assertNull(t.setIn(null).getIn()); - assertBean(t.setDescription("foo"), "description", "foo"); - assertNull(t.setDescription(null).getDescription()); - assertTrue(t.setRequired(true).getRequired()); - assertJson(t.setSchema(schemaInfo().setTitle("foo")).getSchema(), "{title:'foo'}"); - assertBean(t.setType("foo"), "type", "foo"); - assertNull(t.setType(null).getType()); - assertBean(t.setFormat("foo"), "format", "foo"); - assertNull(t.setFormat(null).getFormat()); - assertTrue(t.setAllowEmptyValue(true).getAllowEmptyValue()); - assertJson(t.setItems(items("foo")).getItems(), "{type:'foo'}"); - assertBean(t.setCollectionFormat("foo"), "collectionFormat", "foo"); - assertNull(t.setCollectionFormat(null).getCollectionFormat()); - assertBean(t.setDefault("foo"), "default", "foo"); - assertString("foo", t.setDefault(new StringBuilder("foo")).getDefault()); - assertNull(t.setDefault(null).getDefault()); - assertEquals(123, t.setMaximum(123).getMaximum()); - assertEquals(123f, t.setMaximum(123f).getMaximum()); - assertTrue(t.setExclusiveMaximum(true).getExclusiveMaximum()); - assertEquals(123, t.setMinimum(123).getMinimum()); - assertEquals(123f, t.setMinimum(123f).getMinimum()); - assertTrue(t.setExclusiveMinimum(true).getExclusiveMinimum()); - assertEquals(123, t.setMaxLength(123).getMaxLength()); - assertEquals(123, t.setMinLength(123).getMinLength()); - assertBean(t.setPattern("foo"), "pattern", "foo"); - assertNull(t.setPattern(null).getPattern()); - assertEquals(123, t.setMaxItems(123).getMaxItems()); - assertEquals(123, t.setMinItems(123).getMinItems()); - assertTrue(t.setUniqueItems(true).getUniqueItems()); - assertJson(t.setEnum(set("foo","bar")).getEnum(), "['foo','bar']"); - assertJson(t.setEnum(set()).getEnum(), "[]"); - assertNull(t.setEnum((Collection<Object>)null).getEnum()); - assertJson(t.addEnum("foo","bar").getEnum(), "['foo','bar']"); - assertJson(t.addEnum("baz").getEnum(), "['foo','bar','baz']"); - assertEquals(123, t.setMultipleOf(123).getMultipleOf()); - assertEquals(123f, t.setMultipleOf(123f).getMultipleOf()); + + // General - Combined assertBean test + assertBean( + t.setAllowEmptyValue(true).setCollectionFormat("a").setDefault("b").setDescription("c").setEnum(set("d1","d2")) + .setExclusiveMaximum(true).setExclusiveMinimum(true).setFormat("e").setIn("f").setItems(items("g")) + .setMaxItems(1).setMaxLength(2).setMaximum(3).setMinItems(4).setMinLength(5).setMinimum(6) + .setMultipleOf(7).setName("h").setPattern("i").setRequired(true).setSchema(schemaInfo().setTitle("j")) + .setType("k").setUniqueItems(true), + "allowEmptyValue,collectionFormat,default,description,enum,exclusiveMaximum,exclusiveMinimum,format,in,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,name,pattern,required,schema{title},type,uniqueItems", + "true,a,b,c,[d1,d2],true,true,e,f,{g},1,2,3,4,5,6,7,h,i,true,{j},k,true" + ); + + // Null cases + assertBean( + t.setCollectionFormat(null).setDefault(null).setDescription(null).setEnum((Collection<Object>)null) + .setFormat(null).setIn(null).setName(null).setPattern(null).setType(null), + "collectionFormat,default,description,enum,format,in,name,pattern,type", + "null,null,null,null,null,null,null,null,null" + ); + + // Empty collections + assertBean( + t.setEnum(set()), + "enum", + "[]" + ); + + // Other + assertBean( + t.setDefault(sb("a")).setMaximum(1f).setMinimum(2f).setMultipleOf(3f), + "default,maximum,minimum,multipleOf", "a,1.0,2.0,3.0"); + + // addEnum + assertSet(t.addEnum("a","b").getEnum(), "a,b"); + assertSet(t.addEnum("c").getEnum(), "a,b,c"); } /** * Test method for {@link ParameterInfo#set(java.lang.String, java.lang.Object)}. */ - @Test void a01_set() throws Exception { + @Test void a01_set() { var t = new ParameterInfo(); t @@ -91,22 +87,24 @@ class ParameterInfo_Test extends SimpleTestBase { .set("format", "e") .set("in", "f") .set("items", items("g")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) .set("name", "h") .set("pattern", "i") .set("required", true) .set("schema", schemaInfo().setTitle("j")) .set("type", "k") .set("uniqueItems", true) - .set("$ref", "ref"); + .set("$ref", "l"); - assertJson(t, "{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}"); + assertBean(t, + "in,name,type,description,required,schema{title},format,allowEmptyValue,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref", + "f,h,k,d,true,{j},e,true,{g},c,a,1.0,true,4.0,true,3,6,i,2,5,true,[b],7.0,l"); t .set("default", "a") @@ -119,90 +117,75 @@ class ParameterInfo_Test extends SimpleTestBase { .set("format", "e") .set("in", "f") .set("items", "{type:'g'}") - .set("maximum", "123.0") - .set("maxItems", "123") - .set("maxLength", "123") - .set("minimum", "123.0") - .set("minItems", "123") - .set("minLength", "123") - .set("multipleOf", "123.0") + .set("maximum", "1.0") + .set("maxItems", "2") + .set("maxLength", "3") + .set("minimum", "4.0") + .set("minItems", "5") + .set("minLength", "6") + .set("multipleOf", "7.0") .set("name", "h") .set("pattern", "i") .set("required", "true") .set("schema", "{title:'j'}") .set("type", "k") .set("uniqueItems", "true") - .set("$ref", "ref"); + .set("$ref", "l"); - assertJson(t, "{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}"); + assertBean(t, + "in,name,type,description,required,schema{title},format,allowEmptyValue,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref", + "f,h,k,d,true,{j},e,true,{g},c,a,1.0,true,4.0,true,3,6,i,2,5,true,[b],7.0,l"); t - .set("default", new StringBuilder("a")) - .set("enum", new StringBuilder("['b']")) - .set("allowEmptyValue", new StringBuilder("true")) - .set("collectionFormat", new StringBuilder("c")) - .set("description", new StringBuilder("d")) - .set("exclusiveMaximum", new StringBuilder("true")) - .set("exclusiveMinimum", new StringBuilder("true")) - .set("format", new StringBuilder("e")) - .set("in", new StringBuilder("f")) - .set("items", new StringBuilder("{type:'g'}")) - .set("maximum", new StringBuilder("123.0")) - .set("maxItems", new StringBuilder("123")) - .set("maxLength", new StringBuilder("123")) - .set("minimum", new StringBuilder("123.0")) - .set("minItems", new StringBuilder("123")) - .set("minLength", new StringBuilder("123")) - .set("multipleOf", new StringBuilder("123.0")) - .set("name", new StringBuilder("h")) - .set("pattern", new StringBuilder("i")) - .set("required", new StringBuilder("true")) - .set("schema", new StringBuilder("{title:'j'}")) - .set("type", new StringBuilder("k")) - .set("uniqueItems", new StringBuilder("true")) - .set("$ref", new StringBuilder("ref")); + .set("default", sb("a")) + .set("enum", sb("['b']")) + .set("allowEmptyValue", sb("true")) + .set("collectionFormat", sb("c")) + .set("description", sb("d")) + .set("exclusiveMaximum", sb("true")) + .set("exclusiveMinimum", sb("true")) + .set("format", sb("e")) + .set("in", sb("f")) + .set("items", sb("{type:'g'}")) + .set("maxItems", sb("2")) + .set("maxLength", sb("3")) + .set("maximum", sb("1.0")) + .set("minItems", sb("5")) + .set("minLength", sb("6")) + .set("minimum", sb("4.0")) + .set("multipleOf", sb("7.0")) + .set("name", sb("h")) + .set("pattern", sb("i")) + .set("$ref", sb("l")) + .set("required", sb("true")) + .set("schema", sb("{title:'j'}")) + .set("type", sb("k")) + .set("uniqueItems", sb("true")); - assertJson(t, "{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}"); + assertBean(t, + "allowEmptyValue,collectionFormat,default,description,enum,exclusiveMaximum,exclusiveMinimum,format,in,items{type},maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,name,pattern,$ref,required,schema{title},type,uniqueItems", + "true,c,a,d,[b],true,true,e,f,{g},2,3,1.0,5,6,4.0,7.0,h,i,l,true,{j},k,true"); assertMapped(t, (obj,prop) -> obj.get(prop, String.class), - "default,enum,allowEmptyValue,collectionFormat,description,exclusiveMaximum,exclusiveMinimum,format,in,items,maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,name,pattern,required,schema,type,uniqueItems,$ref", - "a,['b'],true,c,d,true,true,e,f,{type:'g'},123.0,123,123,123.0,123,123,123.0,h,i,true,{title:'j'},k,true,ref"); + "allowEmptyValue,collectionFormat,default,description,enum,exclusiveMaximum,exclusiveMinimum,format,in,items,maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,name,pattern,$ref,required,schema,type,uniqueItems", + "true,c,a,d,['b'],true,true,e,f,{type:'g'},2,3,1.0,5,6,4.0,7.0,h,i,l,true,{title:'j'},k,true"); - assertType(StringBuilder.class, t.get("default", Object.class)); - assertType(Set.class, t.get("enum", Object.class)); - assertType(Boolean.class, t.get("allowEmptyValue", Object.class)); - assertType(String.class, t.get("collectionFormat", Object.class)); - assertType(String.class, t.get("description", Object.class)); - assertType(Boolean.class, t.get("exclusiveMaximum", Object.class)); - assertType(Boolean.class, t.get("exclusiveMinimum", Object.class)); - assertType(String.class, t.get("format", Object.class)); - assertType(String.class, t.get("in", Object.class)); - assertType(Items.class, t.get("items", Object.class)); - assertType(Float.class, t.get("maximum", Object.class)); - assertType(Integer.class, t.get("maxItems", Object.class)); - assertType(Integer.class, t.get("maxLength", Object.class)); - assertType(Float.class, t.get("minimum", Object.class)); - assertType(Integer.class, t.get("minItems", Object.class)); - assertType(Integer.class, t.get("minLength", Object.class)); - assertType(Float.class, t.get("multipleOf", Object.class)); - assertType(String.class, t.get("name", Object.class)); - assertType(String.class, t.get("pattern", Object.class)); - assertType(Boolean.class, t.get("required", Object.class)); - assertType(SchemaInfo.class, t.get("schema", Object.class)); - assertType(String.class, t.get("type", Object.class)); - assertType(Boolean.class, t.get("uniqueItems", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "allowEmptyValue,collectionFormat,default,description,enum,exclusiveMaximum,exclusiveMinimum,format,in,items,maxItems,maxLength,maximum,minItems,minLength,minimum,multipleOf,name,pattern,$ref,required,schema,type,uniqueItems", + "Boolean,String,StringBuilder,String,LinkedHashSet,Boolean,Boolean,String,String,Items,Integer,Integer,Float,Integer,Integer,Float,Float,String,String,StringBuilder,Boolean,SchemaInfo,String,Boolean"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, ParameterInfo.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new ParameterInfo(); t = t.copy(); @@ -220,29 +203,31 @@ class ParameterInfo_Test extends SimpleTestBase { .set("format", "e") .set("in", "f") .set("items", items("g")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) .set("name", "h") .set("pattern", "i") .set("required", true) .set("schema", schemaInfo().setTitle("j")) .set("type", "k") .set("uniqueItems", true) - .set("$ref", "ref") + .set("$ref", "l") .copy(); - assertJson(t, "{'in':'f',name:'h',type:'k',description:'d',required:true,schema:{title:'j'},format:'e',allowEmptyValue:true,items:{type:'g'},collectionFormat:'c','default':'a',maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'i',maxItems:123,minItems:123,uniqueItems:true,'enum':['b'],multipleOf:123.0,'$ref':'ref'}"); + assertBean(t, + "in,name,type,description,required,schema{title},format,allowEmptyValue,items{type},collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref", + "f,h,k,d,true,{j},e,true,{g},c,a,1.0,true,4.0,true,3,6,i,2,5,true,[b],7.0,l"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new ParameterInfo(); - assertJson(t.keySet(), "[]"); + assertEmpty(t.keySet()); t .set("allowEmptyValue", true) @@ -255,25 +240,21 @@ class ParameterInfo_Test extends SimpleTestBase { .set("format", "e") .set("in", "f") .set("items", items("g")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("multipleOf", 123f) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("minimum", 4f) + .set("minItems", 5) + .set("minLength", 6) + .set("multipleOf", 7f) .set("name", "h") .set("pattern", "i") .set("required", true) .set("schema", schemaInfo().setTitle("j")) .set("type", "k") .set("uniqueItems", true) - .set("$ref", "ref"); + .set("$ref", "l"); - assertJson(t.keySet(), - "['allowEmptyValue','collectionFormat','default','description','enum','exclusiveMaximum','exclusiveMinimum'," - + "'format','in','items','maximum','maxItems','maxLength','minimum','minItems','minLength','multipleOf','name'," - + "'pattern','required','schema','type','uniqueItems','$ref']" - ); + assertSet(t.keySet(), "allowEmptyValue,collectionFormat,default,description,enum,exclusiveMaximum,exclusiveMinimum,format,in,items,maximum,maxItems,maxLength,minimum,minItems,minLength,multipleOf,name,pattern,required,schema,type,uniqueItems,$ref"); } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ResponseInfo_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ResponseInfo_Test.java index c702a880f..84f780392 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ResponseInfo_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/ResponseInfo_Test.java @@ -34,21 +34,29 @@ class ResponseInfo_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new ResponseInfo(); - // General + // Basic property setters assertBean( - t.setDescription("a").setSchema(schemaInfo().setTitle("b")).setHeaders(map("c",headerInfo("d"))).setExamples(map("e","f","g",alist("h"))), - "description,schema{title},headers{c{type}},examples", - "a,{b},{{d}},{e=f,g=[h]}" + t.setDescription("a") + .setExamples(map("b1","b2","b3",alist("b4"))) + .setHeaders(map("c1",headerInfo("c2"))) + .setSchema(schemaInfo().setTitle("d")), + "description,examples,headers{c1{type}},schema{title}", + "a,{b1=b2,b3=[b4]},{{c2}},{d}" ); - // Edge cases for collections and nulls. - assertNull(t.setDescription(null).getDescription()); - assertEmpty(t.setHeaders(map()).getHeaders()); - assertNull(t.setHeaders((Map<String,HeaderInfo>)null).getHeaders()); - assertEmpty(t.setExamples(map()).getExamples()); - assertNull(t.setExamples((Map<String,Object>)null).getExamples()); + // Null values + assertBean( + t.setDescription(null).setExamples((Map<String,Object>)null).setHeaders((Map<String,HeaderInfo>)null), + "description,examples,headers", + "null,null,null" + ); - // Examples addExample method. + // Other methods - empty collections + assertBean( + t.setExamples(map()).setHeaders(map()), + "examples,headers", + "{},{}" + ); assertMap( t.setExamples(map()).addExample("text/a", "a").addExample("text/b", null).addExample(null, "c").getExamples(), "text/a,text/b,<<<NULL>>>", @@ -59,64 +67,65 @@ class ResponseInfo_Test extends SimpleTestBase { /** * Test method for {@link ResponseInfo#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new ResponseInfo(); t .set("description", "a") - .set("examples", map("foo","bar","baz",alist("qux"))) - .set("headers", map("a", headerInfo("a1"))) + .set("examples", map("b1","b2","b3",alist("b4"))) + .set("headers", map("c1", headerInfo("c2"))) .set("schema", schemaInfo().setType("d")) - .set("$ref", "ref"); + .set("$ref", "e"); // Comprehensive object state validation assertBean(t, - "description,schema{type},headers{a{type}},examples,$ref", - "a,{d},{{a1}},{foo=bar,baz=[qux]},ref"); + "description,schema{type},headers{c1{type}},examples,$ref", + "a,{d},{{c2}},{b1=b2,b3=[b4]},e"); t .set("description", "a") - .set("examples", "{foo:'bar',baz:['qux']}") - .set("headers", "{a:{type:'a1'}}") + .set("examples", "{b1:'b2',b3:['b4']}") + .set("headers", "{c1:{type:'c2'}}") .set("schema", "{type:'d'}") - .set("$ref", "ref"); + .set("$ref", "e"); assertBean(t, - "description,schema{type},headers{a{type}},examples,$ref", - "a,{d},{{a1}},{foo=bar,baz=[qux]},ref"); + "description,examples,headers{c1{type}},schema{type},$ref", + "a,{b1=b2,b3=[b4]},{{c2}},{d},e"); t - .set("description", new StringBuilder("a")) - .set("examples", new StringBuilder("{foo:'bar',baz:['qux']}")) - .set("headers", new StringBuilder("{a:{type:'a1'}}")) - .set("schema", new StringBuilder("{type:'d'}")) - .set("$ref", new StringBuilder("ref")); + .set("description", sb("a")) + .set("examples", sb("{b1:'b2',b3:['b4']}")) + .set("headers", sb("{c1:{type:'c2'}}")) + .set("schema", sb("{type:'d'}")) + .set("$ref", sb("e")); assertBean(t, - "description,schema{type},headers{a{type}},examples,$ref", - "a,{d},{{a1}},{foo=bar,baz=[qux]},ref"); + "description,examples,headers{c1{type}},schema{type},$ref", + "a,{b1=b2,b3=[b4]},{{c2}},{d},e"); assertMapped(t, (obj,prop) -> obj.get(prop, String.class), "description,examples,headers,schema,$ref", - "a,{foo:'bar',baz:['qux']},{a:{type:'a1'}},{type:'d'},ref"); + "a,{b1:'b2',b3:['b4']},{c1:{type:'c2'}},{type:'d'},e"); + + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "description,examples,headers,schema,$ref", + "String,LinkedHashMap,LinkedHashMap,SchemaInfo,StringBuilder"); - assertType(String.class, t.get("description", Object.class)); - assertType(Map.class, t.get("examples", Object.class)); - assertType(Map.class, t.get("headers", Object.class)); assertType(HeaderInfo.class, t.get("headers", Map.class).values().iterator().next()); - assertType(SchemaInfo.class, t.get("schema", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } - var s = "{description:'a',schema:{type:'d'},headers:{a:{type:'a1'}},examples:{foo:'bar',baz:['qux']},'$ref':'ref'}"; + @Test void b02_roundTripJson() { + var s = "{description:'a',schema:{type:'d'},headers:{a:{type:'a1'}},examples:{foo:'bar',baz:['qux']},'$ref':'ref'}"; // Order is determined by @Bean annotation. assertJson(JsonParser.DEFAULT.parse(s, ResponseInfo.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new ResponseInfo(); t = t.copy(); @@ -125,28 +134,28 @@ class ResponseInfo_Test extends SimpleTestBase { t .set("description", "a") - .set("examples", map("foo","bar","baz",alist("qux"))) - .set("headers", map("a", headerInfo("a1"))) + .set("examples", map("b1","b2","b3",alist("b4"))) + .set("headers", map("c1", headerInfo("c2"))) .set("schema", schemaInfo().setType("d")) - .set("$ref", "ref") + .set("$ref", "e") .copy(); assertBean(t, - "description,schema{type},headers{a{type}},examples,$ref", - "a,{d},{{a1}},{foo=bar,baz=[qux]},ref"); + "description,examples,headers{c1{type}},schema{type},$ref", + "a,{b1=b2,b3=[b4]},{{c2}},{d},e"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new ResponseInfo(); assertEmpty(t.keySet()); t .set("description", "a") - .set("examples", map("foo","bar","baz",alist("qux"))) - .set("headers", map("a", headerInfo("a1"))) + .set("examples", map("b1","b2","b3",alist("b4"))) + .set("headers", map("c1", headerInfo("c2"))) .set("schema", schemaInfo().setType("d")) - .set("$ref", "ref"); + .set("$ref", "e"); assertSet(t.keySet(), "description,examples,headers,schema,$ref"); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SchemaInfo_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SchemaInfo_Test.java index e27be40a5..9ca7eea9f 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SchemaInfo_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SchemaInfo_Test.java @@ -33,101 +33,89 @@ class SchemaInfo_Test extends SimpleTestBase { */ @Test void a01_gettersAndSetters() { var t = new SchemaInfo(); - assertBean(t.setFormat("foo"), "format", "foo"); - assertNull(t.setFormat(null).getFormat()); - assertBean(t.setTitle("foo"), "title", "foo"); - assertNull(t.setTitle(null).getTitle()); - assertBean(t.setDescription("foo"), "description", "foo"); - assertNull(t.setDescription(null).getDescription()); - assertBean(t.setDefault("foo"), "default", "foo"); - assertString("foo", t.setDefault(new StringBuilder("foo")).getDefault()); - assertNull(t.setDefault(null).getDefault()); - assertEquals(123, t.setMultipleOf(123).getMultipleOf()); - assertEquals(123f, t.setMultipleOf(123f).getMultipleOf()); - assertEquals(123, t.setMaximum(123).getMaximum()); - assertEquals(123f, t.setMaximum(123f).getMaximum()); - assertTrue(t.setExclusiveMaximum(true).getExclusiveMaximum()); - assertEquals(123, t.setMinimum(123).getMinimum()); - assertEquals(123f, t.setMinimum(123f).getMinimum()); - assertTrue(t.setExclusiveMinimum(true).getExclusiveMinimum()); - assertEquals(123, t.setMaxLength(123).getMaxLength()); - assertEquals(123, t.setMinLength(123).getMinLength()); - assertEquals("foo", t.setPattern("foo").getPattern()); - assertNull(t.setPattern(null).getPattern()); - assertEquals(123, t.setMaxItems(123).getMaxItems()); - assertEquals(123, t.setMinItems(123).getMinItems()); - assertTrue(t.setUniqueItems(true).getUniqueItems()); - assertEquals(123, t.setMaxProperties(123).getMaxProperties()); - assertEquals(123, t.setMinProperties(123).getMinProperties()); - assertJson(t.setRequiredProperties("x").getRequiredProperties(), "['x']"); - assertNull(t.setRequiredProperties((Collection<String>)null).getRequiredProperties()); - assertJson(t.setEnum(set("foo","bar")).getEnum(), "['foo','bar']"); - assertJson(t.setEnum(set()).getEnum(), "[]"); - assertNull(t.setEnum((Collection<Object>)null).getEnum()); - assertJson(t.addEnum("foo","bar").getEnum(), "['foo','bar']"); - assertJson(t.addEnum("baz").getEnum(), "['foo','bar','baz']"); - assertEquals("foo", t.setType("foo").getType()); - assertNull(t.setType(null).getType()); - assertJson(t.setItems(items("foo")).getItems(), "{type:'foo'}"); - assertJson(t.setAllOf(set("foo","bar")).getAllOf(), "['foo','bar']"); - assertJson(t.setAllOf(set()).getAllOf(), "[]"); - assertNull(t.setAllOf((Collection<Object>)null).getAllOf()); - assertJson(t.addAllOf("foo","bar").getAllOf(), "['foo','bar']"); - assertJson(t.setProperties(map("foo",new SchemaInfo().setType("foo"))).getProperties(), "{foo:{type:'foo'}}"); - assertJson(t.setProperties(map()).getProperties(), "{}"); - assertNull(t.setProperties((Map<String,SchemaInfo>)null).getProperties()); - assertJson(t.setAdditionalProperties(new SchemaInfo().setType("foo")).getAdditionalProperties(), "{type:'foo'}"); + + // General - Combined assertBean test + assertBean( + t.setAdditionalProperties(new SchemaInfo().setType("a")).setAllOf(set("b1","b2")).setDefault("c").setDescription("d") + .setDiscriminator("e").setEnum(set("f1","f2")).setExample("g").setExclusiveMaximum(true).setExclusiveMinimum(true) + .setExternalDocs(externalDocumentation("h")).setFormat("i").setItems(items("j")).setMaxItems(1).setMaxLength(2) + .setMaxProperties(3).setMaximum(4).setMinItems(5).setMinLength(6).setMinProperties(7).setMinimum(8) + .setMultipleOf(9).setPattern("k").setProperties(map("l",new SchemaInfo().setType("m"))).setReadOnly(true) + .setRequiredProperties("n").setTitle("o").setType("p").setUniqueItems(true).setXml(xml().setName("q")), + "additionalProperties{type},allOf,default,description,discriminator,enum,example,exclusiveMaximum,exclusiveMinimum,externalDocs{url},format,items{type},maxItems,maxLength,maxProperties,maximum,minItems,minLength,minProperties,minimum,multipleOf,pattern,properties{l{type}},readOnly,requiredProperties,title,type,uniqueItems,xml{name}", + "{a},[b1,b2],c,d,e,[f1,f2],g,true,true,{h},i,{j},1,2,3,4,5,6,7,8,9,k,{{m}},true,[n],o,p,true,{q}" + ); + + // Null cases + assertBean( + t.setAdditionalProperties((SchemaInfo)null).setAllOf((Collection<Object>)null).setDefault(null).setDescription(null) + .setDiscriminator(null).setEnum((Collection<Object>)null).setExample(null).setFormat(null) + .setPattern(null).setProperties((Map<String,SchemaInfo>)null).setRequiredProperties((Collection<String>)null) + .setTitle(null).setType(null), + "additionalProperties,allOf,default,description,discriminator,enum,example,format,pattern,properties,requiredProperties,title,type", + "null,null,null,null,null,null,null,null,null,null,null,null,null" + ); + + // Empty collections + assertBean( + t.setAllOf(set()).setProperties(map()), + "allOf,properties", + "[],{}" + ); + + // Other + assertBean( + t.setDefault(sb("a")).setExample(1).setMaximum(2f).setMinimum(3f).setMultipleOf(4f), + "default,example,maximum,minimum,multipleOf", "a,1,2.0,3.0,4.0"); assertJson(t.setAdditionalProperties(new SchemaInfo()).getAdditionalProperties(), "{}"); - assertNull(t.setAdditionalProperties((SchemaInfo)null).getAdditionalProperties()); - assertEquals("foo", t.setDiscriminator("foo").getDiscriminator()); - assertNull(t.setDiscriminator(null).getDiscriminator()); - assertTrue(t.setReadOnly(true).getReadOnly()); - assertJson(t.setXml(xml().setName("foo")).getXml(), "{name:'foo'}"); - assertJson(t.setExternalDocs(externalDocumentation("foo")).getExternalDocs(), "{url:'foo'}"); - assertEquals("foo", t.setExample("foo").getExample()); - assertEquals(123, t.setExample(123).getExample()); - assertNull(t.setExample(null).getExample()); + + // addEnum and addAllOf + assertSet(t.addEnum("a","b").getEnum(), "a,b"); + assertSet(t.addEnum("c").getEnum(), "a,b,c"); + assertSet(t.addAllOf("d","e").getAllOf(), "d,e"); } /** * Test method for {@link SchemaInfo#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new SchemaInfo(); t - .set("default", "a") - .set("enum", set("b")) .set("additionalProperties", map("c",alist("c1"))) .set("allOf", set("d")) + .set("default", "a") .set("description", "e") .set("discriminator", "f") + .set("enum", set("b")) .set("example", "g") .set("exclusiveMaximum", true) .set("exclusiveMinimum", true) .set("externalDocs", externalDocumentation("h")) .set("format", "i") .set("items", items("j")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("maxProperties", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("minProperties", 123) - .set("multipleOf", 123f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("maxProperties", 4) + .set("maximum", 1f) + .set("minItems", 6) + .set("minLength", 7) + .set("minProperties", 8) + .set("minimum", 5f) + .set("multipleOf", 9f) .set("pattern", "k") .set("properties", map("l",map("l1", 1))) .set("readOnly", true) + .set("$ref", "p") .set("requiredProperties", set("x")) .set("title", "m") .set("type", "n") .set("uniqueItems", true) - .set("xml", xml().setName("o")) - .set("$ref", "ref"); + .set("xml", xml().setName("o")); - assertJson(t, "{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,requiredProperties:['x'],'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$r [...] + assertBean(t, + "additionalProperties{c},allOf,default,description,discriminator,enum,example,exclusiveMaximum,exclusiveMinimum,externalDocs{url},format,items{type},maxItems,maxLength,maxProperties,maximum,minItems,minLength,minProperties,minimum,multipleOf,pattern,properties{l{l1}},readOnly,ref,requiredProperties,title,type,uniqueItems,xml{name}", + "{[c1]},[d],a,e,f,[b],g,true,true,{h},i,{j},2,3,4,1.0,6,7,8,5.0,9.0,k,{{1}},true,p,[x],m,n,true,{o}"); t .set("default", "a") @@ -142,15 +130,15 @@ class SchemaInfo_Test extends SimpleTestBase { .set("externalDocs", "{url:'h'}") .set("format", "i") .set("items", "{type:'j'}") - .set("maximum", "123.0") - .set("maxItems", "123") - .set("maxLength", "123") - .set("maxProperties", "123") - .set("minimum", "123.0") - .set("minItems", "123") - .set("minLength", "123") - .set("minProperties", "123") - .set("multipleOf", "123.0") + .set("maximum", "1.0") + .set("maxItems", "2") + .set("maxLength", "3") + .set("maxProperties", "4") + .set("minimum", "5.0") + .set("minItems", "6") + .set("minLength", "7") + .set("minProperties", "8") + .set("multipleOf", "9.0") .set("pattern", "k") .set("properties", "{l:{l1:1}}") .set("readOnly", "true") @@ -159,89 +147,68 @@ class SchemaInfo_Test extends SimpleTestBase { .set("type", "n") .set("uniqueItems", "true") .set("xml", "{name:'o'}") - .set("$ref", "ref"); + .set("$ref", "p"); - assertJson(t, "{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,requiredProperties:['x'],'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$r [...] + assertBean(t, + "format,title,description,default,multipleOf,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,maxProperties,minProperties,requiredProperties,enum,type,items{type},allOf,properties{l{l1}},additionalProperties{c},discriminator,readOnly,xml{name},externalDocs{url},example,ref", + "i,m,e,a,9.0,1.0,true,5.0,true,3,7,k,2,6,true,4,8,[x],[b],n,{j},[d],{{1}},{[c1]},f,true,{o},{h},g,p"); t - .set("default", new StringBuilder("a")) - .set("enum", new StringBuilder("['b']")) - .set("additionalProperties", new StringBuilder("{c:['c1']}")) - .set("allOf", new StringBuilder("['d']")) - .set("description", new StringBuilder("e")) - .set("discriminator", new StringBuilder("f")) - .set("example", new StringBuilder("g")) - .set("exclusiveMaximum", new StringBuilder("true")) - .set("exclusiveMinimum", new StringBuilder("true")) - .set("externalDocs", new StringBuilder("{url:'h'}")) - .set("format", new StringBuilder("i")) - .set("items", new StringBuilder("{type:'j'}")) - .set("maximum", new StringBuilder("123.0")) - .set("maxItems", new StringBuilder("123")) - .set("maxLength", new StringBuilder("123")) - .set("maxProperties", new StringBuilder("123")) - .set("minimum", new StringBuilder("123.0")) - .set("minItems", new StringBuilder("123")) - .set("minLength", new StringBuilder("123")) - .set("minProperties", new StringBuilder("123")) - .set("multipleOf", new StringBuilder("123.0")) - .set("pattern", new StringBuilder("k")) - .set("properties", new StringBuilder("{l:{l1:1}}")) - .set("readOnly", new StringBuilder("true")) - .set("requiredProperties", new StringBuilder("['x']")) - .set("title", new StringBuilder("m")) - .set("type", new StringBuilder("n")) - .set("uniqueItems", new StringBuilder("true")) - .set("xml", new StringBuilder("{name:'o'}")) - .set("$ref", new StringBuilder("ref")); + .set("default", sb("a")) + .set("enum", sb("['b']")) + .set("additionalProperties", sb("{c:['c1']}")) + .set("allOf", sb("['d']")) + .set("description", sb("e")) + .set("discriminator", sb("f")) + .set("example", sb("g")) + .set("exclusiveMaximum", sb("true")) + .set("exclusiveMinimum", sb("true")) + .set("externalDocs", sb("{url:'h'}")) + .set("format", sb("i")) + .set("items", sb("{type:'j'}")) + .set("maximum", sb("1.0")) + .set("maxItems", sb("2")) + .set("maxLength", sb("3")) + .set("maxProperties", sb("4")) + .set("minimum", sb("5.0")) + .set("minItems", sb("6")) + .set("minLength", sb("7")) + .set("minProperties", sb("8")) + .set("multipleOf", sb("9.0")) + .set("pattern", sb("k")) + .set("properties", sb("{l:{l1:1}}")) + .set("readOnly", sb("true")) + .set("requiredProperties", sb("['x']")) + .set("title", sb("m")) + .set("type", sb("n")) + .set("uniqueItems", sb("true")) + .set("xml", sb("{name:'o'}")) + .set("$ref", sb("p")); - assertJson(t, "{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,requiredProperties:['x'],'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$r [...] + assertBean(t, + "format,title,description,default,multipleOf,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,maxProperties,minProperties,requiredProperties,enum,type,items{type},allOf,properties{l{l1}},additionalProperties{c},discriminator,readOnly,xml{name},externalDocs{url},example,ref", + "i,m,e,a,9.0,1.0,true,5.0,true,3,7,k,2,6,true,4,8,[x],[b],n,{j},[d],{{1}},{[c1]},f,true,{o},{h},g,p"); assertMapped(t, (obj,prop) -> obj.get(prop, String.class), "default,enum,additionalProperties,allOf,description,discriminator,example,exclusiveMaximum,exclusiveMinimum,externalDocs,format,items,maximum,maxItems,maxLength,maxProperties,minimum,minItems,minLength,minProperties,multipleOf,pattern,properties,readOnly,requiredProperties,title,type,uniqueItems,xml,$ref", - "a,['b'],{c:['c1']},['d'],e,f,g,true,true,{url:'h'},i,{type:'j'},123.0,123,123,123,123.0,123,123,123,123.0,k,{l:{l1:1}},true,['x'],m,n,true,{name:'o'},ref"); + "a,['b'],{c:['c1']},['d'],e,f,g,true,true,{url:'h'},i,{type:'j'},1.0,2,3,4,5.0,6,7,8,9.0,k,{l:{l1:1}},true,['x'],m,n,true,{name:'o'},p"); - assertType(StringBuilder.class, t.get("default", Object.class)); - assertType(Set.class, t.get("enum", Object.class)); - assertType(SchemaInfo.class, t.get("additionalProperties", Object.class)); - assertType(Set.class, t.get("allOf", Object.class)); - assertType(String.class, t.get("description", Object.class)); - assertType(String.class, t.get("discriminator", Object.class)); - assertType(StringBuilder.class, t.get("example", Object.class)); - assertType(Boolean.class, t.get("exclusiveMaximum", Object.class)); - assertType(Boolean.class, t.get("exclusiveMinimum", Object.class)); - assertType(ExternalDocumentation.class, t.get("externalDocs", Object.class)); - assertType(String.class, t.get("format", Object.class)); - assertType(Items.class, t.get("items", Object.class)); - assertType(Float.class, t.get("maximum", Object.class)); - assertType(Integer.class, t.get("maxItems", Object.class)); - assertType(Integer.class, t.get("maxLength", Object.class)); - assertType(Integer.class, t.get("maxProperties", Object.class)); - assertType(Float.class, t.get("minimum", Object.class)); - assertType(Integer.class, t.get("minItems", Object.class)); - assertType(Integer.class, t.get("minLength", Object.class)); - assertType(Integer.class, t.get("minProperties", Object.class)); - assertType(Float.class, t.get("multipleOf", Object.class)); - assertType(String.class, t.get("pattern", Object.class)); - assertType(Map.class, t.get("properties", Object.class)); - assertType(Boolean.class, t.get("readOnly", Object.class)); - assertType(Set.class, t.get("requiredProperties", Object.class)); - assertType(String.class, t.get("title", Object.class)); - assertType(String.class, t.get("type", Object.class)); - assertType(Boolean.class, t.get("uniqueItems", Object.class)); - assertType(Xml.class, t.get("xml", Object.class)); - assertType(String.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "default,enum,additionalProperties,allOf,description,discriminator,example,exclusiveMaximum,exclusiveMinimum,externalDocs,format,items,maximum,maxItems,maxLength,maxProperties,minimum,minItems,minLength,minProperties,multipleOf,pattern,properties,readOnly,requiredProperties,title,type,uniqueItems,xml,$ref", + "StringBuilder,LinkedHashSet,SchemaInfo,LinkedHashSet,String,String,StringBuilder,Boolean,Boolean,ExternalDocumentation,String,Items,Float,Integer,Integer,Integer,Float,Integer,Integer,Integer,Float,String,LinkedHashMap,Boolean,LinkedHashSet,String,String,Boolean,Xml,String"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } - var s = "{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,requiredProperties:['x'],'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$ref':'ref'}"; + @Test void b02_roundTripJson() { + var s = "{format:'i',title:'m',description:'e','default':'a',multipleOf:9.0,maximum:1.0,exclusiveMaximum:true,minimum:5.0,exclusiveMinimum:true,maxLength:3,minLength:7,pattern:'k',maxItems:2,minItems:6,uniqueItems:true,maxProperties:4,minProperties:8,requiredProperties:['x'],'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$ref':'p'}"; assertJson(JsonParser.DEFAULT.parse(s, SchemaInfo.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new SchemaInfo(); t = t.copy(); @@ -261,15 +228,15 @@ class SchemaInfo_Test extends SimpleTestBase { .set("externalDocs", externalDocumentation("h")) .set("format", "i") .set("items", items("j")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("maxProperties", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("minProperties", 123) - .set("multipleOf", 123f) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("maxProperties", 4) + .set("minimum", 5f) + .set("minItems", 6) + .set("minLength", 7) + .set("minProperties", 8) + .set("multipleOf", 9f) .set("pattern", "k") .set("properties", map("l",map("l1", 1))) .set("readOnly", true) @@ -278,16 +245,18 @@ class SchemaInfo_Test extends SimpleTestBase { .set("type", "n") .set("uniqueItems", true) .set("xml", xml().setName("o")) - .set("$ref", "ref") + .set("$ref", "p") .copy(); - assertJson(t, "{format:'i',title:'m',description:'e','default':'a',multipleOf:123.0,maximum:123.0,exclusiveMaximum:true,minimum:123.0,exclusiveMinimum:true,maxLength:123,minLength:123,pattern:'k',maxItems:123,minItems:123,uniqueItems:true,maxProperties:123,minProperties:123,requiredProperties:['x'],'enum':['b'],type:'n',items:{type:'j'},allOf:['d'],properties:{l:{l1:1}},additionalProperties:{c:['c1']},discriminator:'f',readOnly:true,xml:{name:'o'},externalDocs:{url:'h'},example:'g','$r [...] + assertBean(t, + "format,title,description,default,multipleOf,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,maxProperties,minProperties,requiredProperties,enum,type,items{type},allOf,properties{l{l1}},additionalProperties{c},discriminator,readOnly,xml{name},externalDocs{url},example,ref", + "i,m,e,a,9.0,1.0,true,5.0,true,3,7,k,2,6,true,4,8,[x],[b],n,{j},[d],{{1}},{[c1]},f,true,{o},{h},g,p"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new SchemaInfo(); - assertJson(t.keySet(), "[]"); + assertEmpty(t.keySet()); t .set("additionalProperties", map("c",alist("c1"))) @@ -302,29 +271,25 @@ class SchemaInfo_Test extends SimpleTestBase { .set("externalDocs", externalDocumentation("h")) .set("format", "i") .set("items", items("j")) - .set("maximum", 123f) - .set("maxItems", 123) - .set("maxLength", 123) - .set("maxProperties", 123) - .set("minimum", 123f) - .set("minItems", 123) - .set("minLength", 123) - .set("minProperties", 123) - .set("multipleOf", 123f) + .set("maximum", 1f) + .set("maxItems", 2) + .set("maxLength", 3) + .set("maxProperties", 4) + .set("minimum", 5f) + .set("minItems", 6) + .set("minLength", 7) + .set("minProperties", 8) + .set("multipleOf", 9f) .set("pattern", "k") .set("properties", map("l",map("l1", 1))) .set("readOnly", true) - .set("$ref", "ref") + .set("$ref", "p") .set("requiredProperties", set("x")) .set("title", "m") .set("type", "n") .set("uniqueItems", true) .set("xml", xml().setName("o")); - assertJson(t.keySet(), - "['additionalProperties','allOf','default','description','discriminator','enum','example','exclusiveMaximum','exclusiveMinimum'," - + "'externalDocs','format','items','maximum','maxItems','maxLength','maxProperties','minimum','minItems','minLength','minProperties'," - + "'multipleOf','pattern','properties','readOnly','$ref','requiredProperties','title','type','uniqueItems','xml']" - ); + assertSet(t.keySet(), "additionalProperties,allOf,default,description,discriminator,enum,example,exclusiveMaximum,exclusiveMinimum,externalDocs,format,items,maximum,maxItems,maxLength,maxProperties,minimum,minItems,minLength,minProperties,multipleOf,pattern,properties,readOnly,$ref,requiredProperties,title,type,uniqueItems,xml"); } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SecurityScheme_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SecurityScheme_Test.java index 5b2820a97..a23248c91 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SecurityScheme_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/SecurityScheme_Test.java @@ -33,7 +33,7 @@ class SecurityScheme_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new SecurityScheme(); - // General + // Basic property setters assertBean( t.setType("a").setDescription("b").setName("c").setIn("d").setFlow("e") .setAuthorizationUrl("f").setTokenUrl("g").setScopes(map("h1","h2")), @@ -41,22 +41,22 @@ class SecurityScheme_Test extends SimpleTestBase { "a,b,c,d,e,f,g,{h1=h2}" ); - // Edge cases for nulls and collections. - assertNull(t.setType(null).getType()); - assertNull(t.setDescription(null).getDescription()); - assertNull(t.setName(null).getName()); - assertNull(t.setIn(null).getIn()); - assertNull(t.setFlow(null).getFlow()); - assertNull(t.setAuthorizationUrl(null).getAuthorizationUrl()); - assertNull(t.setTokenUrl(null).getTokenUrl()); + // Null values + assertBean( + t.setType(null).setDescription(null).setName(null).setIn(null).setFlow(null) + .setAuthorizationUrl(null).setTokenUrl(null).setScopes((Map<String,String>)null), + "type,description,name,in,flow,authorizationUrl,tokenUrl,scopes", + "null,null,null,null,null,null,null,null" + ); + + // Other methods assertEmpty(t.setScopes(map()).getScopes()); - assertNull(t.setScopes((Map<String,String>)null).getScopes()); } /** * Test method for {@link SecurityScheme#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new SecurityScheme(); t @@ -91,15 +91,15 @@ class SecurityScheme_Test extends SimpleTestBase { "g,b,e,d,c,a,f,{foo=bar},ref"); t - .set("authorizationUrl", new StringBuilder("a")) - .set("description", new StringBuilder("b")) - .set("flow", new StringBuilder("c")) - .set("in", new StringBuilder("d")) - .set("name", new StringBuilder("e")) - .set("scopes", new StringBuilder("{foo:'bar'}")) - .set("tokenUrl", new StringBuilder("f")) - .set("type", new StringBuilder("g")) - .set("$ref", new StringBuilder("ref")); + .set("authorizationUrl", sb("a")) + .set("description", sb("b")) + .set("flow", sb("c")) + .set("in", sb("d")) + .set("name", sb("e")) + .set("scopes", sb("{foo:'bar'}")) + .set("tokenUrl", sb("f")) + .set("type", sb("g")) + .set("$ref", sb("ref")); assertBean(t, "type,description,name,in,flow,authorizationUrl,tokenUrl,scopes,$ref", @@ -109,26 +109,22 @@ class SecurityScheme_Test extends SimpleTestBase { "authorizationUrl,description,flow,in,name,scopes,tokenUrl,type,$ref", "a,b,c,d,e,{foo:'bar'},f,g,ref"); - assertType(String.class, t.get("authorizationUrl", Object.class)); - assertType(String.class, t.get("description", Object.class)); - assertType(String.class, t.get("flow", Object.class)); - assertType(String.class, t.get("in", Object.class)); - assertType(String.class, t.get("name", Object.class)); - assertType(Map.class, t.get("scopes", Object.class)); - assertType(String.class, t.get("tokenUrl", Object.class)); - assertType(String.class, t.get("type", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "authorizationUrl,description,flow,in,name,scopes,tokenUrl,type,$ref", + "String,String,String,String,String,LinkedHashMap,String,String,StringBuilder"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{type:'g',description:'b',name:'e','in':'d',flow:'c',authorizationUrl:'a',tokenUrl:'f',scopes:{foo:'bar'},'$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, SecurityScheme.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new SecurityScheme(); t = t.copy(); @@ -152,7 +148,7 @@ class SecurityScheme_Test extends SimpleTestBase { "g,b,e,d,c,a,f,{foo=bar},ref"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new SecurityScheme(); assertEmpty(t.keySet()); diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Swagger_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Swagger_Test.java index cc2ef7b50..eb3d78433 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Swagger_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Swagger_Test.java @@ -35,56 +35,72 @@ class Swagger_Test extends SimpleTestBase { */ @Test void a01_gettersAndSetters() { var t = new Swagger(); - assertBean(t.setSwagger("foo"), "swagger", "foo"); - assertNull(t.setSwagger(null).getSwagger()); - assertJson(t.setInfo(info("foo", "bar")).getInfo(), "{title:'foo',version:'bar'}"); - assertBean(t.setHost("foo"), "host", "foo"); - assertNull(t.setHost(null).getHost()); - assertBean(t.setBasePath("foo"), "basePath", "foo"); - assertNull(t.setBasePath(null).getBasePath()); - assertJson(t.setSchemes(set("foo","bar")).getSchemes(), "['foo','bar']"); - assertJson(t.setSchemes(set()).getSchemes(), "[]"); - assertNull(t.setSchemes((Collection<String>)null).getSchemes()); - assertJson(t.setConsumes(set(MediaType.of("text/foo"))).getConsumes(), "['text/foo']"); - assertJson(t.setConsumes(set()).getConsumes(), "[]"); - assertNull(t.setConsumes((Collection<MediaType>)null).getConsumes()); - assertJson(t.setProduces(set(MediaType.of("text/foo"))).getProduces(), "['text/foo']"); - assertJson(t.setProduces(set()).getProduces(), "[]"); - assertNull(t.setProduces((Collection<MediaType>)null).getProduces()); - assertJson(t.setPaths(map("foo", new OperationMap().append("bar",operation().setSummary("baz")))).getPaths(), "{foo:{bar:{summary:'baz'}}}"); - assertNull(t.setPaths(map()).getPaths()); - assertNull(t.setPaths((Map<String,OperationMap>)null).getPaths()); - assertJson(t.setPaths(null).addPath("a", "a1", operation().setDescription("a2")).addPath("b", null, null).getPaths(), "{a:{a1:{description:'a2'}},b:{null:null}}"); - assertJson(t.setDefinitions(map("foo",JsonMap.of("type","bar"))).getDefinitions(), "{foo:{type:'bar'}}"); - assertJson(t.setDefinitions(map()).getDefinitions(), "{}"); - assertNull(t.setDefinitions((Map<String,JsonMap>)null).getDefinitions()); - assertJson(t.setDefinitions(null).addDefinition("a", JsonMap.of("type","a1")).addDefinition("b", (JsonMap)null).addDefinition(null, JsonMap.of("type", "c1")).getDefinitions(), "{a:{type:'a1'},b:null,null:{type:'c1'}}"); - assertJson(t.setParameters(map("foo",parameterInfo().setName("bar"))).getParameters(), "{foo:{name:'bar'}}"); - assertJson(t.setParameters(map()).getParameters(), "{}"); - assertNull(t.setParameters((Map<String,ParameterInfo>)null).getParameters()); - assertJson(t.setParameters(null).addParameter("a", parameterInfo().setIn("a1")).addParameter("b", null).addParameter(null, parameterInfo().setIn("c1")).getParameters(), "{a:{'in':'a1'},b:null,null:{'in':'c1'}}"); - assertJson(t.setResponses(map("123",responseInfo("bar"))).getResponses(), "{'123':{description:'bar'}}"); - assertJson(t.setResponses(map()).getResponses(), "{}"); - assertNull(t.setResponses((Map<String,ResponseInfo>)null).getResponses()); - assertJson(t.setResponses(null).addResponse("a", responseInfo("a1")).addResponse(null, responseInfo("b1")).addResponse("c", null).getResponses(), "{a:{description:'a1'},null:{description:'b1'},c:null}"); - assertJson(t.setSecurityDefinitions(map("foo",securityScheme("bar"))).getSecurityDefinitions(), "{foo:{type:'bar'}}"); - assertJson(t.setSecurityDefinitions(map()).getSecurityDefinitions(), "{}"); - assertNull(t.setSecurityDefinitions((Map<String,SecurityScheme>)null).getSecurityDefinitions()); - assertJson(t.setSecurityDefinitions(null).addSecurityDefinition("a", securityScheme("a1")).addSecurityDefinition("b", null).addSecurityDefinition(null, securityScheme("c1")).getSecurityDefinitions(), "{a:{type:'a1'},b:null,null:{type:'c1'}}"); - assertJson(t.setSecurity(set(map("foo",alist("bar")))).getSecurity(), "[{foo:['bar']}]"); - assertJson(t.setSecurity(set()).getSecurity(), "[]"); - assertNull(t.setSecurity((Collection<Map<String, List<String>>>)null).getSecurity()); - assertJson(t.setSecurity(null).addSecurity("a", "a1", "a2").addSecurity("b", (String)null).addSecurity(null, "d1", "d2").getSecurity(), "[{a:['a1','a2']},{b:[null]},{null:['d1','d2']}]"); - assertJson(t.setTags(set(tag("foo"))).getTags(), "[{name:'foo'}]"); - assertJson(t.setTags(set()).getTags(), "[]"); - assertNull(t.setTags((Collection<Tag>)null).getTags()); - assertJson(t.setExternalDocs(externalDocumentation("foo")).getExternalDocs(), "{url:'foo'}"); + + // Basic property setters + assertBean( + t.setBasePath("a").setHost("b").setSwagger("c"), + "basePath,host,swagger", + "a,b,c" + ); + + // Complex objects + assertBean( + t.setInfo(info("a", "b")).setExternalDocs(externalDocumentation("c")) + .setSchemes(set("d","e")).setConsumes(set(MediaType.of("text/f"))) + .setProduces(set(MediaType.of("text/g"))) + .setPaths(map("h", new OperationMap().append("i",operation().setSummary("j")))) + .setDefinitions(map("k",JsonMap.of("type","l"))) + .setParameters(map("m",parameterInfo().setName("n"))) + .setResponses(map("1",responseInfo("o"))) + .setSecurityDefinitions(map("p",securityScheme("q"))) + .setSecurity(set(map("r",alist("s")))) + .setTags(set(tag("t"))), + "consumes,definitions{k{type}},externalDocs{url},info{title,version},parameters{m{name}},paths{h{i{summary}}},produces,responses{1{description}},schemes,security,securityDefinitions{p{type}},tags{#{name}}", + "[text/f],{{l}},{c},{a,b},{{n}},{{{j}}},[text/g],{{o}},[d,e],[{r=[s]}],{{q}},{[{t}]}" + ); + + // Null values + assertBean( + t.setSwagger(null).setHost(null).setBasePath(null).setSchemes((Collection<String>)null) + .setConsumes((Collection<MediaType>)null).setProduces((Collection<MediaType>)null) + .setPaths((Map<String,OperationMap>)null).setDefinitions((Map<String,JsonMap>)null) + .setParameters((Map<String,ParameterInfo>)null).setResponses((Map<String,ResponseInfo>)null) + .setSecurityDefinitions((Map<String,SecurityScheme>)null).setSecurity((Collection<Map<String, List<String>>>)null) + .setTags((Collection<Tag>)null), + "basePath,consumes,definitions,host,parameters,paths,produces,responses,schemes,security,securityDefinitions,swagger,tags", + "null,null,null,null,null,null,null,null,null,null,null,null,null" + ); + + // Other methods - empty collections/maps + assertBean( + t.setSchemes(set()).setConsumes(set()).setProduces(set()).setDefinitions(map()) + .setParameters(map()).setResponses(map()).setSecurityDefinitions(map()) + .setSecurity(set()).setTags(set()), + "consumes,definitions,parameters,produces,responses,schemes,security,securityDefinitions,tags", + "[],{},{},[],{},[],[],{},[]" + ); + + assertNull(t.setPaths(map()).getPaths()); // BUG? + + // addX methods. + assertBean(t.setPaths(null).addPath("a", "a1", operation().setDescription("a2")).addPath("b", null, null), + "paths", "{a={a1={\"description\":\"a2\"}},b={null=null}}"); + assertBean(t.setDefinitions(null).addDefinition("a", JsonMap.of("type","a1")).addDefinition("b", (JsonMap)null).addDefinition(null, JsonMap.of("type", "c1")), + "definitions", "{a={type=a1},b=null,null={type=c1}}"); + assertBean(t.setParameters(null).addParameter("a", parameterInfo().setIn("a1")).addParameter("b", null).addParameter(null, parameterInfo().setIn("c1")), + "parameters", "{a={\"in\":\"a1\"},b=null,null={\"in\":\"c1\"}}"); + assertBean(t.setResponses(null).addResponse("a", responseInfo("a1")).addResponse(null, responseInfo("b1")).addResponse("c", null), + "responses", "{a={\"description\":\"a1\"},null={\"description\":\"b1\"},c=null}"); + assertBean(t.setSecurityDefinitions(null).addSecurityDefinition("a", securityScheme("a1")).addSecurityDefinition("b", null).addSecurityDefinition(null, securityScheme("c1")), + "securityDefinitions", "{a={\"type\":\"a1\"},b=null,null={\"type\":\"c1\"}}"); + assertBean(t.setSecurity(null).addSecurity("a", "a1", "a2").addSecurity("b", (String)null).addSecurity(null, "d1", "d2"), + "security", "[{a=[a1,a2]},{b=[null]},{null=[d1,d2]}]"); } /** * Test method for {@link Swagger#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new Swagger(); t @@ -103,9 +119,11 @@ class Swagger_Test extends SimpleTestBase { .set("securityDefinitions", map("m",securityScheme("m1"))) .set("swagger", "n") .set("tags", set(tag("o"))) - .set("$ref", "ref"); + .set("$ref", "p"); - assertJson(t, "{swagger:'n',info:{title:'f1',version:'f2'},tags:[{name:'o'}],externalDocs:{url:'d'},basePath:'a',schemes:['k1'],consumes:['text/b'],produces:['text/i'],paths:{h:{h1:{operationId:'h2'}}},definitions:{c:{type:'c1'}},parameters:{g:{'in':'g1',name:'g2'}},responses:{j:{description:'j1'}},securityDefinitions:{m:{type:'m1'}},security:[{l1:['l2']}],'$ref':'ref'}"); + assertBean(t, + "basePath,consumes,definitions{c{type}},externalDocs{url},host,info{title,version},parameters{g{in,name}},paths{h{h1{operationId}}},produces,$ref,responses{j{description}},schemes,security,securityDefinitions{m{type}},swagger,tags{#{name}}", + "a,[text/b],{{c1}},{d},e,{f1,f2},{{g1,g2}},{{{h2}}},[text/i],p,{{j1}},[k1],[{l1=[l2]}],{{m1}},n,{[{o}]}"); t .set("basePath", "a") @@ -125,66 +143,55 @@ class Swagger_Test extends SimpleTestBase { .set("tags", "[{name:'o'}]") .set("$ref", "ref"); - assertJson(t, "{swagger:'n',info:{title:'f1',version:'f2'},tags:[{name:'o'}],externalDocs:{url:'d'},basePath:'a',schemes:['k1'],consumes:['text/b'],produces:['text/i'],paths:{h:{h1:{operationId:'h2'}}},definitions:{c:{type:'c1'}},parameters:{g:{'in':'g1',name:'g2'}},responses:{j:{description:'j1'}},securityDefinitions:{m:{type:'m1'}},security:[{l1:['l2']}],'$ref':'ref'}"); + assertBean(t, + "swagger,info{title,version},tags{#{name}},externalDocs{url},basePath,schemes,consumes,produces,paths{h{h1{operationId}}},definitions{c{type}},parameters{g{in,name}},responses{j{description}},securityDefinitions{m{type}},security,$ref", + "n,{f1,f2},{[{o}]},{d},a,[k1],[text/b],[text/i],{{{h2}}},{{c1}},{{g1,g2}},{{j1}},{{m1}},[{l1=[l2]}],ref"); t - .set("basePath", new StringBuilder("a")) - .set("consumes", new StringBuilder("['text/b']")) - .set("definitions", new StringBuilder("{c:{type:'c1'}}")) - .set("externalDocs", new StringBuilder("{url:'d'}")) - .set("host", new StringBuilder("e")) - .set("info", new StringBuilder("{title:'f1',version:'f2'}")) - .set("parameters", new StringBuilder("{g:{'in':'g1',name:'g2'}}")) - .set("paths", new StringBuilder("{h:{h1:{operationId:'h2'}}}")) - .set("produces", new StringBuilder("['text/i']")) - .set("responses", new StringBuilder("{j:{description:'j1'}}")) - .set("schemes", new StringBuilder("['k1']")) - .set("security", new StringBuilder("[{l1:['l2']}]")) - .set("securityDefinitions", new StringBuilder("{m:{type:'m1'}}")) - .set("swagger", new StringBuilder("n")) - .set("tags", new StringBuilder("[{name:'o'}]")) - .set("$ref", new StringBuilder("ref")); - - assertJson(t, "{swagger:'n',info:{title:'f1',version:'f2'},tags:[{name:'o'}],externalDocs:{url:'d'},basePath:'a',schemes:['k1'],consumes:['text/b'],produces:['text/i'],paths:{h:{h1:{operationId:'h2'}}},definitions:{c:{type:'c1'}},parameters:{g:{'in':'g1',name:'g2'}},responses:{j:{description:'j1'}},securityDefinitions:{m:{type:'m1'}},security:[{l1:['l2']}],'$ref':'ref'}"); - - assertMapped(t, (obj,prop) -> obj.get(prop, String.class), - "basePath,consumes,definitions,externalDocs,host,info,parameters,paths,produces,responses,schemes,security,securityDefinitions,swagger,tags,$ref", + .set("basePath", sb("a")) + .set("consumes", sb("['text/b']")) + .set("definitions", sb("{c:{type:'c1'}}")) + .set("externalDocs", sb("{url:'d'}")) + .set("host", sb("e")) + .set("info", sb("{title:'f1',version:'f2'}")) + .set("parameters", sb("{g:{'in':'g1',name:'g2'}}")) + .set("paths", sb("{h:{h1:{operationId:'h2'}}}")) + .set("produces", sb("['text/i']")) + .set("responses", sb("{j:{description:'j1'}}")) + .set("schemes", sb("['k1']")) + .set("security", sb("[{l1:['l2']}]")) + .set("securityDefinitions", sb("{m:{type:'m1'}}")) + .set("swagger", sb("n")) + .set("tags", sb("[{name:'o'}]")) + .set("$ref", sb("ref")); + + assertBean(t, + "swagger,info{title,version},tags{#{name}},externalDocs{url},basePath,schemes,consumes,produces,paths{h{h1{operationId}}},definitions{c{type}},parameters{g{in,name}},responses{j{description}},securityDefinitions{m{type}},security,$ref", + "n,{f1,f2},{[{o}]},{d},a,[k1],[text/b],[text/i],{{{h2}}},{{c1}},{{g1,g2}},{{j1}},{{m1}},[{l1=[l2]}],ref"); + + assertMapped(t, (obj,prop) -> obj.get(prop, String.class), + "basePath,consumes,definitions,externalDocs,host,info,parameters,paths,produces,responses,schemes,security,securityDefinitions,swagger,tags,$ref", "a,['text/b'],{c:{type:'c1'}},{url:'d'},e,{title:'f1',version:'f2'},{g:{'in':'g1',name:'g2'}},{h:{h1:{operationId:'h2'}}},['text/i'],{j:{description:'j1'}},['k1'],[{l1:['l2']}],{m:{type:'m1'}},n,[{name:'o'}],ref"); - assertType(String.class, t.get("basePath", Object.class)); - assertType(Set.class, t.get("consumes", Object.class)); - assertType(MediaType.class, t.get("consumes", List.class).get(0)); - assertType(Map.class, t.get("definitions", Object.class)); - assertType(JsonMap.class, t.get("definitions", Map.class).values().iterator().next()); - assertType(ExternalDocumentation.class, t.get("externalDocs", Object.class)); - assertType(String.class, t.get("host", Object.class)); - assertType(Info.class, t.get("info", Object.class)); - assertType(Map.class, t.get("parameters", Object.class)); - assertType(ParameterInfo.class, t.get("parameters", Map.class).values().iterator().next()); - assertType(Map.class, t.get("paths", Object.class)); - assertType(Set.class, t.get("produces", Object.class)); - assertType(MediaType.class, t.get("consumes", List.class).get(0)); - assertType(Map.class, t.get("responses", Object.class)); - assertType(ResponseInfo.class, t.get("responses", Map.class).values().iterator().next()); - assertType(Set.class, t.get("schemes", Object.class)); - assertType(List.class, t.get("security", Object.class)); - assertType(Map.class, t.get("securityDefinitions", Object.class)); - assertType(SecurityScheme.class, t.get("securityDefinitions", Map.class).values().iterator().next()); - assertType(String.class, t.get("swagger", Object.class)); - assertType(Set.class, t.get("tags", Object.class)); - assertType(Tag.class, t.get("tags", List.class).get(0)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "basePath,consumes,definitions,externalDocs,host,info,parameters,paths,produces,responses,schemes,security,securityDefinitions,swagger,tags,$ref", + "String,LinkedHashSet,LinkedHashMap,ExternalDocumentation,String,Info,LinkedHashMap,TreeMap,LinkedHashSet,LinkedHashMap,LinkedHashSet,ArrayList,LinkedHashMap,String,LinkedHashSet,StringBuilder"); + + assertMapped(t, (o,k) -> o.get(k, List.class).get(0).getClass().getSimpleName(), "consumes,tags", "MediaType,Tag"); + assertMapped(t, (o,k) -> o.get(k, Map.class).values().iterator().next().getClass().getSimpleName(), "definitions,parameters,responses,securityDefinitions", "JsonMap,ParameterInfo,ResponseInfo,SecurityScheme"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{swagger:'n',info:{title:'f1',version:'f2'},tags:[{name:'o'}],externalDocs:{url:'d'},basePath:'a',schemes:['k1'],consumes:['text/b'],produces:['text/i'],paths:{h:{h1:{operationId:'h2'}}},definitions:{c:{type:'c1'}},parameters:{g:{'in':'g1',name:'g2'}},responses:{j:{description:'j1'}},securityDefinitions:{m:{type:'m1'}},security:[{l1:['l2']}],'$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, Swagger.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Swagger(); t = t.copy(); @@ -207,13 +214,15 @@ class Swagger_Test extends SimpleTestBase { .set("securityDefinitions", map("m",securityScheme("m1"))) .set("swagger", "n") .set("tags", set(tag("o"))) - .set("$ref", "ref") + .set("$ref", "p") .copy(); - assertJson(t, "{swagger:'n',info:{title:'f1',version:'f2'},tags:[{name:'o'}],externalDocs:{url:'d'},basePath:'a',schemes:['k1'],consumes:['text/b'],produces:['text/i'],paths:{h:{h1:{operationId:'h2'}}},definitions:{c:{type:'c1'}},parameters:{g:{'in':'g1',name:'g2'}},responses:{j:{description:'j1'}},securityDefinitions:{m:{type:'m1'}},security:[{l1:['l2']}],'$ref':'ref'}"); + assertBean(t, + "swagger,info{title,version},tags{#{name}},externalDocs{url},basePath,schemes,consumes,produces,paths{h{h1{operationId}}},definitions{c{type}},parameters{g{in,name}},responses{j{description}},securityDefinitions{m{type}},security,$ref", + "n,{f1,f2},{[{o}]},{d},a,[k1],[text/b],[text/i],{{{h2}}},{{c1}},{{g1,g2}},{{j1}},{{m1}},[{l1=[l2]}],p"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Swagger(); assertJson(t.keySet(), "['swagger']"); @@ -234,11 +243,8 @@ class Swagger_Test extends SimpleTestBase { .set("securityDefinitions", map("m",securityScheme("m1"))) .set("swagger", "n") .set("tags", set(tag("o"))) - .set("$ref", "ref"); + .set("$ref", "p"); - assertJson(t.keySet(), - "['basePath','consumes','definitions','externalDocs','host','info','parameters','paths','produces','responses'," - + "'schemes','security','securityDefinitions','swagger','tags','$ref']" - ); + assertSet(t.keySet(), "basePath,consumes,definitions,externalDocs,host,info,parameters,paths,produces,responses,schemes,security,securityDefinitions,swagger,tags,$ref"); } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Tag_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Tag_Test.java index 17a1abd04..6cf07b1e5 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Tag_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Tag_Test.java @@ -17,7 +17,6 @@ import static org.apache.juneau.bean.swagger.SwaggerBuilder.*; import static org.junit.jupiter.api.Assertions.*; import org.apache.juneau.*; -import org.apache.juneau.bean.swagger.*; import org.apache.juneau.bean.swagger.Tag; import org.apache.juneau.json.*; import org.junit.jupiter.api.*; @@ -33,22 +32,25 @@ class Tag_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new Tag(); - // General + // Basic property setters assertBean( t.setName("a").setDescription("b").setExternalDocs(externalDocumentation("c")), "name,description,externalDocs{url}", "a,b,{c}" ); - // Edge cases for nulls. - assertNull(t.setName(null).getName()); - assertNull(t.setDescription(null).getDescription()); + // Null values + assertBean( + t.setName(null).setDescription(null), + "name,description", + "null,null" + ); } /** * Test method for {@link Tag#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new Tag(); t @@ -73,10 +75,10 @@ class Tag_Test extends SimpleTestBase { "c,a,{b},ref"); t - .set("description", new StringBuilder("a")) - .set("externalDocs", new StringBuilder("{url:'b'}")) - .set("name", new StringBuilder("c")) - .set("$ref", new StringBuilder("ref")); + .set("description", sb("a")) + .set("externalDocs", sb("{url:'b'}")) + .set("name", sb("c")) + .set("$ref", sb("ref")); assertBean(t, "name,description,externalDocs{url},$ref", @@ -86,21 +88,22 @@ class Tag_Test extends SimpleTestBase { "description,externalDocs,name,$ref", "a,{url:'b'},c,ref"); - assertType(String.class, t.get("description", Object.class)); - assertType(ExternalDocumentation.class, t.get("externalDocs", Object.class)); - assertType(String.class, t.get("name", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "description,externalDocs,name,$ref", + "String,ExternalDocumentation,String,StringBuilder"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } + @Test void b02_roundTripJson() { var s = "{name:'c',description:'a',externalDocs:{url:'b'},'$ref':'ref'}"; assertJson(JsonParser.DEFAULT.parse(s, Tag.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Tag(); t = t.copy(); @@ -119,7 +122,7 @@ class Tag_Test extends SimpleTestBase { "c,a,{b},ref"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Tag(); assertEmpty(t.keySet()); diff --git a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Xml_Test.java b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Xml_Test.java index 83ebea404..c6f88119e 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Xml_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/dto/swagger/Xml_Test.java @@ -31,23 +31,25 @@ class Xml_Test extends SimpleTestBase { @Test void a01_gettersAndSetters() { var t = new Xml(); - // General + // Basic property setters assertBean( t.setName("a").setNamespace("b").setPrefix("c").setAttribute(true).setWrapped(true), "name,namespace,prefix,attribute,wrapped", "a,b,c,true,true" ); - // Edge cases for nulls. - assertNull(t.setName(null).getName()); - assertNull(t.setNamespace(null).getNamespace()); - assertNull(t.setPrefix(null).getPrefix()); + // Null values + assertBean( + t.setName(null).setNamespace(null).setPrefix(null), + "name,namespace,prefix", + "null,null,null" + ); } /** * Test method for {@link Xml#set(java.lang.String, java.lang.Object)}. */ - @Test void b01_set() throws Exception { + @Test void b01_set() { var t = new Xml(); t @@ -56,12 +58,12 @@ class Xml_Test extends SimpleTestBase { .set("namespace", "b") .set("prefix", "c") .set("wrapped", true) - .set("$ref", "ref"); + .set("$ref", "d"); // Comprehensive object state validation assertBean(t, "name,namespace,prefix,attribute,wrapped,$ref", - "a,b,c,true,true,ref"); + "a,b,c,true,true,d"); t .set("attribute", "true") @@ -69,45 +71,44 @@ class Xml_Test extends SimpleTestBase { .set("namespace", "b") .set("prefix", "c") .set("wrapped", "true") - .set("$ref", "ref"); + .set("$ref", "d"); assertBean(t, "name,namespace,prefix,attribute,wrapped,$ref", - "a,b,c,true,true,ref"); + "a,b,c,true,true,d"); t - .set("attribute", new StringBuilder("true")) - .set("name", new StringBuilder("a")) - .set("namespace", new StringBuilder("b")) - .set("prefix", new StringBuilder("c")) - .set("wrapped", new StringBuilder("true")) - .set("$ref", new StringBuilder("ref")); + .set("attribute", sb("true")) + .set("name", sb("a")) + .set("namespace", sb("b")) + .set("prefix", sb("c")) + .set("wrapped", sb("true")) + .set("$ref", sb("d")); assertBean(t, "name,namespace,prefix,attribute,wrapped,$ref", - "a,b,c,true,true,ref"); + "a,b,c,true,true,d"); assertMapped(t, (obj,prop) -> obj.get(prop, String.class), "attribute,name,namespace,prefix,wrapped,$ref", - "true,a,b,c,true,ref"); + "true,a,b,c,true,d"); - assertType(Boolean.class, t.get("attribute", Object.class)); - assertType(String.class, t.get("name", Object.class)); - assertType(String.class, t.get("namespace", Object.class)); - assertType(String.class, t.get("prefix", Object.class)); - assertType(Boolean.class, t.get("wrapped", Object.class)); - assertType(StringBuilder.class, t.get("$ref", Object.class)); + assertMapped(t, (obj,prop) -> obj.get(prop, Object.class).getClass().getSimpleName(), + "attribute,name,namespace,prefix,wrapped,$ref", + "Boolean,String,String,String,Boolean,StringBuilder"); t.set("null", null).set(null, "null"); assertNull(t.get("null", Object.class)); assertNull(t.get(null, Object.class)); assertNull(t.get("foo", Object.class)); + } - var s = "{name:'a',namespace:'b',prefix:'c',attribute:true,wrapped:true,'$ref':'ref'}"; + @Test void b02_roundTripJson() { + var s = "{name:'a',namespace:'b',prefix:'c',attribute:true,wrapped:true,'$ref':'d'}"; assertJson(JsonParser.DEFAULT.parse(s, Xml.class), s); } - @Test void b02_copy() { + @Test void b03_copy() { var t = new Xml(); t = t.copy(); @@ -120,15 +121,15 @@ class Xml_Test extends SimpleTestBase { .set("namespace", "b") .set("prefix", "c") .set("wrapped", true) - .set("$ref", "ref") + .set("$ref", "d") .copy(); assertBean(t, "name,namespace,prefix,attribute,wrapped,$ref", - "a,b,c,true,true,ref"); + "a,b,c,true,true,d"); } - @Test void b03_keySet() { + @Test void b04_keySet() { var t = new Xml(); assertEmpty(t.keySet()); @@ -139,7 +140,7 @@ class Xml_Test extends SimpleTestBase { .set("namespace", "b") .set("prefix", "c") .set("wrapped", true) - .set("$ref", "ref"); + .set("$ref", "d"); assertSet(t.keySet(), "attribute,name,namespace,prefix,wrapped,$ref"); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java index 00d63612b..2f9487e69 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java @@ -52,18 +52,10 @@ class FormDataAnnotation_Test extends SimpleTestBase { .build(); @Test void a01_basic() { - assertJsonMatches(a1, "" - + "{" - + "def:'def'," - + "description:['description']," - + "name:'name'," - + "on:['on']," - + "onClass:['org.apache.juneau.http.annotation.FormDataAnnotation_Test$X1']," - + "parser:'org.apache.juneau.oapi.OpenApiParser'," - + "schema:{*}," - + "serializer:'org.apache.juneau.oapi.OpenApiSerializer'," - + "value:'value'" - + "}" + assertBean( + a1, + "def,description,name,on,onClass{#{simpleName}},parser{simpleName},schema{description},serializer{simpleName},value", + "def,[description],name,[on],{[{X1}]},{OpenApiParser},{[]},{OpenApiSerializer},value" ); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java index 752a251ca..55662831e 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java @@ -52,18 +52,10 @@ class HeaderAnnotation_Test extends SimpleTestBase { .build(); @Test void a01_basic() { - assertJsonMatches(a1, "" - + "{" - + "def:'def'," - + "description:['description']," - + "name:'name'," - + "on:['on']," - + "onClass:['"+CNAME+"$X1']," - + "parser:'org.apache.juneau.oapi.OpenApiParser'," - + "schema:{*}," - + "serializer:'org.apache.juneau.oapi.OpenApiSerializer'," - + "value:'value'" - + "}" + assertBean( + a1, + "def,description,name,on,onClass{#{simpleName}},parser{simpleName},serializer{simpleName},value", + "def,[description],name,[on],{[{X1}]},{OpenApiParser},{OpenApiSerializer},value" ); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/PathAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/PathAnnotation_Test.java index 43315bbf2..465218ede 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/PathAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/PathAnnotation_Test.java @@ -52,18 +52,10 @@ class PathAnnotation_Test extends SimpleTestBase { .build(); @Test void a01_basic() { - assertJsonMatches(a1, "" - + "{" - + "def:'def'," - + "description:['description']," - + "name:'name'," - + "on:['on']," - + "onClass:['"+CNAME+"$X1']," - + "parser:'org.apache.juneau.oapi.OpenApiParser'," - + "schema:{*}," - + "serializer:'org.apache.juneau.oapi.OpenApiSerializer'," - + "value:'value'" - + "}" + assertBean( + a1, + "def,description,name,on,onClass{#{simpleName}},parser{simpleName},serializer{simpleName},value", + "def,[description],name,[on],{[{X1}]},{OpenApiParser},{OpenApiSerializer},value" ); } diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java index 454e7e941..05e359efd 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java @@ -30,40 +30,32 @@ class QueryAnnotation_Test extends SimpleTestBase { //------------------------------------------------------------------------------------------------------------------ Query a1 = QueryAnnotation.create() - .def("def") - .description("description") - .name("name") - .on("on") + .def("a") + .description("b") + .name("c") + .on("d") .onClass(X1.class) .parser(OpenApiParser.class) .serializer(OpenApiSerializer.class) - .value("value") + .value("e") .build(); Query a2 = QueryAnnotation.create() - .def("def") - .description("description") - .name("name") - .on("on") + .def("a") + .description("b") + .name("c") + .on("d") .onClass(X1.class) .parser(OpenApiParser.class) .serializer(OpenApiSerializer.class) - .value("value") + .value("e") .build(); @Test void a01_basic() { - assertJsonMatches(a1, "" - + "{" - + "def:'def'," - + "description:['description']," - + "name:'name'," - + "on:['on']," - + "onClass:['"+CNAME+"$X1']," - + "parser:'org.apache.juneau.oapi.OpenApiParser'," - + "schema:{*}," - + "serializer:'org.apache.juneau.oapi.OpenApiSerializer'," - + "value:'value'" - + "}" + assertBean( + a1, + "def,description,name,on,onClass{#{simpleName}},parser{simpleName},serializer{simpleName},value", + "a,[b],c,[d],{[{X1}]},{OpenApiParser},{OpenApiSerializer},e" ); } @@ -113,27 +105,27 @@ class QueryAnnotation_Test extends SimpleTestBase { //------------------------------------------------------------------------------------------------------------------ @Query( - def="def", - description={ "description" }, - name="name", - on="on", + def="a", + description={ "b" }, + name="c", + on="d", onClass=X1.class, parser=OpenApiParser.class, serializer=OpenApiSerializer.class, - value="value" + value="e" ) public static class D1 {} Query d1 = D1.class.getAnnotationsByType(Query.class)[0]; @Query( - def="def", - description={ "description" }, - name="name", - on="on", + def="a", + description={ "b" }, + name="c", + on="d", onClass=X1.class, parser=OpenApiParser.class, serializer=OpenApiSerializer.class, - value="value" + value="e" ) public static class D2 {} Query d2 = D2.class.getAnnotationsByType(Query.class)[0]; diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java index 28d48e092..66ae3b893 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/ResponseAnnotation_Test.java @@ -53,17 +53,10 @@ class ResponseAnnotation_Test extends SimpleTestBase { .build(); @Test void a01_basic() { - assertJsonMatches(a1, "" - + "{" - + "description:['description']," - + "examples:['examples']," - + "headers:[*]," - + "on:['on']," - + "onClass:['"+CNAME+"$X1']," - + "parser:'org.apache.juneau.oapi.OpenApiParser'," - + "schema:{*," - + "serializer:'org.apache.juneau.oapi.OpenApiSerializer'" - + "}" + assertBean( + a1, + "description,examples,on,onClass{#{simpleName}},parser{simpleName},serializer{simpleName}", + "[description],[examples],[on],{[{X1}]},{OpenApiParser},{OpenApiSerializer}" ); }