Awesome
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:
- Simple Testing REST services or starting mock/stub servers is very simple and requires very few lines of code.
- Fast Leveraging Akka-Http infrastructure, starting servers takes milliseconds.
- Integrated: Other than providing a set of DSLs to support composing and executing REST HTTP calls and creating and configuring web servers, it also contains out of the box matcher libraries for Specs<sup>2</sup> to easily validate each aspect of the tested flow.
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.25' 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.25"
Maven
<dependencies>
<dependency>
<groupId>com.wix</groupId>
<artifactId>http-testkit_${scala.dependencies.version}</artifactId>
<version>0.1.25</version>
</dependency>
</dependencies>
Documentation
- Rest Client: a declarative REST client Documentation.
- Simplicator Web Servers: Easily configurable web servers Documentation.
- Specs<sup>2</sup> Matchers Suite: Comprehensive matcher suites Response Matchers and Request Matchers.
Contribute
Ideas and feature requests welcome! Report an issue or contact the maintainer directly.
License
This project is licensed under MIT License.