Package org.talend.esb.servicelocator.cxf.internal

Source Code of org.talend.esb.servicelocator.cxf.internal.CXFEndpointProviderTest

/*
* #%L
* Service Locator Client for CXF
* %%
* Copyright (C) 2011 - 2012 Talend Inc.
* %%
* 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.
* #L%
*/
package org.talend.esb.servicelocator.cxf.internal;

import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.xml.HasXPath.hasXPath;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.talend.esb.DomMother.newDocument;
import static org.talend.esb.servicelocator.NamespaceContextImpl.SL_NS;
import static org.talend.esb.servicelocator.NamespaceContextImpl.WSA_SL_NS_CONTEXT;
import static org.talend.esb.servicelocator.TestValues.ENDPOINT_1;
import static org.talend.esb.servicelocator.TestValues.ENDPOINT_2;
import static org.talend.esb.servicelocator.TestValues.NAME_1;
import static org.talend.esb.servicelocator.TestValues.NAME_2;
import static org.talend.esb.servicelocator.TestValues.PROPERTIES;
import static org.talend.esb.servicelocator.TestValues.SERVICE_QNAME_1;
import static org.talend.esb.servicelocator.TestValues.SERVICE_QNAME_2;
import static org.talend.esb.servicelocator.client.BindingType.JAXRS;
import static org.talend.esb.servicelocator.client.BindingType.SOAP11;
import static org.talend.esb.servicelocator.client.BindingType.SOAP12;
import static org.talend.esb.servicelocator.client.TransportType.HTTP;
import static org.talend.esb.servicelocator.cxf.internal.CXFEndpointProvider.JAXRS_BINDING_ID;
import static org.talend.esb.servicelocator.cxf.internal.CXFEndpointProvider.SOAP11_BINDING_ID;
import static org.talend.esb.servicelocator.cxf.internal.CXFEndpointProvider.SOAP12_BINDING_ID;
import static org.talend.esb.servicelocator.cxf.internal.CXFEndpointProvider.SOAP_HTTP_TRANSPORT_ID;
import static org.talend.esb.servicelocator.cxf.internal.CXFTestStubs.SERVER_2;
import static org.talend.esb.servicelocator.cxf.internal.CXFTestStubs.createJAXRSServerStub;
import static org.talend.esb.servicelocator.cxf.internal.CXFTestStubs.createServerStub;

import java.util.Collection;

import javax.xml.transform.dom.DOMResult;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.junit.Test;
import org.talend.esb.servicelocator.client.BindingType;
import org.talend.esb.servicelocator.client.SLProperties;
import org.talend.esb.servicelocator.client.TransportType;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class CXFEndpointProviderTest {

    @Test
    public void getServiceName() {
        EndpointReferenceType epr = CXFTestStubs.createEPR(ENDPOINT_1);
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, epr);
        assertEquals(SERVICE_QNAME_1, epp.getServiceName());
    }

    @Test
    public void getAddress() {
        EndpointReferenceType epr = CXFTestStubs.createEPR(ENDPOINT_2);
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_2, epr);
        assertEquals(ENDPOINT_2, epp.getAddress());
    }

    @Test
    public void getBinding() {
        EndpointReferenceType epr = CXFTestStubs.createEPR(ENDPOINT_2);
        CXFEndpointProvider epp =
            new CXFEndpointProvider(SERVICE_QNAME_2, SOAP11_BINDING_ID, SOAP_HTTP_TRANSPORT_ID,  epr);
        assertEquals(BindingType.SOAP11, epp.getBinding());
    }

    @Test
    public void getTransport() {
        EndpointReferenceType epr = CXFTestStubs.createEPR(ENDPOINT_2);
        CXFEndpointProvider epp =
            new CXFEndpointProvider(SERVICE_QNAME_2, SOAP11_BINDING_ID, SOAP_HTTP_TRANSPORT_ID, epr);
        assertEquals(TransportType.HTTP, epp.getTransport());
    }
   
    @Test
    public void getProperties() {
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);

        SLProperties properties = epp.getProperties();
       
        assertTrue(properties.hasProperty(NAME_1));
        assertTrue(properties.hasProperty(NAME_2));
    }

    @Test
    public void getPropertiesNotDefined() {
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, null);

        SLProperties properties = epp.getProperties();
        Collection<String> keys = properties.getPropertyNames();
        assertThat(keys, empty());
    }


    @Test
    public void writeEndpointReferenceToWithEprGiven() throws Exception {
        EndpointReferenceType epr = CXFTestStubs.createEPR(ENDPOINT_1);
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, epr);

        DOMResult domResult = new DOMResult();
        epp.writeEndpointReferenceTo(domResult, null);
        Document doc = (Document) domResult.getNode();
        Element root = doc.getDocumentElement();
        assertThat(root,
            hasXPath("/wsa:EndpointReference/wsa:Address", WSA_SL_NS_CONTEXT));
    }

    @Test
    public void writeEndpointReferenceToWithEndpointAndPropertiesGiven() throws Exception {
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);

        DOMResult domResult = new DOMResult();
        epp.writeEndpointReferenceTo(domResult, null);
        Document doc = (Document) domResult.getNode();
        Element root = doc.getDocumentElement();

        assertThat(root,
            hasXPath("/wsa:EndpointReference/wsa:Address/text()", WSA_SL_NS_CONTEXT,
                equalTo(ENDPOINT_1)));
        assertThat(root,
                hasXPath("/wsa:EndpointReference/wsa:Metadata/sl:ServiceLocatorProperties",
                    WSA_SL_NS_CONTEXT));
    }

    @Test
    public void writeEndpointReferenceToWithServerEndpointAndPropertiesGiven()  throws Exception {
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVER_2, ENDPOINT_1, PROPERTIES);

        DOMResult domResult = new DOMResult();
        epp.writeEndpointReferenceTo(domResult, null);
        Document doc = (Document) domResult.getNode();
        Element root = doc.getDocumentElement();

        assertThat(root,
            hasXPath("/wsa:EndpointReference/wsa:Address/text()", WSA_SL_NS_CONTEXT,
                equalTo(ENDPOINT_1)));
    }

    @Test
    public void addEndpointReferenceWithEprGiven() throws Exception {
        Element root = newDocument(SL_NS, "EndpointData");

        EndpointReferenceType epr = CXFTestStubs.createEPR(ENDPOINT_1);
        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, epr);
        epp.addEndpointReference(root);
       
        assertThat(root,
            hasXPath("/sl:EndpointData/wsa:EndpointReference/wsa:Address", WSA_SL_NS_CONTEXT));
    }

    @Test
    public void addEndpointReferenceWithEndpointAndPropertiesGiven() throws Exception {
        Element root = newDocument(SL_NS, "EndpointData");

        CXFEndpointProvider epp = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);
        epp.addEndpointReference(root);

        assertThat(root,
            hasXPath("/sl:EndpointData/wsa:EndpointReference/wsa:Address/text()", WSA_SL_NS_CONTEXT,
                equalTo(ENDPOINT_1)));
        assertThat(root,
                hasXPath("/sl:EndpointData/wsa:EndpointReference/wsa:Metadata/sl:ServiceLocatorProperties",
                    WSA_SL_NS_CONTEXT));
    }

    @Test
    public void addEndpointReferenceWithServerEndpointAndPropertiesGiven()  throws Exception {
        Element root = newDocument(SL_NS, "EndpointData");

        CXFEndpointProvider epp = new CXFEndpointProvider(SERVER_2, ENDPOINT_1, PROPERTIES);
        epp.addEndpointReference(root);

        assertThat(root,
            hasXPath("/sl:EndpointData/wsa:EndpointReference/wsa:Address/text()", WSA_SL_NS_CONTEXT,
                equalTo(ENDPOINT_1)));
    }

    @Test
    public void addServerWithNameGivenInJaxrsStyle()  throws Exception {
        Server server = createJAXRSServerStub(SERVICE_QNAME_2, ENDPOINT_1);
        CXFEndpointProvider epp = new CXFEndpointProvider(server, ENDPOINT_1, PROPERTIES);

        assertEquals(SERVICE_QNAME_2, epp.getServiceName());
    }
   
    @Test
    public void addServerWithSOAP11BindingGiven()  throws Exception {
        Server server =
            createServerStub(SERVICE_QNAME_2, ENDPOINT_1, SOAP11_BINDING_ID, SOAP_HTTP_TRANSPORT_ID);
        CXFEndpointProvider epp = new CXFEndpointProvider(server, ENDPOINT_1, PROPERTIES);

        assertEquals(SOAP11, epp.getBinding());
    }

    @Test
    public void addServerWithSOAP12BindingGiven()  throws Exception {
        Server server =
            createServerStub(SERVICE_QNAME_2, ENDPOINT_1, SOAP12_BINDING_ID, SOAP_HTTP_TRANSPORT_ID);
        CXFEndpointProvider epp = new CXFEndpointProvider(server, ENDPOINT_1, PROPERTIES);
       
        assertEquals(SOAP12, epp.getBinding());
    }

    @Test
    public void addServerWithJAXRSBindingGiven()  throws Exception {
        Server server =
            createServerStub(SERVICE_QNAME_2, ENDPOINT_1, JAXRS_BINDING_ID, SOAP_HTTP_TRANSPORT_ID);
        CXFEndpointProvider epp = new CXFEndpointProvider(server, ENDPOINT_1, PROPERTIES);
       
        assertEquals(JAXRS, epp.getBinding());
    }

    @Test
    public void addServerWithHTTPTransportGiven()  throws Exception {
        Server server =
            createServerStub(SERVICE_QNAME_2, ENDPOINT_1, SOAP11_BINDING_ID, SOAP_HTTP_TRANSPORT_ID);
        CXFEndpointProvider epp = new CXFEndpointProvider(server, ENDPOINT_1, PROPERTIES);

        assertEquals(HTTP, epp.getTransport());
    }

    @Test
    public void addServerWithUnknownTransportGiven()  throws Exception {
        Server server = createServerStub(SERVICE_QNAME_2, ENDPOINT_1, SOAP11_BINDING_ID, "unknown");
        CXFEndpointProvider epp = new CXFEndpointProvider(server, ENDPOINT_1, PROPERTIES);

        assertEquals(TransportType.OTHER, epp.getTransport());
    }

    @Test
    public void equalsWhenAddressAndServiceEquivalent() {
        CXFEndpointProvider endpoint = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);       
        CXFEndpointProvider other = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);
       
        assertTrue(endpoint.equals(other));
    }

    @Test
    public void nonEqualsWhenAddressNonEquivalent() {
        CXFEndpointProvider endpoint = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);       
        CXFEndpointProvider other = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_2, PROPERTIES);
       
        assertFalse(endpoint.equals(other));
    }

    @Test
    public void nonEqualsWhenServiceNonEquivalent() {
        CXFEndpointProvider endpoint = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);       
        CXFEndpointProvider other = new CXFEndpointProvider(SERVICE_QNAME_2, ENDPOINT_1, PROPERTIES);
       
        assertFalse(endpoint.equals(other));
    }

    @Test
    public void nonEqualsWhenOtherNull() {
        CXFEndpointProvider endpoint = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);       
       
        assertFalse(endpoint.equals(null));       
    }

    @Test
    public void nonEqualsWhenOtherDifferentType() {
        CXFEndpointProvider endpoint = new CXFEndpointProvider(SERVICE_QNAME_1, ENDPOINT_1, PROPERTIES);       
       
        assertFalse(endpoint.equals(new Object()));       
    }
}
TOP

Related Classes of org.talend.esb.servicelocator.cxf.internal.CXFEndpointProviderTest

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.