2 * Copyright (C) 2007-2012 Mathieu Baudier
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.slc
.lib
.detached
;
18 import java
.util
.Enumeration
;
19 import java
.util
.Properties
;
21 import org
.apache
.commons
.logging
.Log
;
22 import org
.apache
.commons
.logging
.LogFactory
;
23 import org
.argeo
.slc
.detached
.DetachedAnswer
;
24 import org
.argeo
.slc
.detached
.DetachedRequest
;
25 import org
.argeo
.slc
.detached
.DetachedXmlConverter
;
26 import org
.argeo
.slc
.detached
.DetachedXmlConverterCompat
;
27 import org
.argeo
.slc
.unit
.AbstractSpringTestCase
;
28 import org
.argeo
.slc
.unit
.UnitXmlUtils
;
29 import org
.springframework
.xml
.transform
.StringResult
;
30 import org
.springframework
.xml
.transform
.StringSource
;
31 import org
.springframework
.xml
.validation
.XmlValidator
;
33 public class DetachedCastorTest
extends AbstractSpringTestCase
{
34 private final Log log
= LogFactory
.getLog(getClass());
36 private DetachedXmlConverter converter
= null;
37 private XmlValidator validator
= null;
38 private DetachedXmlConverter converterCompat
= null;
41 converter
= getBean("slcDefault.detached.xmlConverterCastor");
42 validator
= getBean("slcDefault.detached.xml.xsdValidator");
43 converterCompat
= new DetachedXmlConverterCompat();
46 public void testRequest() throws Exception
{
47 DetachedRequest request
= createTestRequest();
49 StringResult result
= new StringResult();
50 converter
.marshallCommunication(request
, result
);
51 String xml
= result
.toString();
52 log
.debug(xml
+ "\n");
54 UnitXmlUtils
.assertXmlValidation(validator
, new StringSource(xml
));
55 DetachedRequest requestUnm
= (DetachedRequest
) converter
56 .unmarshallCommunication(new StringSource(xml
));
57 assertDetachedRequest(request
, requestUnm
);
60 public void testRequestCompat() throws Exception
{
61 DetachedRequest request
= createTestRequest();
63 StringResult result
= new StringResult();
64 converter
.marshallCommunication(request
, result
);
65 String xml
= result
.toString();
66 log
.debug(xml
+ "\n");
68 UnitXmlUtils
.assertXmlValidation(validator
, new StringSource(xml
));
69 DetachedRequest requestUnm
= (DetachedRequest
) converterCompat
70 .unmarshallCommunication(new StringSource(xml
));
71 assertDetachedRequest(request
, requestUnm
);
74 public void testAnswer() throws Exception
{
75 DetachedAnswer answer
= createTestAnswer();
76 StringResult result
= new StringResult();
77 converter
.marshallCommunication(answer
, result
);
78 String xml
= result
.toString();
79 log
.debug(xml
+ "\n");
81 UnitXmlUtils
.assertXmlValidation(validator
, new StringSource(xml
));
82 DetachedAnswer answerUnm
= (DetachedAnswer
) converter
83 .unmarshallCommunication(new StringSource(xml
));
84 assertDetachedAnswer(answer
, answerUnm
);
87 public void testAnswerCompat() throws Exception
{
88 DetachedAnswer answer
= createTestAnswer();
89 StringResult result
= new StringResult();
90 converterCompat
.marshallCommunication(answer
, result
);
91 String xml
= result
.toString();
92 log
.debug(xml
+ "\n");
94 UnitXmlUtils
.assertXmlValidation(validator
, new StringSource(xml
));
95 DetachedAnswer answerUnm
= (DetachedAnswer
) converter
96 .unmarshallCommunication(new StringSource(xml
));
97 assertDetachedAnswer(answer
, answerUnm
);
100 public static DetachedRequest
createTestRequest() {
101 DetachedRequest request
= new DetachedRequest();
102 request
.setUuid("12345");
103 request
.setPath("/root/test");
104 request
.setRef("testRef");
105 Properties properties
= new Properties();
106 properties
.setProperty("key1", "value1");
107 properties
.setProperty("key2", "value2");
108 request
.setProperties(properties
);
112 public static DetachedAnswer
createTestAnswer() {
113 DetachedAnswer answer
= new DetachedAnswer();
114 answer
.setUuid("12345");
115 answer
.setStatus(DetachedAnswer
.PROCESSED
);
116 answer
.setLog("my log\nline break.");
117 Properties properties
= new Properties();
118 properties
.setProperty("key1", "value1");
119 properties
.setProperty("key2", "value2");
120 answer
.setProperties(properties
);
124 public static void assertDetachedRequest(DetachedRequest expected
,
125 DetachedRequest reached
) {
126 assertEquals(expected
.getUuid(), reached
.getUuid());
127 assertEquals(expected
.getPath(), reached
.getPath());
128 assertEquals(expected
.getRef(), reached
.getRef());
129 Properties expectedProps
= expected
.getProperties();
130 Properties reachedProps
= reached
.getProperties();
131 assertEquals(expectedProps
.size(), reachedProps
.size());
132 Enumeration
<Object
> keys
= expectedProps
.keys();
133 while (keys
.hasMoreElements()) {
134 String key
= (String
) keys
.nextElement();
135 assertTrue(reachedProps
.containsKey(key
));
136 assertEquals(expectedProps
.getProperty(key
), reachedProps
141 public static void assertDetachedAnswer(DetachedAnswer expected
,
142 DetachedAnswer reached
) {
143 assertEquals(expected
.getUuid(), reached
.getUuid());
144 assertEquals(expected
.getStatus(), reached
.getStatus());
145 assertEquals(expected
.getLog(), reached
.getLog());
146 Properties expectedProps
= expected
.getProperties();
147 Properties reachedProps
= reached
.getProperties();
148 assertEquals(expectedProps
.size(), reachedProps
.size());
149 Enumeration
<Object
> keys
= expectedProps
.keys();
150 while (keys
.hasMoreElements()) {
151 String key
= (String
) keys
.nextElement();
152 assertTrue(reachedProps
.containsKey(key
));
153 assertEquals(expectedProps
.getProperty(key
), reachedProps