docs/content/contributing/development/integration-suites.md
{{< callout context="caution" title="Important Note" icon="outline/alert-triangle" >}} The following document assumes you've completed all the prerequisites and have bootstrapped the Authelia Development Context. {{< /callout >}}
Authelia is a single component in interaction with many others in a complete ecosystem. Consequently, testing the features is not as easy as we might think. In order to solve this problem, Authelia came up with the concept of suite which is a kind of virtual environment for Authelia and a set of tests. A suite can setup components such as NGINX, Redis or MariaDB in which Authelia can run and be tested.
This abstraction allows to prepare an environment for manual testing during development and also to craft and run integration tests efficiently.
Starting a suite called Standalone is done with the following command:
authelia-scripts suites setup Standalone
This command deploys the environment of the suite.
The development suite has a standardized setup which makes it easy to interact with.
The backend is the Authelia binary running in a docker container, the frontend is the webserver which hosts all of the web frontends for each application.
All sites are hosted on the address 192.168.240.100:8080. This list is not comprehensive and may change over time.
You can see a full list of the configured host entries by looking at
bootstrap.go. For an idea
of the applications setup in a suite take a look at the dockerEnvironment var for the given suite. The file that
contains the dockerEnvironment var for a given suite is located in the
internal/suites directory and has the name format
suite_<name>.go and does not end with _test.go. For example here is
suite_standalone.go.
The Authelia Suites run via delve and can be remotely debugged. You can connect to the debugger on the address
192.168.240.50:2345.
Example connect command:
dlv connect 192.168.240.50:2345
If a suite is already running, you can simply type the test command that will run the test related to the currently running suite:
authelia-scripts suites test
As you might have noticed, the tests are run using chromedriver and selenium. It means that the tests open an instance of Chrome that might interfere with your other activities. In order to run the tests in headless mode to avoid the interference, use the following command:
authelia-scripts suites test --headless
However, if no suite is running yet and you just want to run the tests of a specific suite like HighAvailability, you can do so with the next command:
authelia-scripts suites test HighAvailability
Creating a suite is as easy. Let's take the example of the Standalone suite:
A suite can also be much more complex like setting up a complete Kubernetes ecosystem. You can check the Kubernetes suite as example.