akka.testkit.TestActor Scala Examples
The following examples show how to use akka.testkit.TestActor.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: TopicSpec.scala From sns with Apache License 2.0 | 5 votes |
package me.snov.sns.api import java.util.concurrent.TimeUnit import akka.actor.ActorRef import akka.http.scaladsl.model.{FormData, HttpResponse, StatusCodes} import akka.http.scaladsl.testkit.ScalatestRouteTest import akka.testkit.{TestActor, TestProbe} import akka.util.Timeout import me.snov.sns.actor.SubscribeActor.{CmdDeleteTopic, CmdCreateTopic} import me.snov.sns.model.Topic import org.scalatest.{Matchers, WordSpec} class TopicSpec extends WordSpec with Matchers with ScalatestRouteTest { implicit val timeout = new Timeout(100, TimeUnit.MILLISECONDS) val probe = TestProbe() val route = TopicApi.route(probe.ref) "Requires topic name" in { Post("/", FormData(Map("Action" -> "CreateTopic"))) ~> route ~> check { status shouldBe StatusCodes.BadRequest } } "Validates topic name" in { Post("/", FormData(Map("Action" -> "CreateTopic", "Name" -> "f$$"))) ~> route ~> check { status shouldBe StatusCodes.BadRequest } } "TopicDelete validates topic name" in { Post("/", FormData(Map("Action" -> "DeleteTopic", "TopicArn" -> "f$$"))) ~> route ~> check { status shouldBe StatusCodes.BadRequest } } "Sends create command to actor" in { probe.setAutoPilot(new TestActor.AutoPilot { def run(sender: ActorRef, msg: Any) = { sender ! new Topic("foo", "bar") this } }) Post("/", FormData(Map("Action" -> "CreateTopic", "Name" -> "foo"))) ~> route ~> check { probe.expectMsg(CmdCreateTopic("foo")) } } "Sends delete command to actor" in { probe.setAutoPilot(new TestActor.AutoPilot { def run(sender: ActorRef, msg: Any) = { sender ! new Topic("foo", "bar") this } }) Post("/", FormData(Map("Action" -> "DeleteTopic", "TopicArn" -> "arn-foo"))) ~> route ~> check { probe.expectMsg(CmdDeleteTopic("arn-foo")) } } }
Example 2
Source File: PublishSpec.scala From sns with Apache License 2.0 | 5 votes |
package me.snov.sns.api import java.util.concurrent.TimeUnit import akka.actor.ActorRef import akka.http.scaladsl.model.{FormData, StatusCodes} import akka.http.scaladsl.testkit.ScalatestRouteTest import akka.testkit.{TestActor, TestProbe} import akka.util.Timeout import me.snov.sns.actor.PublishActor.CmdPublish import me.snov.sns.model.{Message, MessageAttribute} import org.scalatest.{Matchers, WordSpec} class PublishSpec extends WordSpec with Matchers with ScalatestRouteTest { implicit val timeout = new Timeout(100, TimeUnit.MILLISECONDS) val probe = TestProbe() val route = PublishApi.route(probe.ref) "Publish requires topic ARN" in { val params = Map("Action" -> "Publish") Post("/", FormData(params)) ~> route ~> check { status shouldBe StatusCodes.BadRequest } } "Sends publish command" in { val params = Map( "Action" -> "Publish", "TopicArn" -> "foo", "Message" -> "bar" ) probe.setAutoPilot(new TestActor.AutoPilot { def run(sender: ActorRef, msg: Any) = { sender ! Message(Map("default" -> "foo")) this } }) Post("/", FormData(params)) ~> route ~> check { probe.expectMsg(CmdPublish("foo", Map("default" -> "bar"), Map.empty)) } } "Sends publish command to TargetArn" in { val params = Map( "Action" -> "Publish", "TargetArn" -> "foo", "Message" -> "bar" ) probe.setAutoPilot(new TestActor.AutoPilot { def run(sender: ActorRef, msg: Any) = { sender ! Message(Map("default" -> "foo")) this } }) Post("/", FormData(params)) ~> route ~> check { probe.expectMsg(CmdPublish("foo", Map("default" -> "bar"), Map.empty)) } } "Sends publish command with attributes" in { val params = Map( "Action" -> "Publish", "TopicArn" -> "foo", "Message" -> "bar", "MessageAttributes.entry.1.Value.DataType" -> "String", "MessageAttributes.entry.1.Value.StringValue" -> "AttributeValue", "MessageAttributes.entry.1.Name" -> "AttributeName" ) probe.setAutoPilot(new TestActor.AutoPilot { def run(sender: ActorRef, msg: Any) = { sender ! Message(Map("default" -> "foo"), messageAttributes = Map("AttributeName" -> MessageAttribute("StringValue", "AttributeValue"))) this } }) Post("/", FormData(params)) ~> route ~> check { probe.expectMsg(CmdPublish("foo", Map("default" -> "bar"),Map("AttributeName" -> MessageAttribute("StringValue", "AttributeValue")))) } } }
Example 3
Source File: TestUtils.scala From eclair with Apache License 2.0 | 5 votes |
package fr.acinq.eclair import java.io.File import java.net.ServerSocket import akka.actor.ActorRef import akka.event.DiagnosticLoggingAdapter import akka.testkit import akka.testkit.{TestActor, TestProbe} import fr.acinq.eclair.channel.Channel import fr.acinq.eclair.wire.LightningMessage object TestUtils { def forwardOutgoingToPipe(peer: TestProbe, pipe: ActorRef): Unit = { peer.setAutoPilot(new testkit.TestActor.AutoPilot { override def run(sender: ActorRef, msg: Any): TestActor.AutoPilot = msg match { case Channel.OutgoingMessage(msg: LightningMessage, _: ActorRef) => pipe tell (msg, sender) TestActor.KeepRunning case _ => TestActor.KeepRunning } }) } }