Skip to content

A dockerized service that fakes a few slack API endpoints in a minimal, spartan way

License

Notifications You must be signed in to change notification settings

instructure/docker-fake-slack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fake Slack

A minimal docker image to fake the Slack API. Currently only concerned with the very minimum required to test Canvas LMS locally.

Getting started

$ docker run -it -p 9393:9393 -e VIRTUAL_HOST=slack.docker ahuff44/fake-slack

Note that the VIRTUAL_HOST environment variable will let you access the service at the host slack.docker, if you are using dinghy as part of your docker setup.

The server will log all requests it recieves to disk. The files will be placed at /messages/slack/{{route}}_{{ts}}; e.g. /messages/slack/chat.postMessage_1563577444.405595

To use with docker-compose, here is a basic service block to start from:

  slack:
    image: ahuff44/fake-slack
    volumes:
      - "/messages/slack"
    ports:
      - "9393"

API

The api is as simple as possible and returns dummy data. Some endpoints (especially users.lookupByEmail) don't include a full response. See the official documentation for descriptions of what these endpoints actually return in the real slack API.

auth.test:

$ curl slack.docker/api/auth.test -d'token=foo'
{"ok":true}
$ curl slack.docker/api/auth.test -d'token='
{"ok":false,"error":"not_authed"}

users.lookupByEmail:

$ curl slack.docker/api/users.lookupByEmail -d'token=foo&email=bob@example.com'
{"ok":true,"user":{"id":"UXXXXXXXX"}}
$ curl slack.docker/api/users.lookupByEmail -d'token=foo&email=bademail'
{"ok":false,"error":"users_not_found"}
$ curl slack.docker/api/users.lookupByEmail -d'token=foo'
{"ok":false,"error":"users_not_found"}

im.open:

$ curl slack.docker/api/im.open -d'token=foo&user=U12345678'
{"ok":true,"channel":{"id":"DXXXXXXXX"}}
$ curl slack.docker/api/im.open -d'token=foo&user=Ubad'
{"ok":false,"error":"user_not_found"}
$ curl slack.docker/api/im.open -d'token=foo&user=verybad'
{"ok":false,"error":"user_not_found"}
$ curl slack.docker/api/im.open -d'token=foo'
{"ok":false,"error":"user_not_found"}

chat.postMessage:

$ curl slack.docker/api/chat.postMessage -d'token=foo&text=hi&channel=bar'
{"ok":true,"channel":"bar","ts":"1563567103.077513","message":{"type":"message","subtype":"bot_message","text":"hi","ts":"1563567103.077513","username":"default-username","bot_id":"BXXXXXXXX"}}
$ curl slack.docker/api/chat.postMessage -d'token=foo&channel=DXXXXXXXX&icon_url=http%3A%2F%2Florempixel.com%2F48%2F48%2F&text=This+is+a+test+message&username=canvas&attachments=%5B%7B%22fallback%22%3A%22%22%2C%22text%22%3A%22And+this+is+an+attachment%21%22%7D%2C%7B%22fallback%22%3A%22%22%2C%22text%22%3A%22another%21%22%7D%5D'
{"ok":true,"channel":"DXXXXXXXX","ts":"1563567115.463191","message":{"type":"message","subtype":"bot_message","text":"This is a test message","ts":"1563567115.463191","username":"canvas","bot_id":"BXXXXXXXX","attachments":"[{\"fallback\":\"\",\"text\":\"And this is an attachment!\"},{\"fallback\":\"\",\"text\":\"another!\"}]"}}
$ curl slack.docker/api/chat.postMessage -d'token=foo&text=hi'
{"ok":false,"error":"channel_not_found"}
$ curl slack.docker/api/chat.postMessage -d'token=foo&channel=bar'
{"ok":false,"error":"no_text"}

About

A dockerized service that fakes a few slack API endpoints in a minimal, spartan way

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 92.4%
  • Dockerfile 7.6%