TestServer

zio.http.TestServer
See theTestServer companion object
final case class TestServer(driver: Driver, bindPort: Int) extends Server

Enables tests that make calls against "localhost" with user-specified Behavior/Responses.

Value parameters

bindPort

Port for HTTP interactions

driver

The web driver that accepts our Server behavior

Attributes

Companion
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Server
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def addRequestResponse(expectedRequest: Request, response: Response): ZIO[Any, Nothing, Unit]

Define 1-1 mappings between incoming Requests and outgoing Responses

Define 1-1 mappings between incoming Requests and outgoing Responses

Value parameters

expectedRequest

Request that will trigger the provided Response

response

Response that the Server will send

Attributes

Example
 TestServer.addRequestResponse(Request.get(url = URL.root.port(port = ???)), Response(Status.Ok))
def addRoute[R](route: Route[R, Response]): ZIO[R, Nothing, Unit]

Adds a new route to the Server

Adds a new route to the Server

Value parameters

route

New route

Attributes

Example
TestServer.addRoute {
 Method.ANY / trailing -> handler { (_: Path, _: Request) =>
   for {
     curState <- state.getAndUpdate(_ + 1)
   } yield {
     if (curState > 0)
       Response(Status.InternalServerError)
     else
       Response(Status.Ok)
   }
 }
}
def addRoutes[R](routes: Routes[R, Response]): ZIO[R, Nothing, Unit]

Add new routes to the Server

Add new routes to the Server

Attributes

Example
 TestServer.addRoutes {
   Routes(
     Method.ANY / trailing -> handler { (_: Path, _: Request) => Response.text("Fallback handler") },
     Method.GET / "hello" / "world" -> handler { (_: Path, _: Request) => Response.text("Hello world!") },
   )
 }
override def install[R](httpApp: HttpApp[R])(implicit trace: Trace): URIO[R, Unit]

Installs the given HTTP application into the server.

Installs the given HTTP application into the server.

Attributes

Definition Classes
override def port: Int

The port on which the server is listening.

The port on which the server is listening.

Attributes

Definition Classes

Inherited methods

def productElementNames: Iterator[String]

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

Attributes

Inherited from:
Product