All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.dropwizard.testing.junit.DropwizardClientRule Maven / Gradle / Ivy

There is a newer version: 5.0.0-alpha.2
Show newest version
package io.dropwizard.testing.junit;

import com.fasterxml.jackson.databind.ObjectMapper;
import io.dropwizard.setup.Environment;
import io.dropwizard.testing.common.DropwizardClient;
import org.junit.rules.ExternalResource;

import java.net.URI;
import java.net.URL;

//@formatter:off
/**
 * Test your HTTP client code by writing a JAX-RS test double class and let this rule start and stop a
 * Dropwizard application containing your doubles.
 * 

* Example: *


    {@literal @}Path("/ping")
    public static class PingResource {
        {@literal @}GET
        public String ping() {
            return "pong";
        }
    }

    {@literal @}ClassRule
    public static DropwizardClientRule dropwizard = new DropwizardClientRule(new PingResource());

    {@literal @}Test
    public void shouldPing() throws IOException {
        URL url = new URL(dropwizard.baseUri() + "/ping");
        String response = new BufferedReader(new InputStreamReader(url.openStream())).readLine();
        assertEquals("pong", response);
    }
* Of course, you'd use your http client, not {@link URL#openStream()}. *

*

* The {@link DropwizardClientRule} takes care of: *

    *
  • Creating a simple default configuration.
  • *
  • Creating a simplistic application.
  • *
  • Adding a dummy health check to the application to suppress the startup warning.
  • *
  • Adding your resources to the application.
  • *
  • Choosing a free random port number.
  • *
  • Starting the application.
  • *
  • Stopping the application.
  • *
*

*/ //@formatter:off public class DropwizardClientRule extends ExternalResource { private final DropwizardClient client; public DropwizardClientRule(Object... resources) { this.client = new DropwizardClient(resources); } public URI baseUri() { return client.baseUri(); } public ObjectMapper getObjectMapper() { return client.getObjectMapper(); } public Environment getEnvironment() { return client.getEnvironment(); } @Override protected void before() throws Throwable { client.before(); } @Override protected void after() { client.after(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy