aboutsummaryrefslogtreecommitdiff
path: root/akka-http-backend/src/test/scala/com/softwaremill/sttp/akkahttp/AkkaHttpStreamingTests.scala
diff options
context:
space:
mode:
Diffstat (limited to 'akka-http-backend/src/test/scala/com/softwaremill/sttp/akkahttp/AkkaHttpStreamingTests.scala')
-rw-r--r--akka-http-backend/src/test/scala/com/softwaremill/sttp/akkahttp/AkkaHttpStreamingTests.scala40
1 files changed, 40 insertions, 0 deletions
diff --git a/akka-http-backend/src/test/scala/com/softwaremill/sttp/akkahttp/AkkaHttpStreamingTests.scala b/akka-http-backend/src/test/scala/com/softwaremill/sttp/akkahttp/AkkaHttpStreamingTests.scala
new file mode 100644
index 0000000..e8ab9d7
--- /dev/null
+++ b/akka-http-backend/src/test/scala/com/softwaremill/sttp/akkahttp/AkkaHttpStreamingTests.scala
@@ -0,0 +1,40 @@
+package com.softwaremill.sttp.akkahttp
+
+import akka.NotUsed
+import akka.actor.ActorSystem
+import akka.stream.{ActorMaterializer, Materializer}
+import akka.stream.scaladsl.Source
+import akka.util.ByteString
+import com.softwaremill.sttp.SttpBackend
+import com.softwaremill.sttp.testing.ConvertToFuture
+import com.softwaremill.sttp.testing.streaming.{StreamingTest, TestStreamingBackend}
+
+import scala.concurrent.Future
+
+class AkkaHttpStreamingTest extends StreamingTest[Future, Source[ByteString, Any]] {
+
+ private implicit val actorSystem: ActorSystem = ActorSystem("sttp-test")
+ private implicit val materializer: ActorMaterializer = ActorMaterializer()
+
+ override val testStreamingBackend: TestStreamingBackend[Future, Source[ByteString, Any]] =
+ new AkkaHttpTestStreamingBackend(actorSystem)
+}
+
+class AkkaHttpTestStreamingBackend(
+ actorSystem: ActorSystem
+)(implicit materializer: Materializer)
+ extends TestStreamingBackend[Future, Source[ByteString, Any]] {
+
+ override implicit val backend: SttpBackend[Future, Source[ByteString, Any]] =
+ AkkaHttpBackend.usingActorSystem(actorSystem)
+
+ override implicit val convertToFuture: ConvertToFuture[Future] =
+ ConvertToFuture.future
+
+ override def bodyProducer(body: String): Source[ByteString, NotUsed] =
+ Source.single(ByteString(body))
+
+ override def bodyConsumer(stream: Source[ByteString, Any]): Future[String] =
+ stream.map(_.utf8String).runReduce(_ + _)
+
+}