1 package org.xmlBlaster.test.classtest;
2
3 import org.custommonkey.xmlunit.XMLTestCase;
4 import org.xmlBlaster.util.Global;
5 import org.xmlBlaster.util.qos.ClientProperty;
6 import org.xmlBlaster.util.qos.MsgQosData;
7 import org.xmlBlaster.util.qos.MsgQosSaxFactory;
8 import org.xmlBlaster.util.def.Constants;
9 import org.xmlBlaster.util.def.MethodName;
10
11 /**
12 * Test ClientProperty.
13 * <p />
14 * All methods starting with 'test' and without arguments are invoked automatically
15 * <p />
16 * TODO: http://xmlunit.sourceforge.net/
17 * <p />
18 * Invoke: java -Djava.compiler= junit.textui.TestRunner -noloading org.xmlBlaster.test.classtest.ClientPropertyTest
19 * @see org.xmlBlaster.util.qos.ClientProperty
20 * @see <a href="http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.qos.clientProperty.html">The client.qos.clientProperty requirement</a>
21 */
22 public class ClientPropertyTest extends XMLTestCase {
23 protected Global glob;
24 int counter = 0;
25
26 public ClientPropertyTest(String name) {
27 super(name);
28 }
29
30 protected void setUp() {
31 this.glob = Global.instance();
32
33 }
34
35 public void testClientProperty() throws Exception {
36 ClientProperty clientProperty = new ClientProperty("StringKey", null, null);
37 assertEquals("", "StringKey", clientProperty.getName());
38 assertEquals("", null, clientProperty.getType());
39 assertEquals("", null, clientProperty.getEncoding());
40 assertEquals("", false, clientProperty.isBase64());
41 assertEquals("", null, clientProperty.getValueRaw());
42 assertEquals("", null, clientProperty.getStringValue());
43 assertEquals("", null, clientProperty.getValueRaw());
44
45 String xml = clientProperty.toXml();
46 assertXpathExists("/clientProperty[@name='StringKey']", xml);
47 System.out.println(xml);
48 }
49
50 public void testClientPropertyEncoding() throws Exception {
51 {
52 ClientProperty clientProperty = new ClientProperty("StringKey", "String", Constants.ENCODING_BASE64);
53 assertEquals("", "StringKey", clientProperty.getName());
54 assertEquals("", "String", clientProperty.getType());
55 assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
56 assertEquals("", true, clientProperty.isBase64());
57 assertEquals("", null, clientProperty.getStringValue());
58 assertEquals("", null, clientProperty.getValueRaw());
59
60 String xml = clientProperty.toXml();
61 assertXpathExists("/clientProperty[@name='StringKey']", xml);
62 assertXpathExists("/clientProperty[@type='String']", xml);
63 assertXpathExists("/clientProperty[@encoding='"+Constants.ENCODING_BASE64+"']", xml);
64 System.out.println(xml);
65 assertXMLEqual("comparing test xml to control xml",
66 "<clientProperty name='StringKey' type='String' encoding='base64'/>",
67 xml);
68
69 clientProperty.setValue("BlaBlaBla");
70 xml = clientProperty.toXml();
71 assertEquals("Base64?", "QmxhQmxhQmxh", clientProperty.getValueRaw());
72 assertEquals("", "BlaBlaBla", clientProperty.getStringValue());
73 System.out.println(xml);
74 assertXMLEqual("comparing test xml to control xml",
75 "<clientProperty name='StringKey' type='String' encoding='base64'>QmxhQmxhQmxh</clientProperty>",
76 xml);
77 try {
78 assertEquals("", 99, clientProperty.getIntValue());
79 fail("String to int not possible");
80 }
81 catch(java.lang.NumberFormatException e) {
82 System.out.println("OK Expected exception NumberFormatException");
83 }
84 System.out.println(xml);
85 }
86 }
87
88 public void testClientPropertyCtorEncoding() throws Exception {
89 {
90 String value = "Bla<<";
91 ClientProperty clientProperty = new ClientProperty("StringKey",
92 ClientProperty.getPropertyType(value), null, value);
93 assertEquals("", "StringKey", clientProperty.getName());
94 assertEquals("", null, clientProperty.getType()); // defaults to String
95 assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
96 assertEquals("", true, clientProperty.isBase64());
97 assertEquals("", value, clientProperty.getStringValue());
98 //assertEquals("", null, clientProperty.getValueRaw());
99
100 String xml = clientProperty.toXml();
101 assertXpathExists("/clientProperty[@name='StringKey']", xml);
102 assertXpathExists("/clientProperty[@encoding='"+Constants.ENCODING_BASE64+"']", xml);
103 assertXMLEqual("comparing test xml to control xml",
104 "<clientProperty name='StringKey' encoding='base64'>QmxhPDw=</clientProperty>",
105 xml);
106 System.out.println(xml);
107 }
108 }
109
110 public void testClientPropertyAutoEncoding() throws Exception {
111 ClientProperty clientProperty = new ClientProperty("StringKey", "", "");
112 assertEquals("", "StringKey", clientProperty.getName());
113 assertEquals("", "", clientProperty.getType());
114 assertEquals("", "", clientProperty.getEncoding());
115 assertEquals("", null, clientProperty.getStringValue());
116 assertEquals("", null, clientProperty.getValueRaw());
117
118 clientProperty.setValue("Bla<BlaBla");
119 assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
120 String xml = clientProperty.toXml();
121 System.out.println(xml);
122 assertEquals("Base64?", "QmxhPEJsYUJsYQ==", clientProperty.getValueRaw());
123 assertEquals("", "Bla<BlaBla", clientProperty.getStringValue());
124 System.out.println(xml);
125
126 clientProperty.setValue("Bla]]>BlaBla");
127 assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
128 xml = clientProperty.toXml();
129 //assertEquals("Base64?", "QmxhPD5CbGFCbGE=", clientProperty.getValueRaw());
130 assertEquals("", "Bla]]>BlaBla", clientProperty.getStringValue());
131 System.out.println(xml);
132 }
133
134 public void testClientPropertyTypes() throws Exception {
135 {
136 ClientProperty clientProperty = new ClientProperty("key", "int", null);
137 assertEquals("", "key", clientProperty.getName());
138 assertEquals("", "int", clientProperty.getType());
139 assertEquals("", null, clientProperty.getEncoding());
140 assertEquals("", null, clientProperty.getValueRaw());
141 assertEquals("", null, clientProperty.getStringValue());
142 assertEquals("", null, clientProperty.getObjectValue());
143
144 clientProperty.setValue("9988");
145 String xml = clientProperty.toXml();
146 assertEquals("", "9988", clientProperty.getValueRaw());
147 assertXMLEqual("comparing test xml to control xml",
148 "<clientProperty name='key' type='int'>9988</clientProperty>",
149 xml);
150 assertEquals("", 9988, clientProperty.getIntValue());
151 assertTrue("Expecting Integer", clientProperty.getObjectValue() instanceof Integer);
152 System.out.println(xml);
153 }
154 {
155 ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_BOOLEAN, null);
156 assertEquals("", "key", clientProperty.getName());
157 assertEquals("", "boolean", clientProperty.getType());
158 assertEquals("", null, clientProperty.getEncoding());
159 assertEquals("", null, clientProperty.getValueRaw());
160 assertEquals("", null, clientProperty.getStringValue());
161 assertEquals("", null, clientProperty.getObjectValue());
162
163 clientProperty.setValue("true");
164 String xml = clientProperty.toXml();
165 assertEquals("", "true", clientProperty.getValueRaw());
166 assertXMLEqual("comparing test xml to control xml",
167 "<clientProperty name='key' type='boolean'>true</clientProperty>",
168 xml);
169 assertEquals("", true, clientProperty.getBooleanValue());
170 assertTrue("", clientProperty.getObjectValue() instanceof Boolean);
171 System.out.println(xml);
172 }
173 {
174 ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_DOUBLE, null);
175 assertEquals("", "key", clientProperty.getName());
176 assertEquals("", "double", clientProperty.getType());
177 assertEquals("", null, clientProperty.getEncoding());
178 assertEquals("", null, clientProperty.getValueRaw());
179 assertEquals("", null, clientProperty.getStringValue());
180 assertEquals("", null, clientProperty.getObjectValue());
181
182 clientProperty.setValue("12.78");
183 String xml = clientProperty.toXml();
184 assertEquals("", "12.78", clientProperty.getValueRaw());
185 assertXMLEqual("comparing test xml to control xml",
186 "<clientProperty name='key' type='double'>12.78</clientProperty>",
187 xml);
188 assertTrue("", 12.78 == clientProperty.getDoubleValue());
189 assertTrue("", clientProperty.getObjectValue() instanceof Double);
190 System.out.println(xml);
191 }
192 {
193 ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_FLOAT, null);
194 assertEquals("", "key", clientProperty.getName());
195 assertEquals("", "float", clientProperty.getType());
196 assertEquals("", null, clientProperty.getEncoding());
197 assertEquals("", false, clientProperty.isBase64());
198 assertEquals("", null, clientProperty.getValueRaw());
199 assertEquals("", null, clientProperty.getStringValue());
200 assertEquals("", null, clientProperty.getObjectValue());
201
202 clientProperty.setValue("12.54");
203 String xml = clientProperty.toXml();
204 assertEquals("", "12.54", clientProperty.getValueRaw());
205 assertXMLEqual("comparing test xml to control xml",
206 "<clientProperty name='key' type='float'>12.54</clientProperty>",
207 xml);
208 assertTrue("", (float)12.54 == clientProperty.getFloatValue());
209 assertTrue("", clientProperty.getObjectValue() instanceof Float);
210 System.out.println(xml);
211 }
212 {
213 ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_BYTE, null);
214 assertEquals("", "key", clientProperty.getName());
215 assertEquals("", "byte", clientProperty.getType());
216 assertEquals("", null, clientProperty.getEncoding());
217 assertEquals("", null, clientProperty.getValueRaw());
218 assertEquals("", null, clientProperty.getStringValue());
219 assertEquals("", null, clientProperty.getObjectValue());
220
221 clientProperty.setValue("6");
222 String xml = clientProperty.toXml();
223 assertEquals("", "6", clientProperty.getValueRaw());
224 assertXMLEqual("comparing test xml to control xml",
225 "<clientProperty name='key' type='byte'>6</clientProperty>",
226 xml);
227 assertTrue("", (byte)6 == clientProperty.getByteValue());
228 assertTrue("", clientProperty.getObjectValue() instanceof Byte);
229 System.out.println(xml);
230 }
231 {
232 ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_LONG, null);
233 assertEquals("", "key", clientProperty.getName());
234 assertEquals("", "long", clientProperty.getType());
235 assertEquals("", null, clientProperty.getEncoding());
236 assertEquals("", null, clientProperty.getValueRaw());
237 assertEquals("", null, clientProperty.getStringValue());
238 assertEquals("", null, clientProperty.getObjectValue());
239
240 clientProperty.setValue("888888");
241 String xml = clientProperty.toXml();
242 assertEquals("", "888888", clientProperty.getValueRaw());
243 assertXMLEqual("comparing test xml to control xml",
244 "<clientProperty name='key' type='long'>888888</clientProperty>",
245 xml);
246 assertTrue("", 888888 == clientProperty.getLongValue());
247 assertTrue("", clientProperty.getObjectValue() instanceof Long);
248 System.out.println(xml);
249 }
250 {
251 ClientProperty clientProperty = new ClientProperty("key", Constants.TYPE_SHORT, null);
252 assertEquals("", "key", clientProperty.getName());
253 assertEquals("", "short", clientProperty.getType());
254 assertEquals("", null, clientProperty.getEncoding());
255 assertEquals("", null, clientProperty.getValueRaw());
256 assertEquals("", null, clientProperty.getStringValue());
257 assertEquals("", null, clientProperty.getObjectValue());
258
259 clientProperty.setValue("12");
260 String xml = clientProperty.toXml();
261 assertEquals("", "12", clientProperty.getValueRaw());
262 assertXMLEqual("comparing test xml to control xml",
263 "<clientProperty name='key' type='short'>12</clientProperty>",
264 xml);
265 assertTrue("", 12 == clientProperty.getShortValue());
266 assertTrue("", clientProperty.getObjectValue() instanceof Short);
267 System.out.println(xml);
268 }
269 {
270 ClientProperty clientProperty = new ClientProperty("key", null, null);
271 assertEquals("", "key", clientProperty.getName());
272 assertEquals("", null, clientProperty.getType());
273 assertEquals("", null, clientProperty.getEncoding());
274 assertEquals("", null, clientProperty.getValueRaw());
275 assertEquals("", null, clientProperty.getStringValue());
276 assertEquals("", null, clientProperty.getObjectValue());
277
278 byte[] bb = new byte[6];
279 bb[0] = 0;
280 bb[1] = 'A';
281 bb[2] = 0;
282 bb[3] = 99;
283 bb[4] = 0;
284 bb[5] = 0;
285 clientProperty.setValue(bb);
286 assertEquals("", "byte[]", clientProperty.getType());
287 assertEquals("", Constants.ENCODING_BASE64, clientProperty.getEncoding());
288 assertEquals("", true, clientProperty.isBase64());
289 String xml = clientProperty.toXml();
290 byte[] newVal = clientProperty.getBlobValue();
291 for (int i=0; i<bb.length; i++)
292 assertTrue("Index #"+i, bb[i] == newVal[i]);
293 assertXpathExists("/clientProperty[@name='key']", xml);
294 assertXpathExists("/clientProperty[@type='"+Constants.TYPE_BLOB+"']", xml);
295 assertXpathExists("/clientProperty[@encoding='"+Constants.ENCODING_BASE64+"']", xml);
296 assertEquals("", "AEEAYwAA", clientProperty.getValueRaw());
297 assertXMLEqual("comparing test xml to control xml",
298 "<clientProperty name='key' type='byte[]' encoding='base64'>AEEAYwAA</clientProperty>",
299 xml);
300 assertTrue("", clientProperty.getObjectValue() instanceof byte[]);
301 newVal = (byte[])clientProperty.getObjectValue();
302 for (int i=0; i<bb.length; i++)
303 assertTrue("Index #"+i, bb[i] == newVal[i]);
304 System.out.println(xml);
305 }
306 }
307
308 public void testClientPropertyParsing() throws Exception {
309
310 String xml = "<qos>\n" +
311 " <isPublish/>\n" +
312 " <clientProperty name='StringKey' type=''><![CDATA[Bla<BlaBla]]></clientProperty>\n" +
313 "</qos>";
314
315 MsgQosSaxFactory parser = new MsgQosSaxFactory(this.glob);
316 MsgQosData data = parser.readObject(xml);
317 ClientProperty prop = data.getClientProperty("StringKey");
318 System.out.println(prop.toXml());
319 assertEquals("", true, prop.isBase64());
320
321 }
322
323 public void testClientPropertyParsingWithUntrimmedSpaces() throws Exception {
324 MsgQosData data = new MsgQosData(this.glob, MethodName.PUBLISH);
325 String name1 = "leadingSpaces";
326 String val1 = " val1";
327 String name2 = "endingSpaces";
328 String val2 = "val2 ";
329 String name3 = "bothSpaces";
330 String val3 = " val3 ";
331 String name4 = "singleSpace";
332 String val4 = " val4 ";
333 ClientProperty prop1 = new ClientProperty(name1, null, null, val1);
334 ClientProperty prop2 = new ClientProperty(name2, null, null, val2);
335 ClientProperty prop3 = new ClientProperty(name3, null, null, val3);
336 ClientProperty prop4 = new ClientProperty(name4, null, null, val4);
337 data.addClientProperty(prop1);
338 data.addClientProperty(prop2);
339 data.addClientProperty(prop3);
340 data.addClientProperty(prop4);
341 String xml = data.toXml();
342 System.out.println("The content of the qos is '" + xml + "'");
343 MsgQosSaxFactory parser = new MsgQosSaxFactory(this.glob);
344 MsgQosData data1 = parser.readObject(xml);
345 assertEquals(name1, val1, data1.getClientProperty(name1).getStringValue());
346 assertEquals(name2, val2, data1.getClientProperty(name2).getStringValue());
347 assertEquals(name3, val3, data1.getClientProperty(name3).getStringValue());
348 assertEquals(name4, val4, data1.getClientProperty(name4).getStringValue());
349
350 }
351
352 public void testClientPropertyEnclosedXmlTree() throws Exception {
353
354 String xml = "<qos>\n" +
355 " <isPublish/>\n" +
356 " <clientProperty name='StringKey' type=''><BlaBla attr1='val1' attr2=' val2 '> Something </BlaBla></clientProperty>\n" +
357 "</qos>";
358
359 MsgQosSaxFactory parser = new MsgQosSaxFactory(this.glob);
360 MsgQosData data = parser.readObject(xml);
361 ClientProperty prop = data.getClientProperty("StringKey");
362 System.out.println(prop.toXml());
363 // assertEquals("", true, prop.isBase64());
364
365
366 String val = "<BlaBla attr1='val1' attr2=' val2 '> Something </BlaBla>";
367 prop = new ClientProperty("StringKey", null, Constants.ENCODING_FORCE_PLAIN, val);
368 System.out.println(prop.toXml());
369
370 xml = "<qos>\n" +
371 " <isPublish/>\n" +
372 " <clientProperty name='StringKey' type='' encoding='forcePlain'><qos attr1='val1' attr2=' val2 '> Something </qos></clientProperty>\n" +
373 "</qos>";
374
375 parser = new MsgQosSaxFactory(this.glob);
376 data = parser.readObject(xml);
377 prop = data.getClientProperty("StringKey");
378 System.out.println(prop.toXml());
379
380 xml = "<qos>\n" +
381 " <isPublish/>\n" +
382 " <clientProperty name='StringKey' type='' encoding='forcePlain'><clientProperty name='aaa' type='' encoding=''>Something</clientProperty></clientProperty>\n" +
383 "</qos>";
384
385 parser = new MsgQosSaxFactory(this.glob);
386 data = parser.readObject(xml);
387 prop = data.getClientProperty("StringKey");
388 System.out.println(prop.toXml());
389
390 System.out.println("END");
391 }
392
393 /**
394 * <pre>
395 * java org.xmlBlaster.test.classtest.ClientPropertyTest
396 * </pre>
397 */
398 public static void main(String args[])
399 {
400 try {
401 ClientPropertyTest testSub = new ClientPropertyTest("ClientPropertyTest");
402 testSub.setUp();
403 testSub.testClientPropertyEnclosedXmlTree();
404 testSub.testClientProperty();
405 testSub.testClientPropertyEncoding();
406 testSub.testClientPropertyCtorEncoding();
407 testSub.testClientPropertyTypes();
408 testSub.testClientPropertyAutoEncoding();
409 testSub.testClientPropertyParsing();
410 testSub.testClientPropertyParsingWithUntrimmedSpaces();
411 testSub.tearDown();
412 }
413 catch(Throwable e) {
414 e.printStackTrace();
415 fail(e.toString());
416 }
417 }
418 }
syntax highlighted by Code2HTML, v. 0.9.1