Contributing

Development setup

With containers

The easiest way to develop using slidge is by using docker-compose. Clone the repo, run docker-compose up and you should have:

  • an XMPP server (prosody) exposed on port 5222 with a registered user <test@localhost> (password: password)

  • an XMPP component, the “super duper” gateway, a fake component that can be used to try stuff directly in an XMPP client, with code hot-reload.

  • the in-browser Movim client running on http://localhost:8888

NB: it’s possible to select which containers you want to run, you don’t have to launch everything.

You can login with the JID test@localhost and password as the password.

Without containers

To install outside of a container, use poetry.

If you don’t like containers, set up a virtual environment with poetry install and refer to XMPP server config.

Using another XMPP client

Gajim is also a good choice to test stuff during development, since it implement a lot of XEPs, especially when it comes to components. You can launch it with -p slidge -c ~/.local/share/slidge-test -v to use a clean profile and not mess up your usual gajim config, db, cache, etc.

Unlike gajim, some clients will not accept self signed certificates, a possible workaround using debian and docker is

docker cp slidge_prosody_1:/etc/prosody/certs/localhost.crt \
   /tmp/localhost.crt
sudo /tmp/localhost.crt /usr/local/share/ca-certificates
sudo update-ca-certificates

Guidelines

Tests should be written with the pytest framework. For complex tests involving mocking data through the XMPP stream, the slidge.util.test.SlidgeTest class can come in handy.

The code should pass black, mypy and ruff with the settings defined in pyproject.toml.