Build Status

HTTP Testkit

Overview

Wix Http Testkit is a library that will address many of the End-to-end testing concerns you might encounter.

Wix HTTP Testkit aims to be:

Getting Started

Testing Client

Import DSL

import com.wix.e2e.http.client.sync._

Issue Call

    val somePort = 99123 /// any port
    implicit val baseUri = BaseUri(port = somePort)

    get("/somePath", 
        but = withParam("param1" -> "value") 
          and header("header" -> "value") 
          and withCookie("cookie" -> "cookieValue"))

Use Specs2 Matcher suite to match response

    import com.wix.e2e.http.matchers.ResponseMatchers._

    put("/anotherPath") must haveBodyWith("someBody")

For more info see Http Client Documentation and Response Matchers Suite.

Web Servers

Import Factory

    import com.wix.e2e.http.server.WebServerFactory._

Run an easily programmable web server

    val handler: RequestHandler = { case r: HttpRequest => HttpResponse()  }
    val server = aMockWebServerWith(handler).build
                                            .start()

Or run a programmable that will record all incoming messages

    val server = aStubWebServer.build
                               .start()

Match against recorded requests


  import com.wix.e2e.http.matchers.RequestMatchers._

  server must receivedAnyRequestThat(must = beGet)

For more info see Web Server Documentation and Request Matchers Suite.

Usage

HTTP-testkit version '0.1.23' is available on Maven Central Repository. Scala versions 2.11.x, 2.12.x and 2.13.x are supported.

SBT

Simply add the wix-http-testkit module to your build settings:

libraryDependencies += "com.wix" %% "http-testkit" % "0.1.23"

Maven

<dependencies>
  <dependency>
    <groupId>com.wix</groupId>
    <artifactId>http-testkit_${scala.dependencies.version}</artifactId>
    <version>0.1.23</version>
  </dependency>
</dependencies>

Documentation

Contribute

Ideas and feature requests welcome! Report an issue or contact the maintainer directly.

License

This project is licensed under MIT License.