/** * personium.io * Copyright 2014 FUJITSU LIMITED * * 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 com.fujitsu.dc.test.unit.core.rs.odata; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import javax.ws.rs.core.MediaType; import org.junit.Test; import org.junit.experimental.categories.Category; import com.fujitsu.dc.core.DcCoreException; import com.fujitsu.dc.core.rs.odata.ODataEntityResource; import com.fujitsu.dc.test.categories.Unit; /** */ @Category({ Unit.class }) public class DecideOutputFormatTest { /** * format指定なしaccept指定なしでxmlが返却されること. */ @Test public final void format指定なしaccept指定なしでxmlが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(null, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptにアスタリスクを指定した場合xmlが返却されること. */ @Test public final void format指定なしでacceptにアスタリスクを指定した場合xmlが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(MediaType.WILDCARD, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptにJSONを指定した場合JSONが返却されること. */ @Test public final void format指定なしでacceptにJSONを指定した場合JSONが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(MediaType.APPLICATION_JSON, null); assertEquals(MediaType.APPLICATION_JSON_TYPE, type); } /** * format指定なしでacceptにXMLを指定した場合XMLが返却されること. */ @Test public final void format指定なしでacceptにXMLを指定した場合XMLが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(MediaType.APPLICATION_XML, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptにATOM_XMLを指定した場合XMLが返却されること. */ @Test public final void format指定なしでacceptにATOM_XMLを指定した場合XMLが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(MediaType.APPLICATION_ATOM_XML, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptにJSONとATOM_XMLを指定した場合XMLが返却されること. */ @Test public final void format指定なしでacceptにJSONとATOM_XMLを指定した場合XMLが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat( MediaType.APPLICATION_JSON + "," + MediaType.APPLICATION_ATOM_XML, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * acceptのセミコロン以降を無視すること. */ @Test public final void acceptのセミコロン以降を無視すること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat( "application/xml;q=0.9,*/*;q=0.8", null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptに未サポートの値を指定した場合415エラーが返却されること. */ @Test public final void format指定なしでacceptに未サポートの値を指定した場合415エラーが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); try { odataEntityResource.decideOutputFormat("INVALID_VALUE", null); fail(); } catch (DcCoreException e) { assertEquals("PR415-OD-0001", e.getCode()); } catch (Exception e) { fail(); } } /** * format指定なしでacceptにxmlとatomを指定した場合xmlが返却されること. */ @Test public final void format指定なしでacceptにxmlとatomを指定した場合xmlが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat( MediaType.APPLICATION_XML + "," + MediaType.APPLICATION_ATOM_XML, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptにxmlとJSONを指定した場合xmlが返却されること. */ @Test public final void format指定なしでacceptにxmlとJSONを指定した場合xmlが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat( MediaType.APPLICATION_JSON + "," + MediaType.APPLICATION_ATOM_XML, null); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * format指定なしでacceptにxmlと未サポートの値を指定した場合415エラーが返却されること. */ @Test public final void format指定なしでacceptにxmlと未サポートの値を指定した場合415エラーが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); try { odataEntityResource.decideOutputFormat( MediaType.APPLICATION_ATOM_XML + "," + "INVALID_VALUE", null); fail(); } catch (DcCoreException e) { assertEquals("PR415-OD-0001", e.getCode()); } catch (Exception e) { fail(); } } /** * formatにatomを指定しaccept指定なしでXMLが返却されること. */ @Test public final void formatにatomを指定しaccept指定なしでXMLが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(null, "atom"); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * formatにJSONを指定しaccept指定なしでJSONが返却されること. */ @Test public final void formatにJSONを指定しaccept指定なしでJSONが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(null, "json"); assertEquals(MediaType.APPLICATION_JSON_TYPE, type); } /** * formatにatomを指定しacceptにJSONでxmlが返却されること. */ @Test public final void formatにatomを指定しacceptにJSONでxmlが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(MediaType.APPLICATION_JSON, "atom"); assertEquals(MediaType.APPLICATION_ATOM_XML_TYPE, type); } /** * formatにJSONを指定しacceptにxml指定でJSONが返却されること. */ @Test public final void formatにJSONを指定しacceptにxml指定でJSONが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); MediaType type = odataEntityResource.decideOutputFormat(MediaType.APPLICATION_ATOM_XML, "json"); assertEquals(MediaType.APPLICATION_JSON_TYPE, type); } /** * formatに未サポートの値を指定した場合に400エラーが返却されること. */ @Test public final void formatに未サポートの値を指定した場合に400エラーが返却されること() { ODataEntityResource odataEntityResource = new ODataEntityResource(); try { odataEntityResource.decideOutputFormat(null, "INVALID_VALUE"); fail(); } catch (DcCoreException e) { assertEquals("PR400-OD-0005", e.getCode()); } catch (Exception e) { fail(); } } }