001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.integration; 019 020 021import com.hp.hpl.jena.query.ResultSet; 022import org.glassfish.grizzly.http.util.HttpStatus; 023import org.glassfish.jersey.test.JerseyTest; 024import org.junit.Test; 025 026import javax.ws.rs.POST; 027import javax.ws.rs.Path; 028import javax.ws.rs.Produces; 029import javax.ws.rs.client.Entity; 030import javax.ws.rs.client.WebTarget; 031import javax.ws.rs.core.Application; 032import javax.ws.rs.core.Response; 033 034import static org.apache.jena.riot.WebContent.contentTypeNTriples; 035import static org.apache.jena.riot.WebContent.contentTypeRDFXML; 036import static org.apache.jena.riot.WebContent.contentTypeResultsBIO; 037import static org.apache.jena.riot.WebContent.contentTypeResultsJSON; 038import static org.apache.jena.riot.WebContent.contentTypeResultsXML; 039import static org.apache.jena.riot.WebContent.contentTypeTextCSV; 040import static org.apache.jena.riot.WebContent.contentTypeTextTSV; 041import static org.apache.jena.riot.WebContent.contentTypeTurtle; 042import static org.junit.Assert.assertEquals; 043import static org.mockito.Mockito.mock; 044 045/** 046 * Tests custom MessageBodyWriter 047 * @author osmandin 048 */ 049public class ResultSetStreamingOutputIT extends JerseyTest { 050 051 @Test 052 public void testContentType() { 053 final WebTarget target = target("test/point"); 054 055 Response response = target.request(contentTypeTextCSV).post(Entity.text("test") 056 , Response.class); 057 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 058 059 response = target.request(contentTypeTextTSV).post(Entity.text("test"), Response.class); 060 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 061 062 response = target.request(contentTypeRDFXML).post(Entity.text("test"), Response.class); 063 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 064 065 response = target.request(contentTypeTurtle).post(Entity.text("test"), Response.class); 066 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 067 068 response = target.request(contentTypeNTriples).post(Entity.text("test"), Response.class); 069 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 070 071 response = target.request(contentTypeResultsXML).post(Entity.text("test"), Response.class); 072 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 073 074 response = target.request(contentTypeResultsJSON).post(Entity.text("test"), Response.class); 075 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 076 077 response = target.request(contentTypeResultsBIO).post(Entity.text("test"), Response.class); 078 assertEquals(response.getStatus(), HttpStatus.OK_200.getStatusCode()); 079 080 response = target.request("gamma-rays").post(Entity.text("self-test"), Response.class); 081 assertEquals(response.getStatus(), HttpStatus.NOT_ACCEPTABLE_406.getStatusCode()); 082 } 083 084 @Override 085 protected Application configure() { 086 return new TestResourceConfig() 087 .property("contextConfigLocation", 088 "classpath:spring-test/test-config.xml"); 089 } 090 091 @Path("test") 092 public static class TestHttpResource { 093 094 @POST 095 @Path("/point") 096 @Produces({contentTypeTextTSV, contentTypeTextCSV, contentTypeResultsJSON, 097 contentTypeResultsXML, contentTypeResultsBIO, contentTypeTurtle, 098 contentTypeNTriples, contentTypeRDFXML}) 099 public ResultSet content() { 100 return mock(ResultSet.class); 101 } 102 103 } 104}