REST Assured with Kotlin

REST Assured is an easy to use library for the JVM that allows you to test REST/HTTP based services. It has good support for Java, Groovy and Scala and in this blog post I want to share some small tips to make the Kotlin integration even smoother.

Kotlin is a pretty interesting language developed by JetBrains that will look familiar if you’re used Java, Groovy and Scala. Let’s pretend that we want to test the following resource written in Sinatra:

require 'json'
require 'sinatra'

get '/greeting' do
  content_type :json
  firstName = params['firstName']
  lastName = params['lastName']
  { :greeting => 
       { :firstName => firstName, 
         :lastName => lastName }}.to_json
end

If we invoke this service with for example curl:

curl "http://localhost:8080?firstName=Johan&lastName=Haleby"

it’ll return the following JSON:

{  
   "greeting":{  
      "firstName":"Johan",
      "lastName":"Haleby"
   }
}

Writing a simple test case for this service in Kotlin is straight forward:

package se.haleby.kotlin

import com.jayway.restassured.RestAssured.given
import org.hamcrest.Matchers.equalTo
import org.junit.Test

class RestAssuredKotlingExampleTest {

	Test fun kotlin_rest_assured_example() {
	    given().
	            param("firstName", "Johan").
	            param("lastName", "Haleby").
	    `when`().
	            get("/greeting").
	    then().
	            statusCode(200).
	            body("greeting.firstName", equalTo("Johan")).
	            body("greeting.lastName", equalTo("Haleby"))
	}
}

However you may notice that we have to escape the when function because when is a reserved keyword in Kotlin. So what we’re going to do is to add an extension function called When that we can use as an alias to avoid manual escaping. We can do this by for example defining a trait like this:

package se.haleby.kotlin

import com.jayway.restassured.specification.RequestSpecification

trait RestAssuredSupport {
    fun RequestSpecification.When(): RequestSpecification {
        return this.`when`()
    }
}

Now that we’ve added the alias we import the trait and use it like this:

package se.haleby.kotlin

import com.jayway.restassured.RestAssured.given
import org.hamcrest.Matchers.equalTo
import se.haleby.kotlin.RestAssuredSupport
import org.junit.Test

class RestAssuredKotlingExampleTest : RestAssuredSupport {

	Test fun kotlin_rest_assured_example() {
	    given().
	            param("firstName", "Johan").
	            param("lastName", "Haleby").
	    When().
	            get("/greeting").
	    then().
	            statusCode(200).
	            body("greeting.firstName", equalTo("Johan")).
	            body("greeting.lastName", equalTo("Haleby"))
	}
}

Voila! Now we don’t need to escape when anymore and the code looks nicer. Thanks to Jasper Blues for bringing this to attention.

9 thoughts on “REST Assured with Kotlin

  1. На этом сайте можно найти информацией о сериале “Однажды в сказке”, развитии событий и главных персонажах. https://odnazhdy-v-skazke-online.ru/ Здесь представлены подробные материалы о создании шоу, актерах и фактах из-за кулис.

  2. This extensive resource serves as an comprehensive guide to the realm of modern video surveillance, offering valuable information for both professional CCTV installers and security-conscious companies seeking to strengthen their protection systems.
    Video Surveillance Utilities
    The site delivers a thorough analysis of online video surveillance systems, examining their benefits, drawbacks, and effective applications.

  3. Здесь размещены последние новости России и мира .
    Вы найдете важные новостные материалы на различные темы.
    https://ecopies.rftimes.ru/
    Следите за главных событий ежедневно .
    Проверенная информация и оперативность в каждом материале .

  4. On this website, you will find information about 1Win casino in Nigeria.
    It includes various aspects, including the popular online game Aviator.
    1win bonus
    You can also explore betting options.
    Take advantage of an exciting gaming experience!

  5. На этом сайте у вас есть возможность приобрести онлайн мобильные номера различных операторов. Эти номера могут использоваться для регистрации аккаунтов в разных сервисах и приложениях.
    В ассортименте представлены как постоянные, так и временные номера, что можно использовать чтобы принять сообщений. Это удобное решение для тех, кто не хочет использовать основной номер в интернете.
    виртуальный номер
    Процесс покупки очень удобный: выбираете подходящий номер, вносите оплату, и он сразу будет готов к использованию. Попробуйте услугу прямо сейчас!

  6. Центр ментального здоровья — это пространство, где любой может найти поддержку и профессиональную консультацию.
    Специалисты помогают различными проблемами, включая повышенную тревожность, усталость и депрессивные состояния.
    https://dominickhicxv.frewwebs.com/33513626/marketing-no-further-a-mystery
    В центре используются эффективные методы терапии, направленные на улучшение эмоционального баланса.
    Здесь создана комфортная атмосфера для доверительного диалога. Цель центра — помочь каждого обратившегося на пути к душевному равновесию.

  7. На этом сайте вы можете заказать подписчиков и реакции для Telegram. Здесь доступны активные аккаунты, которые помогут развитию вашего канала. Оперативная накрутка и гарантированный результат обеспечат успешное продвижение. Тарифы доступные, а оформление заказа прост. Запустите продвижение уже сейчас и нарастите активность в своем Telegram!
    Накрутить подписчиков в Телеграмм канал бесплатно ботов

Leave a Reply

Your email address will not be published. Required fields are marked *