Skip to content

Commit

Permalink
Merge pull request leanovate#39 from leanovate/issue_38
Browse files Browse the repository at this point in the history
add test for issue 38
  • Loading branch information
yanns authored Jun 20, 2018
2 parents 32a5a64 + 8098525 commit 24a5e80
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion src/test/scala/mockws/StreamingTest.scala
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package mockws

import akka.NotUsed
import akka.stream.scaladsl.Source
import akka.util.ByteString
import mockws.MockWSHelpers._
import org.scalatest.prop.PropertyChecks
import org.scalatest.{FunSuite, Matchers}
import play.api.http.HttpEntity
import play.api.libs.ws.WSClient
import play.api.mvc.MultipartFormData.DataPart
import play.api.mvc.MultipartFormData.{DataPart, FilePart, Part}
import play.api.mvc.{ResponseHeader, Result}
import play.api.mvc.Results._
import play.api.test.FakeRequest
import play.api.test.Helpers._

Expand Down Expand Up @@ -46,6 +48,28 @@ class StreamingTest extends FunSuite with Matchers with PropertyChecks {
ws.close()
}

test("mock WS supports streaming of MultipartFormData") {
val ws = MockWS {
case (PUT, "/") =>
Action { request
request.body.asMultipartFormData match {
case None InternalServerError("error")
case Some(data) Ok(data.dataParts.mkString(", "))
}
}
}

val fileData: Source[Part[Source[ByteString, _]], NotUsed] = Source(
FilePart("file", "", Some(BINARY), Source.single(ByteString("test"))) ::
DataPart("key 1", "data 1") ::
DataPart("key 2", "data 2") ::
Nil)

val response = await(ws.url("/").put(fileData))
response.body shouldEqual "key 2 -> Vector(data 2), key 1 -> Vector(data 1)"
ws.close()
}

test("mock WS supports method in stream") {
def testedController(ws: WSClient) = Action.async {
ws.url("/").withMethod("POST").stream().map { resp =>
Expand Down

0 comments on commit 24a5e80

Please sign in to comment.