Package org.switchyard.component.bean.invoker

Source Code of org.switchyard.component.bean.invoker.ReferenceInvokerTest

/*
* Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors.
*
* 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 org.switchyard.component.bean.invoker;

import junit.framework.Assert;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.switchyard.BaseHandler;
import org.switchyard.Exchange;
import org.switchyard.HandlerException;
import org.switchyard.Message;
import org.switchyard.Property;
import org.switchyard.Scope;
import org.switchyard.component.test.mixins.cdi.CDIMixIn;
import org.switchyard.test.Invoker;
import org.switchyard.test.MockHandler;
import org.switchyard.test.ServiceOperation;
import org.switchyard.test.SwitchYardRunner;
import org.switchyard.test.SwitchYardTestCaseConfig;
import org.switchyard.test.SwitchYardTestKit;

@RunWith(SwitchYardRunner.class)
@SwitchYardTestCaseConfig(config = "ReferenceInvokerTest.xml", mixins = CDIMixIn.class)
public class ReferenceInvokerTest {

    public static final String REFERENCE_A = "ReferenceA";
    public static final String REFERENCE_B = "ReferenceB";
    public static final String TEST_IN_PROPERTY = "TestInProperty";
    public static final String TEST_OUT_PROPERTY = "TestOutProperty";
    private SwitchYardTestKit testKit;

    @ServiceOperation("InvokerService")
    private Invoker invokerService;

    @Test
    public void invokeReferenceA() {
        MockHandler handlerA = testKit.registerInOnlyService(REFERENCE_A);
        MockHandler handlerB = testKit.registerInOnlyService(REFERENCE_B);
        invokerService.operation("testA").sendInOut("testA");
        Assert.assertEquals(1, handlerA.getMessages().size());
        Assert.assertEquals(0, handlerB.getMessages().size());
    }
   
    @Test
    public void invokeReferenceB() {
        MockHandler handlerA = testKit.registerInOnlyService(REFERENCE_A);
        MockHandler handlerB = testKit.registerInOnlyService(REFERENCE_B);
        invokerService.operation("testB").sendInOut("testB");
        Assert.assertEquals(0, handlerA.getMessages().size());
        Assert.assertEquals(1, handlerB.getMessages().size());
    }
   
    @Test
    public void invokeNonexistentReference() {
        invokerService.operation("testZ").sendInOut("testZ");
    }
   
    @Test
    public void invokeWithoutOperationName() {
        invokerService.operation("noOperation").sendInOut("noOperation");
    }
   
    @Test
    public void getContract() {
        invokerService.operation("getContract").sendInOut("getContract");
    }
   
    @Test
    public void messageTest() {
        testKit.registerInOutService(REFERENCE_A, new BaseHandler() {
            @Override
            public void handleMessage(Exchange exchange) throws HandlerException {
                // Verify that the content was set on the request message by the invoker
                Assert.assertNotNull(exchange.getMessage().getContent());
                Assert.assertEquals("message-test-in", exchange.getMessage().getContent());
               
                // Set out content to be returned through invoker
                Message reply = exchange.createMessage();
                reply.setContent("message-test-out");
                exchange.send(reply);
            }
        });
        invokerService.operation("messageTest").sendInOut("messageTest");
    }
   
    @Test
    public void invokeWithContent() {
        testKit.registerInOutService(REFERENCE_A, new BaseHandler() {
            @Override
            public void handleMessage(Exchange exchange) throws HandlerException {
                // Verify that the content was set on the request message by the invoker
                Assert.assertNotNull(exchange.getMessage().getContent());
                Assert.assertEquals("content-test-in", exchange.getMessage().getContent());
            }
        });
        invokerService.operation("invokeWithContent").sendInOut("invokeWithContent");
    }
   
    @Test
    public void setProperty() {
        testKit.registerInOutService(REFERENCE_A, new BaseHandler() {
            @Override
            public void handleMessage(Exchange exchange) throws HandlerException {
                // Verify that a property was set on the request message by the invoker
                Property inProp = exchange.getContext(exchange.getMessage())
                        .getProperty(TEST_IN_PROPERTY, Scope.MESSAGE);
                Assert.assertNotNull(inProp);
                Assert.assertEquals(TEST_IN_PROPERTY, inProp.getValue());
               
                // Set an out property which will be verified in the test bean class
                Message reply = exchange.createMessage();
                exchange.getContext(reply)
                    .setProperty(TEST_OUT_PROPERTY, TEST_OUT_PROPERTY, Scope.MESSAGE);
                exchange.send(reply);
            }
        });
        invokerService.operation("propertyTest").sendInOut("propertyTest");
    }
   
    @Test
    public void declaredException() {
        testKit.registerInOutService(REFERENCE_A, new BaseHandler() {
            public void handleMessage(Exchange exchange) throws HandlerException {
                Message reply = exchange.createMessage();
                reply.setContent(new DummyException(
                        exchange.getMessage().getContent(String.class)));
                exchange.sendFault(reply);
            }
        });
        invokerService.operation("declaredException").sendInOut("declaredException");
    }
   
    @Test
    public void undeclaredException() {
        testKit.registerInOutService(REFERENCE_A, new BaseHandler() {
            public void handleMessage(Exchange exchange) throws HandlerException {
                throw new HandlerException(new DummyException(
                        exchange.getMessage().getContent(String.class)));
            }
        });
        invokerService.operation("undeclaredException").sendInOut("undeclaredException");
    }
}
TOP

Related Classes of org.switchyard.component.bean.invoker.ReferenceInvokerTest

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.