###################################
rejocker is a REst Json mOCK servER
###################################


rejocker is a simple configurable mock server. It is mainly dedicated to the testing of REST clients.

* Support configuration of headers and bodies in requests and responses
* Accept and respond with JSON and plain text
* Support GET,POST,PUT,PATCH and DELETE methods for HTTP requests
* Return HTTP status codes


Requirements
============

rejocker is written in `Python 3 <https://www.python.org/>`_ using the `Flask 1.1.x <https://flask.palletsprojects.com/>`_ framework, 
and is provided as a Python package

To install the package dependencies, you can run the following command from the root directory of the source code

.. code-block:: shell

  pip3 install -r requirements.txt


Usage
=====

Configuration
-------------

rejocker is configured through a json formatted file defining endpoints. 
Each endpoint is defined with 

* a path (and an optional path prefix)
* accepted HTTP methods 
* expected and returned headers and bodies for each method

Th location of the configuration file is given to rejocker through the ``REJOCKER_DATA_SOURCE`` environment variable.
(E.g. ``REJOCKER_DATA_SOURCE=/path/to/config.json``)

An example of a configuration file is provided with the rejocker package in the ``data`` directory. 
If the ``REJOCKER_DATA_SOURCE`` environment variable is not set, the example file is used by default.


Running the server locally
--------------------------

The server can be run locally for development or testing purposes.

First, the rejocker package have to be installed locally with editable option (this should be done only once):
 
.. code-block:: shell
 
  pip3 install -e .


To run the server:

.. code-block:: shell

  FLASK_APP=rejocker flask run

To run the server in development mode and automatic reload of source code:

.. code-block:: shell
  
  FLASK_ENV=development FLASK_APP=rejocker flask run --reload


You can visit the `Flask Quickstart <https://flask.palletsprojects.com/en/1.1.x/quickstart/>`_ for details.


Running the server in production
--------------------------------

In production, the server must be run according to the `Flask recommendations for deployment <https://flask.palletsprojects.com/en/1.1.x/deploying/>`_.
