Time: Thursday, Jan 30, 14:00
Title: Riposte—A DSL for HTTP API black-box testing
Domain-specific languages are often made to solve a particular kind of problem in a particular time and place, with the hope is that others out there in the world have similar problems. In my case as a developer at an ecommerce shop, I was unsatisfied with the amount of testing our JSON-based HTTP APIs were getting. With the assumption that our tooling & language were to blame, I designed Riposte: an easy-to-read, fun-to-write functional language that allows one to write JSON, JSON Pointer, URI Templates in their respective surface syntaxes, and formulate HTTP requests in a straightforward way. Riposte programs are best understood as tests suites: one issues HTTP requests (possibly changing the state of a remote system) and makes assertions about values extracted from HTTP responses; the failure of an assertion causes the program to terminate. Riposte is implemented in Racket, a programming language that emphasizes language-oriented programming, making it especially useful for designing new languages. We present a little HTTP API and show how to test it in Riposte, discussing its syntax, semantics, and pragmatics along the way, along with a discussion of whether Riposte solved problem it set out to solve (answer: yes & no).
Jesse Alama is a full-stack developer at Vicampo.de. He earned his PhD at Stanford University working in interactive theorem proving & philosophy of mathematics, after which he worked as a postdoc in Lisbon and Vienna.