Skip to content

Roadmap

Kyle Pullicino edited this page Jun 7, 2016 · 3 revisions

This roadmap serves as a guideline for people developing features on Bastion.

Version 1.0

First version of Bastion containing the following features:

  • Definition of core library data objects and interfaces:
    • A Request interface for defining Bastion request objects. Clients will implement the interface to define the different requests they need for their tests.
    • A Bastion runner class which allows clients to execute requests and perform assertions on the response. The runner will emit JUnit events so that test GUIs will list the execution and status of APIs.
  • Implement global request attributes. A global request attribute applies to all HTTP requests that Bastion performs. For example, we can set an HTTP header which will be applied to all Bastion requests regardless of each request's individually defined HTTP headers.
  • Implementation of a JUnit runner which will be able to run Bastion tests. This allows tools (ie. IDEs, build servers, reporting) which can run JUnit tests to also run Bastion tests and interpret its results. See the note above about the Bastion class.
  • Defining a user-friendly convention for creating Bastion tests. There are multiple ways of defining this convention and we should investigate the following:
    • Builder-based: Use a fluent build to create Bastion tests.
    • Annotation-based: Use annotations to decleratively specify Bastion tests.
    • Interface-based: Provide a Bastion test Java interface which users must implement for each of their bastion tests.
    • DSL: Provide a small domain-specific language suitable for creating Bastion tests.
  • Support different types of HTTP APIs. To begin with Bastion will support the following HTTP request content-types, each with possibly different fluent builders:
    • application/json
    • application/x-www-form-urlencoded
    • multipart/form-data
  • Implement a test suite for Bastion and all its features.
  • Implement so-called boundary tests for Bastion. These will ensure that future versions of Bastions are backwards-compatible.
  • Prepare documentation and usage notes for Bastion. This includes JavaDocs explaining the internal workings of Bastion and code examples for people wanting to use Bastion for their APIs.

Version 1.1

In this version of Bastion, we support additional types of HTTP APIs.

  • Support more types of HTTP APIs:
    • application/soap+xml
  • Add support for importing/running external tests as if they were Bastion tests:
    • Postman tests
    • RAML files
  • Add better support for file attachments (binary data) with requests of type multipart/form-data.
Clone this wiki locally