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

ec.gob.senescyt.sniese.commons.tests.AbstractIntegrationTest Maven / Gradle / Ivy

Go to download

Librería que contiene clases de uso comun para microservicios hechos en dropwizard

There is a newer version: 1.0.16
Show newest version
package ec.gob.senescyt.sniese.commons.tests;

import com.google.common.io.Resources;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import ec.gob.senescyt.sniese.commons.MicroservicioAplicacion;
import ec.gob.senescyt.sniese.commons.MicroservicioConfiguracion;
import ec.gob.senescyt.sniese.commons.core.EntidadBase;
import io.dropwizard.testing.junit.DropwizardAppRule;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.context.internal.ManagedSessionContext;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;

import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import java.io.File;
import java.net.URISyntaxException;
import java.util.List;

import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;

public abstract class AbstractIntegrationTest> {

    private final DropwizardAppRule rule;
    protected static final String CONFIGURACION = "test-integracion.yml";
    protected SessionFactory sessionFactory;
    protected Session session;
    protected final Client client = new Client();
    protected String defaultSchema;

    public AbstractIntegrationTest(Class applicationClass) {
        rule = new DropwizardAppRule<>(applicationClass, resourceFilePath(CONFIGURACION));
    }

    @Rule
    public DropwizardAppRule getRule() {
        return rule;
    }

    protected static String resourceFilePath(String resourceClassPathLocation) {
        try {
            return new File(Resources.getResource(resourceClassPathLocation).toURI()).getAbsolutePath();
        } catch (URISyntaxException e) {
            return null;
        }
    }

    @Before
    public void setUp() throws Exception {
        defaultSchema = getRule().getConfiguration().getDefaultSchema();
        sessionFactory = ((MicroservicioAplicacion) getRule().getApplication()).getSessionFactory();
        session = sessionFactory.openSession();
        ManagedSessionContext.bind(session);
    }

    @After
    public void tearDown() {
        ManagedSessionContext.unbind(sessionFactory);
    }

    protected ClientResponse hacerPost(final String recurso, EntidadBase entidad) {
        return construirRecursoWeb(recurso, null).post(ClientResponse.class, entidad);
    }

    protected ClientResponse hacerPost(final String recurso, Object entidad) {
        return construirRecursoWeb(recurso, null).post(ClientResponse.class, entidad);
    }

    protected ClientResponse hacerPut(final String recurso, EntidadBase entidad) {
        return construirRecursoWeb(recurso, null).put(ClientResponse.class, entidad);
    }

    protected  ClientResponse hacerPut(final String rescurso, List entidades){
        return construirRecursoWeb(rescurso,null).put(ClientResponse.class,entidades);
    }

    protected ClientResponse hacerDelete(final String recurso) {
        return construirRecursoWeb(recurso, null).delete(ClientResponse.class);
    }

    protected ClientResponse hacerGet(String recurso, MultivaluedMap parametros) {
        return construirRecursoWeb(recurso, parametros)
                .get(ClientResponse.class);
    }

    protected ClientResponse hacerGet(String recurso) {
        return construirRecursoWeb(recurso, null).get(ClientResponse.class);
    }

    private WebResource.Builder construirRecursoWeb(String recurso, MultivaluedMap parametros) {
        WebResource resource = client.resource(getURL(recurso));
        if (parametros != null){
            resource = resource.queryParams(parametros);
        }
        return resource
                .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                .header(HttpHeaders.AUTHORIZATION, randomAlphabetic(10));
    }

    protected String getURL(String recurso) {
        T configuration = getRule().getConfiguration();
        return String.format("https://localhost:%s/%s", configuration.getPuertoHttps(), recurso);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy