Включите сжатие gzip для гризли под JerseyTest - PullRequest
1 голос
/ 20 декабря 2010

У меня есть джерси реализации веб-службы.Ответ в соответствии с требованиями должен быть gzip-ред.

На стороне клиента содержится следующий загрузочный код для включения gzip:

Client retval = Client.create();
retval.addFilter(
    new com.sun.jersey.api.client.filter.GZIPContentEncodingFilter());

Для Tomcat web.xml gzip настроен следующим образом

 <servlet>
  <display-name>JAX-RS REST Servlet</display-name>
  <servlet-name>JAX-RS REST Servlet</servlet-name>
  <servlet-class>
      com.sun.jersey.spi.container.servlet.ServletContainer
  </servlet-class>
  <load-on-startup>1</load-on-startup>
  <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
        <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value>
  </init-param>
  <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
        <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value>
  </init-param>

И все работает отлично!

Но мне нужно написать модульный тест, который вызывает мой сервис.Я использую JerseyTest в качестве базы, и на практике было показано, что гризли неправильно обрабатывает gzip без явного объявления.Я нашел фрагмент кода, как включить его аналогичная проблема , но я не знаю, как его совместить с JerseyTest.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Вот пример теста, если вы используете тест Джерси Framwork:

@Test
public void testGet(){    

    WebResource webResource = resource();

    ClientResponse result = webResource
        .path("pathToResource")
        .header("Accept-Encoding", "gzip")
        .head();

    assertEquals(
       "response header must contain gzip encoding",
       "[gzip]",
       result.getHeaders().get("Content-Encoding").toString());
}
0 голосов
/ 31 марта 2014

КАК клиентский API изменился в текущих версиях Джерси, это пример теста, который работает с Джерси 2.6:

public class WebServicesCompressionTest extends JerseyTest {

    @Path("/")
    public static class HelloResource {

        @GET
        public String getHello() {
            return "Hello World!";
        }
    }

    @Override
    protected Application configure() {
        enable(TestProperties.LOG_TRAFFIC);
        return new ResourceConfig(
                HelloResource.class,
                EncodingFilter.class,
                GZipEncoder.class,
                DeflateEncoder.class
        );
    }

    @Test
    public void testGzip() {
        Response response = target().request().acceptEncoding("gzip").get(Response.class);

        assertThat(response.getStatus(), is(200));
        assertThat(response.getHeaderString("Content-encoding"), is("gzip"));
    }
}
...