ec.gob.senescyt.sniese.commons.tests.AbstractIntegrationTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sniese-commons-test Show documentation
Show all versions of sniese-commons-test Show documentation
Librería que contiene clases de uso comun para microservicios hechos en dropwizard
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);
}
}