Unverified Commit 113597e5 authored by Dan Jones's avatar Dan Jones
Browse files

docs: add running pytest to the readme

parent 5d6f2899
......@@ -23,6 +23,17 @@ which queues it reads from.
Subsequent requests to the client endpoint return the client_id but not the secret.
### Testing
Current coverage:
- API: yes
- Pika RabbitMQ implementation: no
```
pytest
```
### Running via docker-compose
Using `docker-compose` will mean that everything is setup automatically, this includes the `rabbitmq` container, the backbone API, and the backbone bus. The `run-compose.sh` script has been provided to simplify this even further - all you have to do is set whatever env vars you need in the `.env` file and then run `./run-compose.sh` (the defaults in `.env` are fine for local dev work, but ones not labelled `optional` will need setting in a production setting). The env vars are:
......@@ -35,8 +46,10 @@ Using `docker-compose` will mean that everything is setup automatically, this in
#### Setup
In a virtual environment
```
pipenv install
pip install -r requirements-dev.txt
```
#### RabbitMQ
......@@ -46,29 +59,38 @@ pipenv install
#### API
```
pipenv run python api.py
python api.py
```
#### Create some clients
`POST` to `http://localhost:3000/clients`
#### Event bus
```
pipenv run python soar_bus.py
python soar_bus.py
```
### Usage
To use the backbone you have to create a client.
The client id and name should be unique but human
readable. A client secret is returned by the API
and client credential grants using this client_id
and secret are used to authenticate client
application connections.
#### Create some clients
`POST` to `http://localhost:3000/clients`
#### Send / Receive directly
```
# Send a message
pipenv run python client_send.py noc-c2-outbox 'soar.noc.slocum.something' from noc-c2
python client_send.py noc-c2-outbox 'soar.noc.slocum.something' from noc-c2
```
```
# Receive messages
pipenv run python client_read.py noc-sfmc-inbox
python client_read.py noc-sfmc-inbox
```
#### Receive via API
......@@ -80,14 +102,3 @@ secret matches before allowing the request.
This should be replaced with a proper auth layer.
`GET http://localhost:5000/receive?client_id=[client_id]&secret=[secret]`
### Components
- `soar_bus.py` - Run all the components threaded based on existing clients
- `soar_forward.py` - Listen for messages on queue A and forward messages to queue B
- `soar_publish.py` - Listen for messages on queue A and publish on exchange B
- `soar_broadcast.py` - Listen for messages on queue A and broadcast on exchange B
- `soar_subscribe.py` - Create subscriptions to both the publish and broadcast exchange - deliver to queue A
(I think this should probably be 2 separate functions to keep things nice and simple)
- `soar_push.py` - Not yet implemented - Listen for messages on queue A and POST to the client's webhook URL
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment