diff options
Diffstat (limited to 'docs/content/en/contributing/development/build-and-test.md')
| -rw-r--r-- | docs/content/en/contributing/development/build-and-test.md | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/docs/content/en/contributing/development/build-and-test.md b/docs/content/en/contributing/development/build-and-test.md new file mode 100644 index 000000000..8c0d34735 --- /dev/null +++ b/docs/content/en/contributing/development/build-and-test.md @@ -0,0 +1,104 @@ +--- +title: "Building and Testing" +description: "Building and Testing Authelia." +lead: "This section covers the build process and how to perform tests in development." +date: 2022-05-15T13:52:27+10:00 +draft: false +images: [] +menu: + contributing: + parent: "development" +weight: 240 +toc: true +aliases: + - /docs/contributing/build-and-dev.html +--- + +__Authelia__ is built a [React] frontend user portal bundled in a [Go] application which acts as a basic webserver for +the [React] assets and a dedicated API. + +The GitHub repository comes with a CLI dedicated to developers called +[authelia-scripts](reference-authelia-scripts.md) which can be setup by looking at +[Reference: authelia-scripts](reference-authelia-scripts.md). + +In order to build and contribute to __Authelia__, you need to make sure that you have looked at the +[Environment](environment.md) guide to configure your development environment. + +## Get started + +In order to ease development, __Authelia__ uses the concept of [suites] to run Authelia from source code so that your +patches are included. This is a kind of virtual environment running __Authelia__ in a complete ecosystem +(LDAP, Redis, SQL server). Note that __Authelia__ is hot-reloaded in the environment so that your patches are instantly +included. + +The next command starts the suite called *Standalone*: + +```bash +authelia-scripts suites setup Standalone +``` + +Most of the suites are using docker-compose to bootstrap the environment. Therefore, you can check the logs of all +application by running the following command on the component you want to monitor. + +```bash +docker logs authelia_authelia-backend_1 -f +``` + +Then, edit the code and observe how __Authelia__ is automatically reloaded. + +### Unit tests + +To run the unit tests, run: + +```bash +authelia-scripts unittest +``` + +### Integration tests + +Integration tests are located under the `internal/suites` directory and are based on Selenium. A suite is a combination +of environment and tests. Executing a suite therefore means starting the environment, running the tests and tearing down +the environment. Each step can be run independently: + +```bash +# List the available suites +$ authelia-scripts suites list +Standalone +DuoPush +LDAP +Traefik + +# Start the environment of Standalone suite. +$ authelia-scripts suites setup Standalone + +# Run the tests related to the currently running suite. +$ authelia-scripts suites test + +# Tear down the environment +$ authelia-scripts suites teardown Standalone +``` + +In order to test all suites (approx 30 minutes), you need to make sure there is no currently running sui te and then you +should run: + +```bash +authelia-scripts suites test +``` + +Also, you don't need to start the suite before testing it. Given you're not running any suite, just use the following +command to test the *Standalone* suite. + +```bash +authelia-scripts suites test Standalone +``` + +The suite will be spawned, tests will be run and then the suite will be torn down automatically. + +[suites]: ./integration-suites.md +[React]: https://reactjs.org/ +[go]: https://go.dev/dl/ +[Node.js]: https://nodejs.org/en/download/ +[Docker]: https://docs.docker.com/get-docker/ +[Docker Compose]: https://docs.docker.com/compose/install/ +[golangci-lint]: https://golangci-lint.run/usage/install/ +[goimports-reviser]: https://github.com/incu6us/goimports-reviser#install |
