/** * 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.cxf.binding.soap.interceptor; import java.io.ByteArrayInputStream; import java.util.Map; import javax.xml.stream.XMLStreamReader; import org.apache.cxf.binding.soap.Soap11; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.staxutils.StaxUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * */ public class ReadHeadersInterceptorTest extends Assert { private static final byte[] TEST_SOAP = ("<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" + " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + " xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:bar='tmp:bar'>" + "<soap:Body>" + "<ns2:payload xmlns:ns2='urn:tmp:foo'/>" + "</soap:Body>" + "</soap:Envelope>").getBytes(); private ReadHeadersInterceptor interceptor; @Before public void setUp() { interceptor = new ReadHeadersInterceptor(null); } @Test public void testNotAddNSContext() throws Exception { SoapMessage message = setUpMessage(); interceptor.handleMessage(message); Map<String, String> nsc = CastUtils.cast((Map<?, ?>)message.get("soap.body.ns.context")); assertNull(nsc); } @Test public void testAddNSContext() throws Exception { SoapMessage message = setUpMessage(); message.put("org.apache.cxf.binding.soap.addNamespaceContext", "true"); interceptor.handleMessage(message); Map<String, String> nsc = CastUtils.cast((Map<?, ?>)message.get("soap.body.ns.context")); assertNotNull(nsc); assertEquals("http://www.w3.org/2001/XMLSchema-instance", nsc.get("xsi")); assertEquals("http://www.w3.org/2001/XMLSchema", nsc.get("xs")); assertEquals("tmp:bar", nsc.get("bar")); } private SoapMessage setUpMessage() throws Exception { SoapMessage message = new SoapMessage(Soap11.getInstance()); message.setContent(XMLStreamReader.class, StaxUtils.createXMLStreamReader(new ByteArrayInputStream(TEST_SOAP))); return message; } }