/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.camel.component.spring.ws;
import java.io.IOException;
import java.net.URI;
import javax.xml.namespace.QName;
import net.javacrumbs.smock.springws.client.AbstractSmockClientTest;
import org.apache.camel.ProducerTemplate;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.test.client.RequestMatcher;
/**
* Check if the MessageFilter is used and resolved from endpoint uri or global
* context configuration.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:org/apache/camel/component/spring/ws/DefaultMessageFilter-context.xml"})
public class MessageFilterResolvingDefaultsTest extends AbstractSmockClientTest {
@Autowired
private ProducerTemplate template;
private String body = "<customerCountRequest xmlns='http://springframework.org/spring-ws'>" + "<customerName>John Doe</customerName>" + "</customerCountRequest>";
@Test
public void isUsedDefaultFilter() {
expect(soapHeader(new QName("http://newHeaderSupport/", "testHeaderValue1"))).andExpect(doesntContains(soapHeader(new QName("http://virtualCheck/", "localFilter"))))
.andExpect(doesntContains(soapHeader(new QName("http://virtualCheck/", "globalFilter"))));
template.sendBodyAndHeader("direct:sendDefault", body, "headerKey", new QName("http://newHeaderSupport/", "testHeaderValue1"));
}
private RequestMatcher doesntContains(final RequestMatcher soapHeader) {
return new RequestMatcher() {
public void match(URI uri, WebServiceMessage request) throws IOException, AssertionError {
try {
soapHeader.match(uri, request);
} catch (AssertionError e) {
// ok
return;
}
throw new AssertionError("Should failed!");
}
};
}
@Autowired
public void setApplicationContext(ApplicationContext applicationContext) {
createServer(applicationContext);
}
@After
public void verify() {
super.verify();
}
}