gclaramunt / embedded-http-server

Simple embedded akka http server for component testing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

embedded-http-server

Simple embedded akka http server for component testing

A pretty minimal way to embed a web server for your component tests

Usage

Import the object

import com.scalents.embeddedserver.EmbeddedHttpServer._

Then, surround the code that does the call with

withEmbeddedServer(routes){
    block that does a http call
}

That's it :)

Notes

  • By default the server is named "localhost" and binds to the 8080 port, but the values can be overridden
  • The routes are defined as akka http routes.

A simple example

( See EmbeddedHttpServerSpec.scala )

Let's create an embedded server that responds with "Hello" when we do a http GET on port 8989 and validate the response

"The embedded server" should "respond with hello" in {
    withEmbeddedServer(port = 8989, routes = path("hi") { get { complete("Hello")} }){

      val result = Http().singleRequest(HttpRequest(uri = Uri("http://local:8989/hi"))).futureValue
      val HttpResponse(StatusCodes.OK, _, entity, _) = result
      val body = entity.dataBytes.runWith(Sink.seq).futureValue
      body.head.utf8String shouldBe "Hello"

    }
  }

About

Simple embedded akka http server for component testing

License:GNU General Public License v3.0


Languages

Language:Scala 100.0%