blob: d4e8ebd3277537fd0fcb1c2e0f2226d5c5e085d0 [file] [log] [blame]
/*
* 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.server.core.uri;
import org.apache.olingo.commons.api.ODataRuntimeException;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.server.api.uri.UriInfoAll;
import org.apache.olingo.server.api.uri.UriInfoBatch;
import org.apache.olingo.server.api.uri.UriInfoCrossjoin;
import org.apache.olingo.server.api.uri.UriInfoEntityId;
import org.apache.olingo.server.api.uri.UriInfoKind;
import org.apache.olingo.server.api.uri.UriInfoMetadata;
import org.apache.olingo.server.api.uri.UriInfoResource;
import org.apache.olingo.server.api.uri.UriInfoService;
import org.apache.olingo.server.api.uri.queryoption.CustomQueryOption;
import org.apache.olingo.server.core.edm.provider.EdmProviderImpl;
import org.apache.olingo.server.core.uri.queryoption.CountOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.CustomQueryOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.ExpandOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.FilterOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.FormatOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.IdOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.LevelsOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.OrderByOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.QueryOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.SearchOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.SelectOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.SkipOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.SkipTokenOptionImpl;
import org.apache.olingo.server.core.uri.queryoption.TopOptionImpl;
import org.apache.olingo.server.core.uri.testutil.EdmTechTestProvider;
import org.apache.olingo.server.tecsvc.provider.EntityTypeProvider;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class UriInfoImplTest {
Edm edm = new EdmProviderImpl(new EdmTechTestProvider());
@Test
public void testKind() {
UriInfoImpl uriInfo = new UriInfoImpl().setKind(UriInfoKind.all);
assertEquals(UriInfoKind.all, uriInfo.getKind());
}
@Test
public void testCasts() {
UriInfoImpl uriInfo = new UriInfoImpl();
UriInfoAll all = uriInfo.asUriInfoAll();
assertEquals(uriInfo, all);
UriInfoBatch batch = uriInfo.asUriInfoBatch();
assertEquals(uriInfo, batch);
UriInfoCrossjoin crossjoin = uriInfo.asUriInfoCrossjoin();
assertEquals(uriInfo, crossjoin);
UriInfoEntityId entityID = uriInfo.asUriInfoEntityId();
assertEquals(uriInfo, entityID);
UriInfoMetadata metadata = uriInfo.asUriInfoMetadata();
assertEquals(uriInfo, metadata);
UriInfoResource resource = uriInfo.asUriInfoResource();
assertEquals(uriInfo, resource);
UriInfoService service = uriInfo.asUriInfoService();
assertEquals(uriInfo, service);
}
@Test
public void testEntityNames() {
UriInfoImpl uriInfo = new UriInfoImpl();
uriInfo.addEntitySetName("A");
uriInfo.addEntitySetName("B");
assertEquals("A", uriInfo.getEntitySetNames().get(0));
assertEquals("B", uriInfo.getEntitySetNames().get(1));
}
@Test
public void testResourceParts() {
UriInfoImpl uriInfo = new UriInfoImpl();
UriResourceActionImpl action = new UriResourceActionImpl();
UriResourceEntitySetImpl entitySet0 = new UriResourceEntitySetImpl();
UriResourceEntitySetImpl entitySet1 = new UriResourceEntitySetImpl();
uriInfo.addResourcePart(action);
uriInfo.addResourcePart(entitySet0);
assertEquals(action, uriInfo.getUriResourceParts().get(0));
assertEquals(entitySet0, uriInfo.getUriResourceParts().get(1));
assertEquals(entitySet0, uriInfo.getLastResourcePart());
uriInfo.addResourcePart(entitySet1);
assertEquals(entitySet1, uriInfo.getLastResourcePart());
}
@Test(expected = ODataRuntimeException.class)
public void doubleSystemQueryOptions() {
new UriInfoImpl()
.setSystemQueryOption(new FormatOptionImpl())
.setSystemQueryOption(new FormatOptionImpl());
}
@Test
public void testCustomQueryOption() {
UriInfoImpl uriInfo = new UriInfoImpl();
List<QueryOptionImpl> queryOptions = new ArrayList<QueryOptionImpl>();
ExpandOptionImpl expand = new ExpandOptionImpl();
FilterOptionImpl filter = new FilterOptionImpl();
FormatOptionImpl format = new FormatOptionImpl();
IdOptionImpl id = new IdOptionImpl();
CountOptionImpl inlinecount = new CountOptionImpl();
OrderByOptionImpl orderby = new OrderByOptionImpl();
SearchOptionImpl search = new SearchOptionImpl();
SelectOptionImpl select = new SelectOptionImpl();
SkipOptionImpl skip = new SkipOptionImpl();
SkipTokenOptionImpl skipToken = new SkipTokenOptionImpl();
TopOptionImpl top = new TopOptionImpl();
LevelsOptionImpl levels = new LevelsOptionImpl();
CustomQueryOptionImpl customOption0 = new CustomQueryOptionImpl();
customOption0.setText("A");
CustomQueryOptionImpl customOption1 = new CustomQueryOptionImpl();
customOption1.setText("B");
QueryOptionImpl queryOption = new QueryOptionImpl();
queryOptions.add(expand.setName(""));
queryOptions.add(filter.setName(""));
queryOptions.add(format.setName(""));
queryOptions.add(id.setName(""));
queryOptions.add(inlinecount.setName(""));
queryOptions.add(orderby.setName(""));
queryOptions.add(search.setName(""));
queryOptions.add(select.setName(""));
queryOptions.add(skip.setName(""));
queryOptions.add(skipToken.setName(""));
queryOptions.add(top.setName(""));
queryOptions.add(customOption0.setName(""));
queryOptions.add(customOption1.setName(""));
queryOptions.add(levels.setName(""));// not stored
queryOptions.add(queryOption.setName(""));// not stored
uriInfo.setQueryOptions(queryOptions);
assertEquals(expand, uriInfo.getExpandOption());
assertEquals(filter, uriInfo.getFilterOption());
assertEquals(format, uriInfo.getFormatOption());
assertEquals(id, uriInfo.getIdOption());
assertEquals(inlinecount, uriInfo.getCountOption());
assertEquals(orderby, uriInfo.getOrderByOption());
assertEquals(search, uriInfo.getSearchOption());
assertEquals(select, uriInfo.getSelectOption());
assertEquals(skip, uriInfo.getSkipOption());
assertEquals(skipToken, uriInfo.getSkipTokenOption());
assertEquals(top, uriInfo.getTopOption());
List<CustomQueryOption> customQueryOptions = uriInfo.getCustomQueryOptions();
assertEquals(customOption0, customQueryOptions.get(0));
assertEquals(customOption1, customQueryOptions.get(1));
}
@Test
public void testFragment() {
UriInfoImpl uriInfo = new UriInfoImpl();
uriInfo.setFragment("F");
assertEquals("F", uriInfo.getFragment());
}
@Test
public void testEntityTypeCast() {
UriInfoImpl uriInfo = new UriInfoImpl();
EdmEntityType entityType = edm.getEntityType(EntityTypeProvider.nameETKeyNav);
assertNotNull(entityType);
uriInfo.setEntityTypeCast(entityType);
assertEquals(entityType, uriInfo.getEntityTypeCast());
}
}