Package com.consol.citrus.ws.client

Source Code of com.consol.citrus.ws.client.WebServiceClientTest

/*
* Copyright 2006-2014 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 com.consol.citrus.ws.client;

import com.consol.citrus.endpoint.resolver.EndpointUriResolver;
import com.consol.citrus.message.*;
import com.consol.citrus.testng.AbstractTestNGUnitTest;
import com.consol.citrus.ws.message.SoapMessage;
import org.easymock.EasyMock;
import org.springframework.ws.client.core.*;
import org.springframework.ws.soap.SoapBody;
import org.springframework.ws.soap.SoapFault;
import org.springframework.ws.soap.client.SoapFaultClientException;
import org.testng.Assert;
import org.testng.annotations.Test;

import static org.easymock.EasyMock.*;

/**
* @author Christoph Deppisch
*/
public class WebServiceClientTest extends AbstractTestNGUnitTest {

    private WebServiceTemplate webServiceTemplate = EasyMock.createMock(WebServiceTemplate.class);

    @Test
    public void testDefaultUri() {
        WebServiceClient client = new WebServiceClient();
        client.getEndpointConfiguration().setWebServiceTemplate(webServiceTemplate);

        Message requestMessage = new DefaultMessage("<TestRequest><Message>Hello World!</Message></TestRequest>");

        reset(webServiceTemplate);

        webServiceTemplate.setDefaultUri("http://localhost:8081/request");
        expectLastCall().once();

        webServiceTemplate.setFaultMessageResolver(anyObject(FaultMessageResolver.class));
        expectLastCall().once();

        expect(webServiceTemplate.sendAndReceive(eq("http://localhost:8081/request"), (WebServiceMessageCallback)anyObject(),
                (WebServiceMessageCallback)anyObject())).andReturn(true).once();

        replay(webServiceTemplate);

        client.getEndpointConfiguration().setDefaultUri("http://localhost:8081/request");
        client.send(requestMessage, context);

        verify(webServiceTemplate);
    }

    @Test
    public void testReplyMessageCorrelator() {
        WebServiceClient client = new WebServiceClient();

        client.getEndpointConfiguration().setWebServiceTemplate(webServiceTemplate);

        MessageCorrelator correlator = EasyMock.createMock(MessageCorrelator.class);
        client.getEndpointConfiguration().setCorrelator(correlator);

        Message requestMessage = new SoapMessage("<TestRequest><Message>Hello World!</Message></TestRequest>");

        reset(webServiceTemplate, correlator);

        webServiceTemplate.setDefaultUri("http://localhost:8080/request");
        expectLastCall().once();

        webServiceTemplate.setFaultMessageResolver(anyObject(FaultMessageResolver.class));
        expectLastCall().once();

        expect(webServiceTemplate.sendAndReceive(eq("http://localhost:8080/request"), (WebServiceMessageCallback)anyObject(),
                (WebServiceMessageCallback)anyObject())).andReturn(true).once();

        expect(correlator.getCorrelationKey(requestMessage)).andReturn("correlationKey").once();

        replay(webServiceTemplate, correlator);

        client.getEndpointConfiguration().setDefaultUri("http://localhost:8080/request");
        client.send(requestMessage, context);

        verify(webServiceTemplate, correlator);
    }

    @Test
    public void testEndpointUriResolver() {
        WebServiceClient client = new WebServiceClient();

        client.getEndpointConfiguration().setWebServiceTemplate(webServiceTemplate);
        EndpointUriResolver endpointUriResolver = EasyMock.createMock(EndpointUriResolver.class);
        client.getEndpointConfiguration().setEndpointResolver(endpointUriResolver);

        Message requestMessage = new SoapMessage("<TestRequest><Message>Hello World!</Message></TestRequest>");

        reset(webServiceTemplate, endpointUriResolver);

        webServiceTemplate.setDefaultUri("http://localhost:8080/request");
        expectLastCall().once();

        webServiceTemplate.setFaultMessageResolver(anyObject(FaultMessageResolver.class));
        expectLastCall().once();

        expect(endpointUriResolver.resolveEndpointUri(requestMessage, "http://localhost:8080/request")).andReturn("http://localhost:8081/new").once();

        expect(webServiceTemplate.sendAndReceive(eq("http://localhost:8081/new"),
                (WebServiceMessageCallback)anyObject(), (WebServiceMessageCallback)anyObject())).andReturn(true).once();

        replay(webServiceTemplate, endpointUriResolver);

        client.getEndpointConfiguration().setDefaultUri("http://localhost:8080/request");
        client.send(requestMessage, context);

        verify(webServiceTemplate, endpointUriResolver);
    }

    @Test
    public void testErrorResponseExceptionStrategy() {
        WebServiceClient client = new WebServiceClient();

        client.getEndpointConfiguration().setWebServiceTemplate(webServiceTemplate);
        client.getEndpointConfiguration().setErrorHandlingStrategy(ErrorHandlingStrategy.THROWS_EXCEPTION);

        Message requestMessage = new DefaultMessage("<TestRequest><Message>Hello World!</Message></TestRequest>");

        org.springframework.ws.soap.SoapMessage soapFaultMessage = EasyMock.createMock(org.springframework.ws.soap.SoapMessage.class);
        SoapBody soapBody = EasyMock.createMock(SoapBody.class);
        SoapFault soapFault = EasyMock.createMock(SoapFault.class);

        reset(webServiceTemplate, soapFaultMessage, soapBody, soapFault);

        webServiceTemplate.setDefaultUri("http://localhost:8080/request");
        expectLastCall().once();

        webServiceTemplate.setFaultMessageResolver(anyObject(FaultMessageResolver.class));
        expectLastCall().once();

        expect(soapFaultMessage.getSoapBody()).andReturn(soapBody).anyTimes();
        expect(soapFaultMessage.getFaultReason()).andReturn("Internal server error").anyTimes();
        expect(soapBody.getFault()).andReturn(soapFault).once();

        replay(soapFaultMessage, soapBody, soapFault);

        expect(webServiceTemplate.sendAndReceive(eq("http://localhost:8080/request"), (WebServiceMessageCallback)anyObject(),
                (WebServiceMessageCallback)anyObject())).andThrow(new SoapFaultClientException(soapFaultMessage)).once();

        replay(webServiceTemplate);

        try {
            client.getEndpointConfiguration().setDefaultUri("http://localhost:8080/request");
            client.send(requestMessage, context);
            Assert.fail("Missing exception due to soap fault");
        } catch (SoapFaultClientException e) {
            verify(webServiceTemplate, soapFaultMessage, soapBody, soapFault);
        }

    }
}
TOP

Related Classes of com.consol.citrus.ws.client.WebServiceClientTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.