/* * Copyright (C) 2007-2012 Mathieu Baudier * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.argeo.slc.lib.detached; import java.util.Enumeration; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.detached.DetachedAnswer; import org.argeo.slc.detached.DetachedRequest; import org.argeo.slc.detached.DetachedXmlConverter; import org.argeo.slc.detached.DetachedXmlConverterCompat; import org.argeo.slc.unit.AbstractSpringTestCase; import org.argeo.slc.unit.UnitXmlUtils; import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; import org.springframework.xml.validation.XmlValidator; public class DetachedCastorTest extends AbstractSpringTestCase { private final Log log = LogFactory.getLog(getClass()); private DetachedXmlConverter converter = null; private XmlValidator validator = null; private DetachedXmlConverter converterCompat = null; public void setUp() { converter = getBean("slcDefault.detached.xmlConverterCastor"); validator = getBean("slcDefault.detached.xml.xsdValidator"); converterCompat = new DetachedXmlConverterCompat(); } public void testRequest() throws Exception { DetachedRequest request = createTestRequest(); StringResult result = new StringResult(); converter.marshallCommunication(request, result); String xml = result.toString(); log.debug(xml + "\n"); UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml)); DetachedRequest requestUnm = (DetachedRequest) converter .unmarshallCommunication(new StringSource(xml)); assertDetachedRequest(request, requestUnm); } public void testRequestCompat() throws Exception { DetachedRequest request = createTestRequest(); StringResult result = new StringResult(); converter.marshallCommunication(request, result); String xml = result.toString(); log.debug(xml + "\n"); UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml)); DetachedRequest requestUnm = (DetachedRequest) converterCompat .unmarshallCommunication(new StringSource(xml)); assertDetachedRequest(request, requestUnm); } public void testAnswer() throws Exception { DetachedAnswer answer = createTestAnswer(); StringResult result = new StringResult(); converter.marshallCommunication(answer, result); String xml = result.toString(); log.debug(xml + "\n"); UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml)); DetachedAnswer answerUnm = (DetachedAnswer) converter .unmarshallCommunication(new StringSource(xml)); assertDetachedAnswer(answer, answerUnm); } public void testAnswerCompat() throws Exception { DetachedAnswer answer = createTestAnswer(); StringResult result = new StringResult(); converterCompat.marshallCommunication(answer, result); String xml = result.toString(); log.debug(xml + "\n"); UnitXmlUtils.assertXmlValidation(validator, new StringSource(xml)); DetachedAnswer answerUnm = (DetachedAnswer) converter .unmarshallCommunication(new StringSource(xml)); assertDetachedAnswer(answer, answerUnm); } public static DetachedRequest createTestRequest() { DetachedRequest request = new DetachedRequest(); request.setUuid("12345"); request.setRef("testRef"); Properties properties = new Properties(); properties.setProperty("key1", "value1"); properties.setProperty("key2", "value2"); request.setProperties(properties); return request; } public static DetachedAnswer createTestAnswer() { DetachedAnswer answer = new DetachedAnswer(); answer.setUuid("12345"); answer.setStatus(DetachedAnswer.PROCESSED); answer.setLog("my log\nline break."); Properties properties = new Properties(); properties.setProperty("key1", "value1"); properties.setProperty("key2", "value2"); answer.setProperties(properties); return answer; } public static void assertDetachedRequest(DetachedRequest expected, DetachedRequest reached) { assertEquals(expected.getUuid(), reached.getUuid()); assertEquals(expected.getRef(), reached.getRef()); Properties expectedProps = expected.getProperties(); Properties reachedProps = reached.getProperties(); assertEquals(expectedProps.size(), reachedProps.size()); Enumeration keys = expectedProps.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); assertTrue(reachedProps.containsKey(key)); assertEquals(expectedProps.getProperty(key), reachedProps .getProperty(key)); } } public static void assertDetachedAnswer(DetachedAnswer expected, DetachedAnswer reached) { assertEquals(expected.getUuid(), reached.getUuid()); assertEquals(expected.getStatus(), reached.getStatus()); assertEquals(expected.getLog(), reached.getLog()); Properties expectedProps = expected.getProperties(); Properties reachedProps = reached.getProperties(); assertEquals(expectedProps.size(), reachedProps.size()); Enumeration keys = expectedProps.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); assertTrue(reachedProps.containsKey(key)); assertEquals(expectedProps.getProperty(key), reachedProps .getProperty(key)); } } }