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