All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zalando.test.kit.service.MockServerTestService.scala Maven / Gradle / Ivy

There is a newer version: 5.1.1
Show newest version
package org.zalando.test.kit.service

import com.typesafe.scalalogging.StrictLogging
import org.mockserver.client.server.MockServerClient
import org.mockserver.integration.ClientAndServer
import org.scalatest.concurrent.AsyncAssertions

class MockServerTestService(override val name: String, val host: String = "localhost", val port: Int = 0)
  extends TestService with AsyncAssertions with StrictLogging with ExpectationVerification {

  protected var maybeMockServer: Option[ClientAndServer] = None

  def url: Option[String] = maybeMockServer.map(cas ⇒ s"http://$host:${cas.getPort}")

  protected def mockServer: MockServerClient = {
    if (maybeMockServer.isDefined)
      maybeMockServer.get
    else
      throw new IllegalStateException(s"MockServer ($name) is not initialized")
  }

  def start(): Unit = {
    logger.info("Starting {}", name)
    maybeMockServer = Some(ClientAndServer.startClientAndServer(port))
    logger.info("{} started", name)
  }

  def stop(): Unit = {
    maybeMockServer.foreach { mockServer =>
      logger.info("Stopping {}", name)
      mockServer.stop()
      logger.info("{} stopped", name)
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy