Package org.openengsb.core.common.remote

Source Code of org.openengsb.core.common.remote.JsonFilterTest

/**
* Licensed to the Austrian Association for Software Tool Integration (AASTI)
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. The AASTI 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.openengsb.core.common.remote;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;
import org.mockito.internal.stubbing.answers.Returns;
import org.openengsb.core.api.remote.FilterAction;
import org.openengsb.core.api.remote.MethodCallMessage;
import org.openengsb.core.api.remote.MethodResult;
import org.openengsb.core.api.remote.MethodResultMessage;

public class JsonFilterTest {

    private static final String RESULT_MESSAGE = ""
            + "{"
            + "   \"result\":{"
            + "      \"type\":\"Object\","
            + "      \"arg\":{"
            + "         \"id\":\"42\","
            + "         \"name\":\"foo\""
            + "      },"
            + "      \"metaData\":{"
            + ""
            + "      },"
            + "      \"className\":\"org.openengsb.core.common.remote.TestModel\""
            + "   },"
            + "   \"timestamp\":634752977414591025,"
            + "   \"callId\":\"22b3007f-c9b0-4f4a-b1b8-6538499983a3\""
            + "}";

    private static final String CALL_MESSAGE = ""
            + "{"
            + "  \"callId\" : \"c9dc15e2-a219-437d-b55c-393f8225d5e1\","
            + "  \"timestamp\" : 1339753772049,"
            + "  \"methodCall\" : {"
            + "    \"methodName\" : \"theMethod\","
            + "    \"args\" : [ {"
            + "      \"name\" : \"foo\","
            + "      \"id\" : 42"
            + "    } ],"
            + "    \"metaData\" : {"
            + "    },"
            + "    \"classes\" : [ \"org.openengsb.core.common.remote.TestModel\" ]"
            + "  },"
            + "  \"answer\" : true,"
            + "  \"destination\" : null,"
            + "  \"principal\" : null,"
            + "  \"credentials\" : null"
            + "}";

    @Test
    public void testMethodCallMarashalFilter_shouldMarshalOutgoingMessage() throws Exception {
        JsonOutgoingMethodCallMarshalFilter jsonOutgoingMethodCallMarshalFilter =
            new JsonOutgoingMethodCallMarshalFilter();
        FilterAction mock = mock(FilterAction.class);
        when(mock.filter(any(MethodCallMessage.class), any(Map.class))).thenReturn(RESULT_MESSAGE);
        when(mock.getSupportedInputType()).thenAnswer(new Returns(String.class));
        when(mock.getSupportedOutputType()).thenAnswer(new Returns(String.class));
        jsonOutgoingMethodCallMarshalFilter.setNext(mock);
        MethodResultMessage result =
            (MethodResultMessage) jsonOutgoingMethodCallMarshalFilter.filter(new MethodCallMessage(),
                new HashMap<String, Object>());
        Object arg = result.getResult().getArg();
        assertThat(arg, is(TestModel.class));
        TestModel resultModel = (TestModel) arg;
        assertThat(resultModel.getId(), is(42));
        assertThat(resultModel.getName(), is("foo"));
    }

    @Test
    public void testIncomingMethodCallMarashalFilter_shouldMarshalIngoingMessage() throws Exception {
        JsonMethodCallMarshalFilter jsonMethodCallMarshalFilter = new JsonMethodCallMarshalFilter();
        FilterAction mock = mock(FilterAction.class);
        TestModel testResult = new TestModel();
        testResult.setId(42);
        testResult.setName("bar");
        MethodResultMessage testResultMessage =
            new MethodResultMessage(new MethodResult(testResult), "foo");
        when(mock.filter(any(MethodCallMessage.class), any(Map.class))).thenReturn(testResultMessage);
        when(mock.getSupportedInputType()).thenAnswer(new Returns(MethodCallMessage.class));
        when(mock.getSupportedOutputType()).thenAnswer(new Returns(MethodResultMessage.class));
        jsonMethodCallMarshalFilter.setNext(mock);
        jsonMethodCallMarshalFilter.filter(CALL_MESSAGE, new HashMap<String, Object>());
    }
}
TOP

Related Classes of org.openengsb.core.common.remote.JsonFilterTest

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.