From 7059b2e9b784dc0d5852b1c1d88258552a58c7b9 Mon Sep 17 00:00:00 2001 From: Tushar Mathur Date: Fri, 1 Apr 2022 15:52:37 +0400 Subject: [PATCH] Fix: update implementation of `FromAsciiString.encode` (#1175) * fix: update implementation of `FromAsciiString.encode` * Add test for toHttp FromASCIIString Co-authored-by: amitsingh --- zio-http/src/main/scala/zhttp/http/HttpData.scala | 6 ++++-- zio-http/src/test/scala/zhttp/service/ServerSpec.scala | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/zio-http/src/main/scala/zhttp/http/HttpData.scala b/zio-http/src/main/scala/zhttp/http/HttpData.scala index a22b250262..3a1c1b2bb6 100644 --- a/zio-http/src/main/scala/zhttp/http/HttpData.scala +++ b/zio-http/src/main/scala/zhttp/http/HttpData.scala @@ -174,11 +174,13 @@ object HttpData { private[zhttp] case class FromAsciiString(asciiString: AsciiString) extends Complete { + private def encode: ByteBuf = Unpooled.wrappedBuffer(asciiString.array()) + /** * Encodes the HttpData into a ByteBuf. Takes in ByteBufConfig to have a * more fine grained control over the encoding. */ - override def toByteBuf(config: ByteBufConfig): Task[ByteBuf] = Task(Unpooled.wrappedBuffer(asciiString.array())) + override def toByteBuf(config: ByteBufConfig): Task[ByteBuf] = Task(encode) /** * Encodes the HttpData into a Stream of ByteBufs. Takes in ByteBufConfig to @@ -192,7 +194,7 @@ object HttpData { * in certain cases. Takes in ByteBufConfig to have a more fine grained * control over the encoding. */ - override def toHttp(config: ByteBufConfig): Http[Any, Throwable, Any, ByteBuf] = ??? + override def toHttp(config: ByteBufConfig): Http[Any, Throwable, Any, ByteBuf] = Http.attempt(encode) } private[zhttp] final case class BinaryChunk(data: Chunk[Byte]) extends Complete { diff --git a/zio-http/src/test/scala/zhttp/service/ServerSpec.scala b/zio-http/src/test/scala/zhttp/service/ServerSpec.scala index f838d26730..dfbb1a0862 100644 --- a/zio-http/src/test/scala/zhttp/service/ServerSpec.scala +++ b/zio-http/src/test/scala/zhttp/service/ServerSpec.scala @@ -1,5 +1,6 @@ package zhttp.service +import io.netty.util.AsciiString import zhttp.html._ import zhttp.http._ import zhttp.internal.{DynamicServer, HttpGen, HttpRunnableSpec} @@ -267,7 +268,13 @@ object ServerSpec extends HttpRunnableSpec { equalTo(c), ) } - } + } + + testM("FromASCIIString: toHttp") { + checkAllM(Gen.anyASCIIString) { payload => + val res = HttpData.fromAsciiString(AsciiString.cached(payload)).toHttp.map(_.toString(HTTP_CHARSET)) + assertM(res.run())(equalTo(payload)) + } + } } def serverErrorSpec = suite("ServerErrorSpec") {