Harden replication test (#1834)

diff --git a/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala b/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala
index d4d7858..2ac2845 100644
--- a/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala
+++ b/tests/src/whisk/core/database/test/ExtendedCouchDbRestClient.scala
@@ -21,6 +21,7 @@
 import akka.http.scaladsl.model._
 
 import spray.json._
+import spray.json.DefaultJsonProtocol._
 
 import whisk.core.database.CouchDbRestClient
 
@@ -32,15 +33,23 @@
 
     // http://docs.couchdb.org/en/1.6.1/api/server/common.html#get--
     def instanceInfo(): Future[Either[StatusCode, JsObject]] =
-        requestJson(mkRequest(HttpMethods.GET, Uri./))
+        requestJson[JsObject](mkRequest(HttpMethods.GET, Uri./))
+
+    // http://docs.couchdb.org/en/1.6.1/api/server/common.html#all-dbs
+    def dbs(): Future[Either[StatusCode, List[String]]] = {
+        implicit val ec = system.dispatcher
+        requestJson[JsArray](mkRequest(HttpMethods.GET, uri("_all_dbs"))).map { either =>
+            either.right.map(_.convertTo[List[String]])
+        }
+    }
 
     // http://docs.couchdb.org/en/1.6.1/api/database/common.html#put--db
     def createDb(): Future[Either[StatusCode, JsObject]] =
-        requestJson(mkRequest(HttpMethods.PUT, uri(db)))
+        requestJson[JsObject](mkRequest(HttpMethods.PUT, uri(db)))
 
     // http://docs.couchdb.org/en/1.6.1/api/database/common.html#delete--db
     def deleteDb(): Future[Either[StatusCode, JsObject]] =
-        requestJson(mkRequest(HttpMethods.DELETE, uri(db)))
+        requestJson[JsObject](mkRequest(HttpMethods.DELETE, uri(db)))
 
     // http://docs.couchdb.org/en/1.6.1/api/database/bulk-api.html#get--db-_all_docs
     def getAllDocs(skip: Option[Int] = None, limit: Option[Int] = None, includeDocs: Option[Boolean] = None): Future[Either[StatusCode, JsObject]] = {
@@ -55,6 +64,6 @@
         }).toMap
 
         val url = uri(db, "_all_docs").withQuery(Uri.Query(argMap))
-        requestJson(mkRequest(HttpMethods.GET, url))
+        requestJson[JsObject](mkRequest(HttpMethods.GET, url))
     }
 }
diff --git a/tests/src/whisk/core/database/test/ReplicatorTests.scala b/tests/src/whisk/core/database/test/ReplicatorTests.scala
index 172fcae..d579d7c 100644
--- a/tests/src/whisk/core/database/test/ReplicatorTests.scala
+++ b/tests/src/whisk/core/database/test/ReplicatorTests.scala
@@ -74,6 +74,12 @@
         println(s"Creating database: $name")
         val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name)
         db.createDb().futureValue shouldBe 'right
+
+        retry({
+            val list = db.dbs().futureValue.right.get
+            list should contain(name)
+        }, N = 10, waitBeforeRetry = Some(500.milliseconds))
+
         db
     }
 
@@ -82,8 +88,8 @@
         println(s"Removing database: $name")
         val db = new ExtendedCouchDbRestClient(config.dbProtocol, config.dbHost, config.dbPort.toInt, config.dbUsername, config.dbPassword, name)
         retry({
-            val delete = db.deleteDb()
-            if (!ignoreFailure) delete.futureValue shouldBe 'right
+            val delete = db.deleteDb().futureValue
+            if (!ignoreFailure) delete shouldBe 'right
         }, N = 10, waitBeforeRetry = Some(500.milliseconds))
         db
     }