Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ygalblum/slack-server-mock
Mock Slack HTTP and WebSocker server for sub-system testing purposes
https://github.com/ygalblum/slack-server-mock
mock-server slack testing-tool
Last synced: about 1 month ago
JSON representation
Mock Slack HTTP and WebSocker server for sub-system testing purposes
- Host: GitHub
- URL: https://github.com/ygalblum/slack-server-mock
- Owner: ygalblum
- License: apache-2.0
- Created: 2024-07-02T20:11:03.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-07-11T20:09:01.000Z (7 months ago)
- Last Synced: 2024-10-25T02:38:35.941Z (3 months ago)
- Topics: mock-server, slack, testing-tool
- Language: Python
- Homepage:
- Size: 59.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Slack Server Mock
Slack server mock is intended to be used for sub-system testing of Slack applications.## Running the Server
### Required files
#### settings.yaml
Create a settings.yaml file based on the [sample file](./settings.yaml).#### Channels file
If you wish to return a list of channels, create a JSON file with an array of channel objects.
At minimum, each entry must have a name and an ID.In the `settings.yaml` file, set `slack_server.channels_path` to the location of the file.
### Using Poetry
#### Prerequisites
Install [poetry](https://python-poetry.org/docs/)#### Installation
- Download the code and change to the downloaded directory:
```bash
git clone https://github.com/ygalblum/slack-server-mock.git
cd slack-server-mock
```
- Install all the requirements using poetry:
```bash
poetry install --no-root
```
- Run the application:
```bash
poetry run python -m slack_server_mock
```### Using a Podman/Docker
The server is published in a container image on [quay](https://quay.io/repository/yblum/slack_server_mock).
#### Running the latest version
```bash
podman run --rm -it -d --name slack_server_mock --publish 3001:3001 --publish 8080:8080 --publish 8888:8888 --volume ${PWD}/settings.yaml:/app/settings.yaml:z quay.io/yblum/slack_server_mock:latest
```#### Channels file
If you are using a channels file, make sure to mount it into the container as well.## Configure your Slack application
In order to make your Slack application connect with the mock server you need to override its `base_url`.### Socket mode
Instead of:
```python
handler = SocketModeHandler(
App(token=BOT_TOKEN),
APP_TOKEN
)
```Use:
```python
handler = SocketModeHandler(
app=App(
client=WebClient(
token=BOT_TOKEN,
base_url="http://localhost:8888"
)
),
app_token=settings.slackbot.app_token
)
```## Interacting with the application
The mock server provides an endpoint to send a message to the application,
wait for the application response and return the accumulated ephemeral messages (if sent) and the response.### Message payload
The request payload is a JSON with the key `message` whose value is a string### Response payload
The response payload is a JSON with two keys:- `ephemeral`: List of strings. All accumulated ephemeral message
- `response`: string. The application's response### Example
Send a message using `curl` and see the response:
```bash
$ curl http://localhost:8080/message -d'{"message": "hello"}'
{"answer": "Hello to you too", "ephemeral": ["I'll be right with you"]}
```