11package org .javawebstack .httpserver .test ;
22
33import com .google .gson .JsonElement ;
4+ import org .javawebstack .graph .GraphElement ;
45import org .javawebstack .httpserver .Exchange ;
56import org .javawebstack .httpserver .HTTPServer ;
7+ import org .javawebstack .httpserver .helper .MimeType ;
68import org .junit .jupiter .api .Assertions ;
79
10+ import java .util .Collection ;
11+
812public class TestExchange extends Exchange {
913 private MockHttpServletRequest mockReq ;
1014 private MockHttpServletResponse mockRes ;
@@ -71,11 +75,11 @@ public TestExchange assertHeader(String key, String value, String message){
7175 return this ;
7276 }
7377 public TestExchange assertJsonPath (String path , Object value ){
74- Assertions .assertTrue (checkJson (getPathElement (getServer (). getGson (). fromJson ( mockRes . getContentString (), JsonElement . class ), path ), value ));
78+ Assertions .assertTrue (checkGraph (getPathElement (mockResponseBody ( mockRes ), path ), value ));
7579 return this ;
7680 }
7781 public TestExchange assertJsonPath (String path , Object value , String message ){
78- Assertions .assertTrue (checkJson (getPathElement (getServer (). getGson (). fromJson ( mockRes . getContentString (), JsonElement . class ), path ), value ), message );
82+ Assertions .assertTrue (checkGraph (getPathElement (mockResponseBody ( mockRes ), path ), value ), message );
7983 return this ;
8084 }
8185 public TestExchange assertJson (Object value ){
@@ -94,50 +98,63 @@ public TestExchange assertBody(String content, String message){
9498 Assertions .assertEquals (content , mockRes .getContentString (), message );
9599 return this ;
96100 }
97- private boolean checkJson (JsonElement element , Object value ){
101+ private GraphElement mockResponseBody (MockHttpServletResponse response ){
102+ MimeType type = MimeType .byMimeType (response .getContentType ());
103+ if (type == null )
104+ type = MimeType .JSON ;
105+ switch (type ){
106+ default :
107+ return GraphElement .fromJson (response .getContentString ());
108+ case YAML :
109+ return GraphElement .fromYaml (response .getContentString (), true );
110+ case X_WWW_FORM_URLENCODED :
111+ return GraphElement .fromFormData (response .getContentString ());
112+ }
113+ }
114+ private boolean checkGraph (GraphElement element , Object value ){
98115 if (value == null )
99116 return element == null ;
100117 if (element == null )
101118 return false ;
102- JsonElement val = getServer ().getGson ().toJsonTree (value );
103- if (val .isJsonNull ())
104- return element .isJsonNull ();
105- if (val .isJsonObject ()){
106- if (!element .isJsonObject ())
119+ GraphElement val = getServer ().getGraphMapper ().toGraph (value );
120+ if (val .isNull ())
121+ return element .isNull ();
122+ if (val .isObject ()){
123+ if (!element .isObject ())
107124 return false ;
108- for (String key : val .getAsJsonObject ().keySet ()){
109- if (!element .getAsJsonObject ().has (key ))
125+ for (String key : val .object ().keys ()){
126+ if (!element .object ().has (key ))
110127 return false ;
111- if (!checkJson (element .getAsJsonObject ().get (key ), val .getAsJsonObject ().get (key )))
128+ if (!checkGraph (element .object ().get (key ), val .object ().get (key )))
112129 return false ;
113130 }
114131 return true ;
115132 }
116- if (val .isJsonArray ()){
117- if (!element .isJsonArray ())
133+ if (val .isArray ()){
134+ if (!element .isArray ())
118135 return false ;
119- if (val .getAsJsonArray ().size () != element .getAsJsonArray ().size ())
136+ if (val .array ().size () != element .array ().size ())
120137 return false ;
121- for (int i =0 ; i <val .getAsJsonArray ().size (); i ++){
122- if (!checkJson (element .getAsJsonArray ().get (i ), val .getAsJsonArray ().get (i )))
138+ for (int i =0 ; i <val .array ().size (); i ++){
139+ if (!checkGraph (element .array ().get (i ), val .array ().get (i )))
123140 return false ;
124141 }
125142 return true ;
126143 }
127- if (val .getAsJsonPrimitive (). isString ()){
128- if (!element .getAsJsonPrimitive (). isString ())
144+ if (val .isString ()){
145+ if (!element .isString ())
129146 return false ;
130- return val .getAsString ().equals (element .getAsString ());
147+ return val .string ().equals (element .string ());
131148 }
132- if (val .getAsJsonPrimitive (). isNumber ()){
133- if (!element .getAsJsonPrimitive (). isNumber ())
149+ if (val .isNumber ()){
150+ if (!element .isNumber ())
134151 return false ;
135- return val .getAsNumber ().equals (element .getAsNumber ());
152+ return val .number ().equals (element .number ());
136153 }
137- if (val .getAsJsonPrimitive (). isBoolean ()){
138- if (!element .getAsJsonPrimitive (). isBoolean ())
154+ if (val .isBoolean ()){
155+ if (!element .isBoolean ())
139156 return false ;
140- return val .getAsBoolean () == element .getAsBoolean ();
157+ return val .bool () == element .bool ();
141158 }
142159 return false ;
143160 }
0 commit comments