diff --git a/restx-jongo-specs-tests/pom.xml b/restx-jongo-specs-tests/pom.xml
index ff64593fc..047e4891b 100644
--- a/restx-jongo-specs-tests/pom.xml
+++ b/restx-jongo-specs-tests/pom.xml
@@ -18,6 +18,7 @@
0.32-SNAPSHOT
+ 1.42
1.7
1.7
@@ -38,5 +39,10 @@
restx-jongo
${restx.version}
+
+ de.flapdoodle.embed
+ de.flapdoodle.embed.mongo
+ ${de.flapdoodle.embed.version}
+
diff --git a/restx-jongo-specs-tests/src/main/java/restx/jongo/specs/tests/MongoEmbedRule.java b/restx-jongo-specs-tests/src/main/java/restx/jongo/specs/tests/MongoEmbedRule.java
new file mode 100644
index 000000000..c02bf5a00
--- /dev/null
+++ b/restx-jongo-specs-tests/src/main/java/restx/jongo/specs/tests/MongoEmbedRule.java
@@ -0,0 +1,63 @@
+package restx.jongo.specs.tests;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import restx.mongo.MongoModule;
+
+import com.mongodb.MongoClient;
+
+import de.flapdoodle.embed.mongo.MongodExecutable;
+import de.flapdoodle.embed.mongo.MongodProcess;
+import de.flapdoodle.embed.mongo.MongodStarter;
+import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
+import de.flapdoodle.embed.mongo.config.Net;
+import de.flapdoodle.embed.mongo.distribution.Version;
+import de.flapdoodle.embed.process.runtime.Network;
+
+public class MongoEmbedRule implements TestRule {
+
+ @Override
+ public Statement apply(final Statement base, Description description) {
+ return new Statement() {
+
+ @Override
+ public void evaluate() throws Throwable {
+ InetAddress addr = Network.getLocalHost();
+ int port = Network.getFreeServerPort(addr);
+
+ System.setProperty(MongoModule.MONGO_URI, new StringBuilder(
+ "mongodb://").append(addr.getHostName()).append(":")
+ .append(port).toString());
+
+ MongodStarter runtime = MongodStarter.getDefaultInstance();
+ MongodExecutable _mongodExe = runtime
+ .prepare(new MongodConfigBuilder()
+ .version(Version.Main.PRODUCTION)
+ .net(new Net(port, hostIsIPv6(addr))).build());
+ MongodProcess _mongod = _mongodExe.start();
+ new MongoClient(addr.getHostName(), port);
+
+ base.evaluate();
+
+ _mongod.stop();
+ _mongodExe.stop();
+ }
+
+ private boolean hostIsIPv6(InetAddress addr)
+ throws UnknownHostException {
+ byte[] ipAddr = addr.getAddress();
+ if (ipAddr.length > 4) {
+ return true;
+ }
+ return false;
+ }
+
+ };
+ }
+
+}
diff --git a/restx-jongo/src/main/java/restx/mongo/MongoModule.java b/restx-jongo/src/main/java/restx/mongo/MongoModule.java
index 2d0204efe..b99f87b75 100644
--- a/restx-jongo/src/main/java/restx/mongo/MongoModule.java
+++ b/restx-jongo/src/main/java/restx/mongo/MongoModule.java
@@ -26,6 +26,7 @@
public class MongoModule {
public static final String MONGO_CLIENT_NAME = "mongoClient";
public static final String MONGO_DB_NAME = "mongo.db";
+ public static final String MONGO_URI = "mongo.uri";
@Provides @Named(MONGO_CLIENT_NAME)
public MongoClient mongoClient(MongoSettings settings) {
diff --git a/restx-jongo/src/main/java/restx/mongo/MongoSettings.java b/restx-jongo/src/main/java/restx/mongo/MongoSettings.java
index c6f4529ac..3e1f6e2ce 100644
--- a/restx-jongo/src/main/java/restx/mongo/MongoSettings.java
+++ b/restx-jongo/src/main/java/restx/mongo/MongoSettings.java
@@ -12,7 +12,7 @@ public interface MongoSettings {
@SettingsKey(key = MongoModule.MONGO_DB_NAME, doc = "the name of the mongo database to use")
String dbName();
- @SettingsKey(key = "mongo.uri", defaultValue = "mongodb://localhost:27017",
+ @SettingsKey(key = MongoModule.MONGO_URI, defaultValue = "mongodb://localhost:27017",
doc = "the mongo URI to use to connect to mongodb. " +
"See http://api.mongodb.org/java/current/com/mongodb/MongoClientURI.html")
String uri();