org.apache.olingo.netty.server.core.NettyServiceDispatcherTest.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.olingo.netty.server.core.NettyServiceDispatcherTest.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF 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.apache.olingo.netty.server.core;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.format.ContentType;
import org.apache.olingo.netty.server.api.ODataNetty;
import org.apache.olingo.netty.server.api.ODataNettyHandler;
import org.apache.olingo.server.api.ServiceMetadata;
import org.apache.olingo.server.api.deserializer.DeserializerException;
import org.apache.olingo.server.api.serializer.SerializerException;
import org.apache.olingo.server.core.MetadataParser;
import org.apache.olingo.server.core.SchemaBasedEdmProvider;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.DefaultFullHttpRequest;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpVersion;

public class NettyServiceDispatcherTest {

    ServiceMetadata metadata = null;
    ODataNetty odata = ODataNetty.newInstance();
    SchemaBasedEdmProvider provider = null;

    @Before
    public void beforeTest() throws Exception {
        MetadataParser parser = new MetadataParser();
        parser.parseAnnotations(true);
        parser.useLocalCoreVocabularies(true);
        parser.implicitlyLoadCoreVocabularies(true);
        metadata = parser.buildServiceMetadata(new FileReader("src/test/resources/trippin.xml"));
        provider = parser.buildEdmProvider(new FileReader("src/test/resources/trippin.xml"));
    }

    @Test
    public void testCreateHandler() {
        assertNotNull(odata.createHandler(metadata));
    }

    @Test
    public void testCreateRawHandler() {
        assertNotNull(odata.createRawHandler(metadata));
    }

    @Test
    public void testCreateDeserializer() throws DeserializerException {
        assertNotNull(odata.createDeserializer(ContentType.APPLICATION_JSON, metadata));
    }

    @Test
    public void testCreatePrimitiveTypeInstance() throws DeserializerException {
        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Date));
        assertEquals(EdmTypeKind.PRIMITIVE, odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Date).getKind());
        assertEquals(EdmPrimitiveTypeKind.Date.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Date).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Binary));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Binary).getKind());
        assertEquals(EdmPrimitiveTypeKind.Binary.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Binary).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Byte));
        assertEquals(EdmTypeKind.PRIMITIVE, odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Byte).getKind());
        assertEquals(EdmPrimitiveTypeKind.Byte.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Byte).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset).getKind());
        assertEquals(EdmPrimitiveTypeKind.DateTimeOffset.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.DateTimeOffset).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean).getKind());
        assertEquals(EdmPrimitiveTypeKind.Boolean.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Boolean).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Decimal));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Decimal).getKind());
        assertEquals(EdmPrimitiveTypeKind.Decimal.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Decimal).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Double));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Double).getKind());
        assertEquals(EdmPrimitiveTypeKind.Double.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Double).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration).getKind());
        assertEquals(EdmPrimitiveTypeKind.Duration.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Duration).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Geography));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Geography).getKind());
        assertEquals(EdmPrimitiveTypeKind.Geography.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Geography).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyCollection));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyCollection).getKind());
        assertEquals(EdmPrimitiveTypeKind.GeographyCollection.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyCollection).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyLineString));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyLineString).getKind());
        assertEquals(EdmPrimitiveTypeKind.GeographyLineString.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyLineString).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyMultiLineString));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyMultiLineString).getKind());
        assertEquals(EdmPrimitiveTypeKind.GeographyMultiLineString.getFullQualifiedName(), odata
                .createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeographyMultiLineString).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeometryMultiPoint));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeometryMultiPoint).getKind());
        assertEquals(EdmPrimitiveTypeKind.GeometryMultiPoint.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeometryMultiPoint).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeometryMultiPolygon));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeometryMultiPolygon).getKind());
        assertEquals(EdmPrimitiveTypeKind.GeometryMultiPolygon.getFullQualifiedName(), odata
                .createPrimitiveTypeInstance(EdmPrimitiveTypeKind.GeometryMultiPolygon).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Guid));
        assertEquals(EdmTypeKind.PRIMITIVE, odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Guid).getKind());
        assertEquals(EdmPrimitiveTypeKind.Guid.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Guid).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16).getKind());
        assertEquals(EdmPrimitiveTypeKind.Int16.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int16).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int32));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int32).getKind());
        assertEquals(EdmPrimitiveTypeKind.Int32.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int32).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int64));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int64).getKind());
        assertEquals(EdmPrimitiveTypeKind.Int64.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Int64).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.SByte));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.SByte).getKind());
        assertEquals(EdmPrimitiveTypeKind.SByte.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.SByte).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Single));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Single).getKind());
        assertEquals(EdmPrimitiveTypeKind.Single.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Single).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Stream));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Stream).getKind());
        assertEquals(EdmPrimitiveTypeKind.Stream.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Stream).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String).getKind());
        assertEquals(EdmPrimitiveTypeKind.String.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.String).getFullQualifiedName());

        assertNotNull(odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.TimeOfDay));
        assertEquals(EdmTypeKind.PRIMITIVE,
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.TimeOfDay).getKind());
        assertEquals(EdmPrimitiveTypeKind.TimeOfDay.getFullQualifiedName(),
                odata.createPrimitiveTypeInstance(EdmPrimitiveTypeKind.TimeOfDay).getFullQualifiedName());
    }

    @Test
    public void testCreatePreferences() {
        List<String> preferHeaders = new ArrayList<String>();
        preferHeaders.add("return=representation");
        preferHeaders.add("odata.track-changes");
        assertNotNull(odata.createPreferences(preferHeaders));
    }

    @Test
    public void testCreateEdmAssistedSerializer() throws SerializerException {
        assertNotNull(odata.createEdmAssistedSerializer(ContentType.APPLICATION_JSON));
    }

    @Test
    public void testCreateEdmDeltaSerializer() throws SerializerException {
        List<String> versions = new ArrayList<String>();
        versions.add("4.01");
        assertNotNull(odata.createEdmDeltaSerializer(ContentType.APPLICATION_JSON, versions));
    }

    @Test
    public void testMetadata() throws Exception {
        DefaultFullHttpRequest nettyRequest = Mockito.mock(DefaultFullHttpRequest.class);
        io.netty.handler.codec.http.HttpMethod httpMethod = mock(io.netty.handler.codec.http.HttpMethod.class);
        when(httpMethod.name()).thenReturn("GET");
        when(nettyRequest.method()).thenReturn(httpMethod);
        HttpVersion httpVersion = mock(HttpVersion.class);
        when(httpVersion.text()).thenReturn("HTTP/1.0");
        when(nettyRequest.protocolVersion()).thenReturn(httpVersion);
        when(nettyRequest.uri()).thenReturn("/trippin/$metadata");
        HttpHeaders headers = mock(HttpHeaders.class);
        when(nettyRequest.headers()).thenReturn(headers);
        when(nettyRequest.content()).thenReturn(Unpooled.buffer());

        DefaultFullHttpResponse nettyResponse = mock(DefaultFullHttpResponse.class);
        when(nettyResponse.status()).thenReturn(HttpResponseStatus.OK);
        when(nettyResponse.headers()).thenReturn(headers);
        when(nettyResponse.content()).thenReturn(Unpooled.buffer());

        Map<String, String> requestParams = new HashMap<String, String>();
        requestParams.put("contextPath", "/trippin");
        ODataNettyHandler handler = odata.createNettyHandler(metadata);
        handler.processNettyRequest(nettyRequest, nettyResponse, requestParams);
        assertNotNull(new String(nettyResponse.content().array()));
        assertEquals(200, nettyResponse.status().code());
        assertEquals("OK", nettyResponse.status().reasonPhrase());
    }

    @Test
    public void testCreateServiceMetadata() throws SerializerException {
        assertNotNull(odata.createServiceMetadata(provider, metadata.getReferences(),
                metadata.getServiceMetadataETagSupport()));
    }
}