TestServer

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

Companion:
object
trait Serializable
trait Product
trait Equals
trait Server
class Object
trait Matchable
class Any

Value members

Concrete methods

def addHandler[R](pf: PartialFunction[Request, ZIO[R, Throwable, Response]]): ZIO[R, Nothing, Unit]

Add new behavior to Server

Add new behavior to Server

Value parameters:
pf

New behavior

Example:
for {
  state <- Ref.make(0)
  testRequest <- requestToCorrectPort
  _           <- TestServer.addHandler{ case (_: Request) =>
    for {
      curState <- state.getAndUpdate(_ + 1)
    } yield {
      if (curState > 0)
        Response(Status.InternalServerError)
      else
        Response(Status.Ok)
    }
  }
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

Example:
 TestServer.addRequestResponse(Request.get(url = URL.root.setPort(port = ???)), Response(Status.Ok))
override def install[R](httpApp: HttpApp[R, Throwable], errorCallback: Option[ErrorCallback])(implicit trace: Trace): URIO[R, Unit]
Definition Classes
Server
override def port: Int
Definition Classes
Server

Inherited methods

Inherited from:
Product