package org.swisspush.reststorage; import com.jayway.restassured.RestAssured; import com.jayway.restassured.builder.RequestSpecBuilder; import com.jayway.restassured.parsing.Parser; import com.jayway.restassured.specification.RequestSpecification; import io.vertx.core.DeploymentOptions; import io.vertx.core.Vertx; import io.vertx.ext.unit.TestContext; import io.vertx.ext.unit.junit.VertxUnitRunner; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.swisspush.reststorage.util.ModuleConfiguration; import redis.clients.jedis.Jedis; @RunWith(VertxUnitRunner.class) public abstract class AbstractTestCase { Vertx vertx; Jedis jedis = null; // restAssured Configuration private static final int REST_STORAGE_PORT = 8989; private static RequestSpecification REQUEST_SPECIFICATION = new RequestSpecBuilder() .addHeader("content-type", "application/json") .setPort(8989) .setBasePath("/") .build(); @BeforeClass public static void config() { if(!RedisEmbeddedConfiguration.useExternalRedis()) { RedisEmbeddedConfiguration.redisServer.start(); } } @AfterClass public static void stopRedis() { if(!RedisEmbeddedConfiguration.useExternalRedis()) { RedisEmbeddedConfiguration.redisServer.stop(); } } @Before public void setUp(TestContext context) { vertx = Vertx.vertx(); jedis = JedisFactory.createJedis(); // RestAssured Configuration RestAssured.port = REST_STORAGE_PORT; RestAssured.requestSpecification = REQUEST_SPECIFICATION; RestAssured.registerParser("application/json; charset=utf-8", Parser.JSON); RestAssured.defaultParser = Parser.JSON; ModuleConfiguration modConfig = ModuleConfiguration.with() .storageType(ModuleConfiguration.StorageType.redis) .storageAddress("rest-storage") .build(); RestStorageMod restStorageMod = new RestStorageMod(); vertx.deployVerticle(restStorageMod, new DeploymentOptions().setConfig(modConfig.asJsonObject()), context.asyncAssertSuccess(stringAsyncResult1 -> { // standard code: will called @Before every test RestAssured.basePath = ""; })); } @After public void tearDown(TestContext context) { jedis.flushAll(); jedis.close(); vertx.close(context.asyncAssertSuccess()); } }