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.applications.DecoradorAplicacion;
import ec.gob.senescyt.sniese.commons.configurations.ConfiguracionSnieseBase;
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.HashMap;
import java.util.List;
import java.util.Map;

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;
    protected Map headersDefecto;

    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 {
        if (getRule().getConfiguration().getConfiguracionPersistente().getDatabase() != null) {
            defaultSchema = getRule().getConfiguration().getConfiguracionPersistente().getDefaultSchema();
            sessionFactory = getSessionFactory();
            session = sessionFactory.openSession();
            ManagedSessionContext.bind(session);
        }
        headersDefecto = new HashMap<>(1);
        headersDefecto.put("Authorization", randomAlphabetic(10));
    }

    protected abstract SessionFactory getSessionFactory();

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

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

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

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

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

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

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

    protected ClientResponse hacerGetConHeaders(String recurso, Map headers) {
        WebResource.Builder builder = construirRecursoWeb(recurso, null, headers);
        return builder.get(ClientResponse.class);
    }

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

    private WebResource.Builder construirRecursoWeb(String recurso, MultivaluedMap parametros, Map headers) {
        WebResource resource = client.resource(getURL(recurso));
        if (parametros != null) {
            resource = resource.queryParams(parametros);
        }
        WebResource.Builder builder = resource.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
        headers.forEach((llave, valor) -> builder.header(llave, valor));
        return builder;
    }

    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