/** * Copyright 2009-2010 the original author or authors. * * 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 net.javacrumbs.smock.common; import static net.javacrumbs.smock.common.SmockCommon.fromResource; import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.io.IOException; import javax.xml.transform.Source; import org.junit.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.ws.WebServiceMessage; public class MessageMatcherCompareTest extends AbstractSmockTest{ @Test public void testValid() throws IOException { Source controlDocument = loadControl("control-message-test.xml"); MessageMatcher matcher = new MessageMatcher(controlDocument); matcher.matchInternal(null, loadMessage("valid-message.xml")); } public void compareDocuments(String control, String test) throws IOException { Source controlDocument = loadControl(control); MessageMatcher matcher = new MessageMatcher(controlDocument); matcher.matchInternal(null, loadMessage(test)); } @Test public void testValidTest2() throws IOException { compareDocuments("control-message-test2.xml","valid-message-test2.xml"); } @Test public void testValidTestDifferentNsPrefixes() throws IOException { compareDocuments("namespace-message1.xml","namespace-message2.xml"); } @Test public void testValidTestDifferentNsPrefixesNoPrefix() throws IOException { compareDocuments("namespace-message1.xml","namespace-message4-no-prefix.xml"); } @Test(expected=AssertionError.class) public void testValidTestDifferentNsPrefixesNoPrefixNoDefaultNamespace() throws IOException { compareDocuments("namespace-message1.xml","namespace-message6-no-prefix-no-default-namespace.xml"); } @Test(expected=AssertionError.class) public void testValidTestDifferentNsPrefixesNotResolved() throws IOException { compareDocuments("namespace-message1.xml","namespace-message3-ns-not-resolved.xml"); } @Test(expected=AssertionError.class) public void testValidTestDifferentNsPrefixesNotResolvedinBothFiles() throws IOException { compareDocuments("namespace-message5-ns-not-resolved.xml","namespace-message3-ns-not-resolved.xml"); } @Test public void testValidDifferent() throws IOException { compareDocuments("control-message-test.xml","valid-message2.xml"); } @Test public void testInvalid() throws Exception { try { compareDocuments("control-message-test.xml","invalid-message.xml"); fail("Exception expected"); } catch(AssertionError e) { assertFalse(e.getMessage().contains("[not identical]")); } } private Source loadControl(String name) { return fromResource("xml/"+name); } private WebServiceMessage loadMessage(String name) throws IOException { return getMessageFactory().createWebServiceMessage(new ClassPathResource("xml/"+name).getInputStream()); } }