diff options
author | Adam Warski <adam@warski.org> | 2018-05-21 14:28:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-21 14:28:29 +0200 |
commit | b7de29680d64c8465ba9b612cb9d903cbbc12291 (patch) | |
tree | 0d7a6b1c653393de8422e9704b9e68bb5cf7ed91 /core/src/test/scala/com/softwaremill/sttp/testing/streaming | |
parent | 588395d018c258eb74f60ad95bad706698bdf915 (diff) | |
parent | ccb1afe90e938fc2b8619dd960a1df1937f212be (diff) | |
download | sttp-master.tar.gz sttp-master.tar.bz2 sttp-master.zip |
Move backend tests into their projects
Diffstat (limited to 'core/src/test/scala/com/softwaremill/sttp/testing/streaming')
3 files changed, 76 insertions, 41 deletions
diff --git a/core/src/test/scala/com/softwaremill/sttp/testing/streaming/ConvertToFuture.scala b/core/src/test/scala/com/softwaremill/sttp/testing/streaming/ConvertToFuture.scala deleted file mode 100644 index 9438890..0000000 --- a/core/src/test/scala/com/softwaremill/sttp/testing/streaming/ConvertToFuture.scala +++ /dev/null @@ -1,26 +0,0 @@ -package com.softwaremill.sttp.testing.streaming - -import com.softwaremill.sttp.Id -import scala.concurrent.Future -import scala.language.higherKinds -import scala.util.Try - -trait ConvertToFuture[R[_]] { - def toFuture[T](value: R[T]): Future[T] -} - -object ConvertToFuture { - - val id: ConvertToFuture[Id] = new ConvertToFuture[Id] { - override def toFuture[T](value: Id[T]): Future[T] = - Future.successful(value) - } - - val future: ConvertToFuture[Future] = new ConvertToFuture[Future] { - override def toFuture[T](value: Future[T]): Future[T] = value - } - - val scalaTry: ConvertToFuture[Try] = new ConvertToFuture[Try] { - override def toFuture[T](value: Try[T]): Future[T] = Future.fromTry(value) - } -} diff --git a/core/src/test/scala/com/softwaremill/sttp/testing/streaming/StreamingTest.scala b/core/src/test/scala/com/softwaremill/sttp/testing/streaming/StreamingTest.scala new file mode 100644 index 0000000..40aaf82 --- /dev/null +++ b/core/src/test/scala/com/softwaremill/sttp/testing/streaming/StreamingTest.scala @@ -0,0 +1,76 @@ +package com.softwaremill.sttp.testing.streaming + +import com.softwaremill.sttp._ +import com.softwaremill.sttp.testing.ForceWrapped +import org.scalatest.{AsyncFreeSpec, BeforeAndAfterAll, Matchers} +import scala.language.higherKinds + +import com.softwaremill.sttp.testing.ConvertToFuture +import com.softwaremill.sttp.testing.TestHttpServer + +trait StreamingTest[R[_], S] + extends AsyncFreeSpec + with Matchers + with ForceWrapped + with BeforeAndAfterAll + with TestHttpServer { + + private val body = "streaming test" + + implicit def backend: SttpBackend[R, S] + + implicit def convertToFuture: ConvertToFuture[R] + + def bodyProducer(body: String): S + + def bodyConsumer(stream: S): R[String] + + "stream request body" in { + sttp + .post(uri"$endpoint/streaming/echo") + .streamBody(bodyProducer(body)) + .send() + .toFuture() + .map { response => + response.unsafeBody shouldBe body + } + } + + "receive a stream" in { + sttp + .post(uri"$endpoint/streaming/echo") + .body(body) + .response(asStream[S]) + .send() + .toFuture() + .flatMap { response => + bodyConsumer(response.unsafeBody).toFuture() + } + .map { responseBody => + responseBody shouldBe body + } + } + + "receive a stream from an https site" in { + sttp + // of course, you should never rely on the internet being available + // in tests, but that's so much easier than setting up an https + // testing server + .get(uri"https://softwaremill.com") + .response(asStream[S]) + .send() + .toFuture() + .flatMap { response => + bodyConsumer(response.unsafeBody).toFuture() + } + .map { responseBody => + responseBody should include("</div>") + } + } + + override protected def afterAll(): Unit = { + backend.close() + super.afterAll() + } + +} diff --git a/core/src/test/scala/com/softwaremill/sttp/testing/streaming/TestStreamingBackend.scala b/core/src/test/scala/com/softwaremill/sttp/testing/streaming/TestStreamingBackend.scala deleted file mode 100644 index 266c402..0000000 --- a/core/src/test/scala/com/softwaremill/sttp/testing/streaming/TestStreamingBackend.scala +++ /dev/null @@ -1,15 +0,0 @@ -package com.softwaremill.sttp.testing.streaming - -import com.softwaremill.sttp.SttpBackend - -import scala.language.higherKinds - -trait TestStreamingBackend[R[_], S] { - implicit def backend: SttpBackend[R, S] - - implicit def convertToFuture: ConvertToFuture[R] - - def bodyProducer(body: String): S - - def bodyConsumer(stream: S): R[String] -} |