Apache CXF преобразует XML в SoapMessage для модульных тестов - PullRequest
0 голосов
/ 30 октября 2018

Я хочу создать небольшой юнит-тест для AbstractSoapInterceptor, например:

public class SimpleInterceptorTest {

    private SimpleInterceptor simpleInterceptor;

    @BeforeMethod
    public void setUp() {
        simpleInterceptor = new SimpleInterceptor();
    }

    @Test
    public void testHandleMessage() throws Exception {
        SoapMessage soapMessage = createSoapMessage("requests/sampleRequest.xml");
        simpleInterceptor.handleMessage(soapMessage);

        // Assertions
    }
}

requests/sampleRequest.xml - это запрос на мыло типа:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <soap:Header>
        <wsse:Security>
            <wsc:SecurityContextToken xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="sct">
                <wsc:Identifier>abcd</wsc:Identifier>
            </wsc:SecurityContextToken>
        </wsse:Security>
    </soap:Header>
    <soap:Body>
        <wst:RequestSecurityToken xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" >
            <wst:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</wst:TokenType>
            <wst:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Validate</wst:RequestType>
            <wst:ValidateTarget>
                <wsse:SecurityTokenReference>
                    <wsse:Reference URI="#sct"/>
                </wsse:SecurityTokenReference>
            </wst:ValidateTarget>
        </wst:RequestSecurityToken>
    </soap:Body>
</soap:Envelope>

Теперь у меня есть следующие вопросы:

  1. Это правильный способ проверки перехватчиков?

  2. Если да, как реализовать метод createSoapMessage?

1 Ответ

0 голосов
/ 01 ноября 2018

Вот пример того, как выглядят юнит-тесты для перехватчиков Apache:

https://github.com/apache/cxf/blob/master/rt/wsdl/src/test/java/org/apache/cxf/wsdl/interceptors/DocLiteralInInterceptorTest.java

Поэтому возможно реализовать метод createSoapMessage, но не так просто, как хотелось бы. Буду очень признателен за более простые решения.

Сейчас я тестирую перехватчики с помощью SoapUI.

...