22
33import eu .chargetime .ocpp .SOAPCommunicator ;
44import eu .chargetime .ocpp .Transmitter ;
5+ import eu .chargetime .ocpp .model .TestModel ;
56import eu .chargetime .ocpp .model .core .BootNotificationRequest ;
67import eu .chargetime .ocpp .utilities .TestUtilities ;
78import org .junit .Before ;
89import org .junit .Test ;
910import org .mockito .Mock ;
1011import org .w3c .dom .Document ;
12+ import org .xml .sax .InputSource ;
1113
14+ import javax .xml .parsers .DocumentBuilder ;
15+ import javax .xml .parsers .DocumentBuilderFactory ;
1216import javax .xml .transform .Transformer ;
1317import javax .xml .transform .TransformerFactory ;
1418import javax .xml .transform .dom .DOMSource ;
1519import javax .xml .transform .stream .StreamResult ;
20+ import java .io .StringReader ;
1621import java .io .StringWriter ;
22+ import java .util .Calendar ;
23+ import java .util .TimeZone ;
1724
18- import static org .hamcrest .CoreMatchers .equalTo ;
25+ import static org .hamcrest .CoreMatchers .* ;
1926import static org .hamcrest .MatcherAssert .assertThat ;
2027import static org .mockito .Mockito .mock ;
2128
@@ -58,6 +65,189 @@ public void setup() {
5865 communicator = new SOAPCommunicator (chargeBoxIdentity , fromUrl , transmitter );
5966 }
6067
68+ @ Test
69+ public void unpackPayload_emptyPayload_returnRequestedType () throws Exception {
70+ // Given
71+ Document payload = stringToDocument ("<bootNotificationRequest xmlns=\" urn://Ocpp/Cp/2015/10\" ></bootNotificationRequest>" );
72+ Class <?> type = BootNotificationRequest .class ;
73+
74+ // When
75+ Object result = communicator .unpackPayload (payload , type );
76+
77+ // Then
78+ assertThat (result , instanceOf (type ));
79+ }
80+
81+ @ Test
82+ public void unpackPayload_aStringPayload_returnsTestModelWithAString () throws Exception {
83+ // Given
84+ String aString = "Some string" ;
85+ String xml = "<testModel><stringTest>%s</stringTest></testModel>" ;
86+ Document payload = stringToDocument (String .format (xml , aString ));
87+
88+ // When
89+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
90+
91+ // Then
92+ assertThat (model .getStringTest (), equalTo (aString ));
93+ }
94+
95+ @ Test
96+ public void unpackPayload_aCalendarPayload_returnsTestModelWithACalendar () throws Exception {
97+ // Given
98+ String aCalendar = "2016-04-28T07:16:11.988Z" ;
99+ String xml = "<testModel><calendarTest>%s</calendarTest></testModel>" ;
100+ Document payload = stringToDocument (String .format (xml , aCalendar ));
101+
102+ Calendar someDate = new Calendar .Builder ().setDate (2016 , 03 , 28 ).setTimeOfDay (07 , 16 , 11 , 988 ).setTimeZone (TimeZone .getTimeZone ("GMT+00:00" )).build ();
103+
104+ // When
105+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
106+
107+ // Then
108+ assertThat (model .getCalendarTest ().compareTo (someDate ), is (0 ));
109+ }
110+
111+ @ Test
112+ public void unpackPayload_anIntegerPayload_returnsTestModelWithAnInteger () throws Exception {
113+ // Given
114+ Integer anInteger = 1337 ;
115+ String xml = "<testModel><integerTest>%d</integerTest></testModel>" ;
116+ Document payload = stringToDocument (String .format (xml , anInteger ));
117+
118+
119+ // When
120+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
121+
122+ // Then
123+ assertThat (model .getIntegerTest (), equalTo (anInteger ));
124+ }
125+
126+ @ Test
127+ public void unpackPayload_aGenericIntPayload_returnsTestModelWithAGenericInt () throws Exception {
128+ // Given
129+ int anInteger = 1337 ;
130+ String xml = "<testModel><intTest>%d</intTest></testModel>" ;
131+ Document payload = stringToDocument (String .format (xml , anInteger ));
132+
133+ // When
134+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
135+
136+ // Then
137+ assertThat (model .getIntTest (), equalTo (anInteger ));
138+ }
139+
140+ @ Test
141+ public void unpackPayload_aLongPayload_returnsTestModelWithALong () throws Exception {
142+ // Given
143+ Long aLong = 1337L ;
144+ String xml = "<testModel><longTest>%d</longTest></testModel>" ;
145+ Document payload = stringToDocument (String .format (xml , aLong ));
146+
147+ // When
148+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
149+
150+ // Then
151+ assertThat (model .getLongTest (), equalTo (aLong ));
152+ }
153+
154+ @ Test
155+ public void unpackPayload_aGenericLongPayload_returnsTestModelWithAGenericLong () throws Exception {
156+ // Given
157+ long aLong = 1337 ;
158+ String xml = "<testModel><genericLongTest>%d</genericLongTest></testModel>" ;
159+ Document payload = stringToDocument (String .format (xml , aLong ));
160+
161+ // When
162+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
163+
164+ // Then
165+ assertThat (model .getGenericLongTest (), equalTo (aLong ));
166+ }
167+
168+ @ Test
169+ public void unpackPayload_aDoublePayload_returnsTestModelWithADouble () throws Exception {
170+ // Given
171+ Double aDouble = 13.37D ;
172+ String xml = "<testModel><doubleTest>%f</doubleTest></testModel>" ;
173+ Document payload = stringToDocument (String .format (xml , aDouble ));
174+
175+ // When
176+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
177+
178+ // Then
179+ assertThat (model .getDoubleTest (), equalTo (aDouble ));
180+ }
181+
182+ @ Test
183+ public void unpackPayload_aGenericDoublePayload_returnsTestModelWithAGenericDouble () throws Exception {
184+ // Given
185+ double aDouble = 13.37 ;
186+ String xml = "<testModel><genericDoubleTest>%f</genericDoubleTest></testModel>" ;
187+ Document payload = stringToDocument (String .format (xml , aDouble ));
188+
189+ // When
190+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
191+
192+ // Then
193+ assertThat (model .getGenericDoubleTest (), equalTo (aDouble ));
194+ }
195+
196+ @ Test
197+ public void unpackPayload_aBooleanPayload_returnsTestModelWithABoolean () throws Exception {
198+ // Given
199+ Boolean aBoolean = false ;
200+ String xml = "<testModel><booleanTest>%b</booleanTest></testModel>" ;
201+ Document payload = stringToDocument (String .format (xml , aBoolean ));
202+
203+ // When
204+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
205+
206+ // Then
207+ assertThat (model .getBooleanTest (), equalTo (aBoolean ));
208+ }
209+
210+ @ Test
211+ public void unpackPayload_aGenericBooleanPayload_returnsTestModelWithAGenericBoolean () throws Exception {
212+ // Given
213+ boolean aBoolean = false ;
214+ String xml = "<testModel><genericBooleanTest>%b</genericBooleanTest></testModel>" ;
215+ Document payload = stringToDocument (String .format (xml , aBoolean ));
216+
217+ // When
218+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
219+
220+ // Then
221+ assertThat (model .isGenericBoleanTest (), equalTo (aBoolean ));
222+ }
223+
224+ @ Test
225+ public void unpackPayload_anObjectPayload_returnsTestModelWithAnObject () throws Exception {
226+ // Given
227+ String xml = "<testModel><objectTest></objectTest></testModel>" ;
228+ Document payload = stringToDocument (xml );
229+
230+ // When
231+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
232+
233+ // Then
234+ assertThat (model .getObjectTest (), instanceOf (TestModel .class ));
235+ }
236+
237+ @ Test
238+ public void unpackPayload_anArrayOfInts_returnsTestModelWithAnArrayOfInts () throws Exception {
239+ // Given
240+ Integer [] anArray = {1 , 2 , 3 };
241+ String xml = "<testModel><arrayTest>1</arrayTest><arrayTest>2</arrayTest><arrayTest>3</arrayTest></testModel>" ;
242+ Document payload = stringToDocument (xml );
243+
244+ // When
245+ TestModel model = communicator .unpackPayload (payload , TestModel .class );
246+
247+ // Then
248+ assertThat (model .getArrayTest (), equalTo (anArray ));
249+ }
250+
61251 @ Test
62252 public void pack_bootNotificationRequest_returnsBootNotificationRequestPayload () {
63253 // Given
@@ -72,7 +262,6 @@ public void pack_bootNotificationRequest_returnsBootNotificationRequestPayload()
72262 assertThat (docToString (payload ), equalTo (expected ));
73263 }
74264
75-
76265 public static String docToString (Document doc ) {
77266 try {
78267 StringWriter sw = new StringWriter ();
@@ -85,5 +274,15 @@ public static String docToString(Document doc) {
85274 }
86275 }
87276
277+ public static Document stringToDocument (String xml ) throws Exception {
278+ DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance ();
279+ factory .setNamespaceAware (true );
280+ DocumentBuilder db = factory .newDocumentBuilder ();
281+
282+ InputSource is = new InputSource ();
283+ is .setCharacterStream (new StringReader (xml ));
284+ db .isNamespaceAware ();
285+ return db .parse (is );
286+ }
88287
89288}
0 commit comments