package io.dropwizard.jersey.sessions; import com.codahale.metrics.MetricRegistry; import io.dropwizard.jersey.AbstractJerseyTest; import io.dropwizard.jersey.DropwizardResourceConfig; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.ServerProperties; import org.glassfish.jersey.servlet.ServletProperties; import org.glassfish.jersey.test.DeploymentContext; import org.glassfish.jersey.test.ServletDeploymentContext; import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory; import org.glassfish.jersey.test.spi.TestContainerException; import org.glassfish.jersey.test.spi.TestContainerFactory; import org.junit.Test; import javax.ws.rs.client.Entity; import javax.ws.rs.client.Invocation; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.NewCookie; import javax.ws.rs.core.Response; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; public class FlashFactoryTest extends AbstractJerseyTest { @Override protected TestContainerFactory getTestContainerFactory() throws TestContainerException { return new GrizzlyWebTestContainerFactory(); } @Override protected DeploymentContext configureDeployment() { final ResourceConfig rc = DropwizardResourceConfig.forTesting(new MetricRegistry()); return ServletDeploymentContext.builder(rc) .initParam(ServletProperties.JAXRS_APPLICATION_CLASS, DropwizardResourceConfig.class.getName()) .initParam(ServerProperties.PROVIDER_CLASSNAMES, FlashResource.class.getName()) .build(); } @Test public void passesInHttpSessions() throws Exception { Response firstResponse = target("/flash").request(MediaType.TEXT_PLAIN) .post(Entity.entity("Mr. Peeps", MediaType.TEXT_PLAIN)); final Map<String, NewCookie> cookies = firstResponse.getCookies(); firstResponse.close(); Invocation.Builder builder = target("/flash").request().accept(MediaType.TEXT_PLAIN); for (NewCookie cookie : cookies.values()) { builder = builder.cookie(cookie); } final String secondResponse = builder.get(String.class); assertThat(secondResponse).isEqualTo("Mr. Peeps"); Invocation.Builder anotherBuilder = target("/flash").request().accept(MediaType.TEXT_PLAIN); for (NewCookie cookie : cookies.values()) { anotherBuilder = anotherBuilder.cookie(cookie); } final String thirdResponse = anotherBuilder.get(String.class); assertThat(thirdResponse).isEqualTo("null"); } }