You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
2.4 KiB

package controllers
import com.alexitc.playsonify.core.FutureApplicationResult
import com.xsn.explorer.helpers.DummyXSNService
import com.xsn.explorer.models.{Address, TransactionId}
import com.xsn.explorer.models.rpc.Masternode
import com.xsn.explorer.services.XSNService
import controllers.common.MyAPISpec
import org.scalactic.{Good, One, Or}
import play.api.inject.bind
import play.api.libs.json.JsValue
import play.api.test.Helpers._
import scala.concurrent.Future
class MasternodesControllerSpec extends MyAPISpec {
val masternodes = List(
Masternode(
txid = TransactionId.from("c3efb8b60bda863a3a963d340901dc2b870e6ea51a34276a8f306d47ffb94f01").get,
ip = "45.77.136.212:62583",
protocol = "70208",
status = "WATCHDOG_EXPIRED",
activeSeconds = 513323,
lastSeen = 1524349009,
payee = Address.from("XqdmM7rop8Sdgn8UjyNh3Povc3rhNSXYw2").get),
Masternode(
txid = TransactionId.from("b02f99d87194c9400ab147c070bf621770684906dedfbbe9ba5f3a35c26b8d01").get,
ip = "45.32.148.13:62583",
protocol = "70208",
status = "ENABLED",
activeSeconds = 777344,
lastSeen = 1524349028,
payee = Address.from("XdNDRAiMUC9KiVRzhCTg9w44jQRdCpCRe3").get)
)
val xsnService = new DummyXSNService {
override def getMasternodes(): FutureApplicationResult[List[Masternode]] = {
Future.successful(Good(masternodes))
}
}
override val application = guiceApplicationBuilder
.overrides(bind[XSNService].to(xsnService))
.build
"GET /masternodes" should {
"return the masternodes" in {
val expected = masternodes.head
val response = GET("/masternodes?offset=1&limit=10&orderByactiveSeconds:desc")
status(response) mustEqual OK
val json = contentAsJson(response)
(json \ "total").as[Int] mustEqual 2
val jsonList = (json \ "data").as[List[JsValue]]
jsonList.size mustEqual 1
val item = jsonList.head
(item \ "txid").as[String] mustEqual expected.txid.string
(item \ "payee").as[String] mustEqual expected.payee.string
(item \ "ip").as[String] mustEqual expected.ip
(item \ "protocol").as[String] mustEqual expected.protocol
(item \ "lastSeen").as[Long] mustEqual expected.lastSeen
(item \ "activeSeconds").as[Long] mustEqual expected.activeSeconds
(item \ "status").as[String] mustEqual expected.status
}
}
}